Vous êtes sur la page 1sur 255

Arquitectura de computadoras

Unida Temas Subtemas


d
1 Modelo de 1.1 Modelos de arquitecturas de
arquitecturas de cómputo.
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 Arquitecturas.
1.2.1.2 Tipos.
1.2.1.3 Características.
1.2.1.4 Funcionamiento.
1.2.2 Memoria.
1.2.2.1 Arquitecturas.
1.2.2.2 Tipos.
1.2.2.3 Características.
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 Características.
1.2.3.4 Funcionamiento.

2 Comunicación interna 2.1 Buses.


en la computadora. 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 Temporización.
2.3.1 Reloj de sistema.
2.3.2 Reset del sistema.
2.3.3 Estados de espera.

Interrupciones de Hardware.
Enmascarable.
No-enmascarable.
Acceso Directo a memoria.
Sistema de video.
Sistema de discos.
Otras aplicaciones.

3 Selección de 3.1 Chip Set.


componentes para CPU.
ensamble de equipos Controlador del Bus.
de cómputo. Puertos de E/S.
Controlador de Interrupciones.
Controlador de DMA.
3.1.6 Circuitos de
temporización y control.
3.1.7 Controladores de
video.
3.2 Aplicaciones.
Entrada/ Salida.
Almacenamiento.
Fuente de alimentación.
3.3 Ambientes de servicios.
Negocios.
Industria.
Comercio electrónico.

4 Microcontroladores. 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 Características especiales.
4.2 Programación.
4.2.1 Modelo de programación.
4.2.2 Conjunto de instrucciones.
4.2.3 Modos de direccionamiento.
4.2.4 Lenguaje ensamblador.
4.3 Aplicaciones.
Como sistema independiente.
4.3.2 Como subsistema de una
computadora.

Unidad 1. Modelo de arquitecturas de


cómputo.
1.1 Modelos de arquitecturas de cómputo.
2
3 Tecnologías RISC y CISC:

RISC: (Reduced Instruction Set Computer) computadora de conjunto de


instrucciones reducido

Arquitectura de computadoras que ejecuta un número limitado de


instrucciones. El concepto es que la mayoría de los programas usan
generalmente unas pocas instrucciones, y si se acelera la ejecución de
esas instrucciones básicas, se mejora el rendimiento.
La arquitectura RISC elimina una capa de carga operativa llamada
"microcódigo", que se emplea normalmente para facilitar la agregación
de nuevas y complejas instrucciones a una computadora. Las
computadoras RISC poseen un pequeño número de instrucciones
montadas en los circuitos de nivel inferior, que trabajan a máxima
velocidad.

Aunque las máquinas RISC son sólo de un 15% a un 50% más 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 máquinas CISC tienen de doscientas a
trescientas instrucciones, que están grabadas en microcódigo.

http://www.monografias.com/trabajos/refercomp/refercomp.shtml

3.1.1 Clásicas.
El Concepto de von Neumann.
Los primeros computadores se programaban en realidad recableándolos. Esto
prácticamente equivalía a reconstruir todo el computador cuando se requería
de un nuevo programa. La tarea era simplificada gracias a un panel de
contactos (muy similar al de los primeros conmutadores telefónicos que eran
atendidos por operadoras, y que hoy en día sólo llegamos a ver en viajes
películas en blanco y negro. Ver fig. 1) con el que era posible enlazar circuitos
para crear secciones dedicadas a una actividad específicas. La programación
del computador se llevaba a cabo, literalmente, reconstruyéndolo.

Fig 1.- ENIAC, primer computador electrónico y su panel de conexiones

Mientras que el recablear al computador establecía una clara distinción entre


los datos (representados por los estados o señales eléctricas que serín
mantenidas por los relevadores o a través de los bulbos que conformaban al
computador) y el programa (las conexiones que serían establecidas entre estos
componentes del hardware) la labor de "programación" requería sino del propio
creador del computador si a un verdadero experto y conocedor de electrónica,
principios de lógica digital y del problema mismo. Esto vino a cambiar con el
concepto del programa almacenado, un concepto teórico muy importante que
fue establecido por el matemático John von Neumann el 30 de junio de 1945 en
un borrador sobre el diseño de la EDVAC. A diferencia de los primeros
computadores, von Neumann proponía que tanto el programa como sus datos
fueran almacenados en la memoria del computador. Esto no solo simplificaba
la labor de programación al no tener que llevar a cabo el recableado del
computador sino que además libraba y generalizaba el diseño del hardware
para hacerlo independientede cualquier problema y enfocado al control y
ejecución del programa. Este concepto fue tan importante y decisivo que dio
lugar al concepto de la arquitectura de von Neumann, aún presente en
nuestros días.

La arquitectura de von Neumann se compone de tres elementos:

1. La Unidad Central de Procesamiento (CPU, por sus siglas en inglés), que es


considerada como el cerebro y corazón del computador. Internamente consiste de una
Unidad Aritmético-Lógica (ALU), un conjunto de registros y una Unidad de Control
(CU). La ALU es donde se realizan todas las operaciones que involucran un
procesamiento matemático (particularmente aritmético) o lógico (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 (decisión, 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 posición y que es comunmente llamado dirección. Existen
diversos tipos de memoria, identificados por el tipo de tecnología 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 volátil 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
pequeños programas destinados a la adminsitración básica 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
comunidación con dispositivos de entrada (teclados, ratones), salida (impresoras) y
entrada-salidas (discos, cintas).

Estos tres elementos están interconectados a través de un conjunto de líneas


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 término se acuñó en el documento
First Draft of a Report on the EDVAC (1945), escrito por el conocido matemático John
von Neumann, que propuso el concepto de programa almacenado. Dicho documento fue
redactado en vistas a la construcción 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
aritmético-lógica 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 instrucción desde la memoria en la dirección indicada por el


contador de programa y la guarda en el registro de instrucción.
2. Aumenta el contador de programa en la longitud de la instrucción para apuntar a
la siguiente.
3. Descodifica la instrucción mediante la unidad de control. Ésta se encarga de
coordinar el resto de componentes del ordenador para realizar una función
determinada.
4. Se ejecuta la instrucción. Ésta puede cambiar el valor del contador del programa,
permitiendo así operaciones repetitivas. El contador puede cambiar también
cuando se cumpla una cierta condición aritmética, haciendo que el ordenador
pueda 'tomar decisiones', que pueden alcanzar cualquier grado de complejidad,
mediante la aritmética y lógica anteriores.
5. Vuelve al paso 1.

Hoy en día, la mayoría de ordenadores están basados en esta arquitectura, aunque


pueden incluir otros dispositivos adicionales, (por ejemplo, para gestionar las
interrupciones de dispositivos externos como ratón, teclado, etc).

http://www.programacion.com/blogs/44_diario_de_un_profesor_de_informtica/a
rchive/409_que_es_la_arquitectura_informtica.html

Arquitectura Harvard
El término Arquitectura Harvard originalmente se refería a las arquitecturas de
computadoras que utilizaban dispositivos de almacenamiento físicamente separados
para las instrucciones y para los datos (en oposición a la Arquitectura von Neumann). El
término 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 parámetros, los datos en sí, y el lugar donde se encuentran almacenados (o
dirección). Los dos son importantes para la CPU, pues muchas instrucciones frecuentes
se traducen a algo así como "coge los datos de ésta dirección y añádelos a los datos de
ésta otra dirección" , sin saber en realidad qué es lo que contienen los datos.

En los últimos años la velocidad de las CPUs ha aumentado mucho en comparación a la


de las memorias con las que trabaja, así que se debe poner mucha atención en reducir el
número de veces que se accede a ella para mantener el rendimiento. Si, por ejemplo,
cada instrucción 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 'limitación de
memoria'.

Se puede fabricar memoria mucho más rápida, pero a costa de un precio muy alto. La
solución, por tanto, es proporcionar una pequeña cantidad de memoria muy rápida
conocida con el nombre de caché. Mientras los datos que necesita el procesador estén en
la caché, el rendimiento será mucho mayor que si la caché tiene que obtener primero los
datos de la memoria principal. La optimización de la caché es un tema muy importante
de cara al diseño de computadoras.

La arquitectura Harvard ofrece una solución particular a este problema. Las


instrucciones y los datos se almacenan en cachés 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 sólo cuando la frecuencia de lectura de instrucciones y
de datos es aproximadamente la misma. Esta arquitectura suele utilizarse en DSPs, o
procesador de señal 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 máquina pequeño y simple, de forma que la mayor parte de las instrucciones
se ejecutan en un ciclo de instrucción.

Otra aportación frecuente que aumenta el rendimiento del computador es el fomento del
paralelismo implícito, que consiste en la segmentación del procesador (pipe-line),
descomponiéndolo en etapas para poder procesar una instrucción 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 sólo instrucciones y otra, sólo datos. Ambas disponen de sus
respectivos sistemas de buses de acceso y es posible realizar operaciones de
acceso (lectura o escritura) simultáneamente en ambas memorias. Figura 1.3.
Figura 1.3. La arquitectura Harvard dispone de dos memorias independientes
para datos y para instrucciones, permitiendo accesos simultáneos.

http://www.monografias.com/trabajos12/microco/microco.shtml

ARQUITECTURA HARVARD

Arquitectura Harvard, que utiliza antememorias de instrucciones y datos separadas. Esta


técnica, denominada Arquitectura Harvard, en cierto modo contrapuesta a la idea de Von
Newmann, ya que utiliza memorias caché separadas para código y datos. Esto tiene algunas
ventajas .

ARQUITECTURA VECTORIAL

El encadenamiento aumenta la velocidad de proceso, pero aún se puede mejorar añadiendo


técnicas como el supersescalado. Esta técnica permite hacer paralelas las mismas etapas
sobre instrucciones diferentes. Un procesador superescalar puede ejecutar más de una
instrucción a la vez. Para ésto es necesario que existan varias unidades aritmético-lógicas,
de punto flotante y de control. El proceso que sigue el micro es transparente al programa,
aunque el compilador puede ayudar analizando el código y generando un flujo de
instrucciones optimizado. Veamos cómo se ejecutarían 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 próximas, ahora se ejecutan simultaneamente. Esto
hace necesario un chequeo dinámico 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 instrucción 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 instrucción va a buscar otra y tarda en ejecutarla un
tiempo T, es decir cada T segundos ejecuta una instrucción.

¿Qué sucede si dividimos en 5 unidades según 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 instrucción 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-pipeline-
vectorial.html

Arquitectura PIPE-LINE.
Ya hemos mencionado que una de las formas de lograr operaciones concurrentes en un
procesador se utilizan dos técnicas básicas: paralelismo y pipelining.
El paralelismo conseguía la concurrencia multiplicando la estructura del hardware tantas veces
como sea posible, de modo que las diferentes etapas del proceso se ejecuten
simultáneamente.
Pipelining consiste en desdoblar la función a realizarse en varias partes, asignándole al
hardware correspondiente a cada una de las partes también llamadas etapas. Así como el
agua fluye a través de una tubería (pipeline) las instrucciones o datos fluyen a través de las
etapas de un computador digital pipeline a una velocidad que es independiente de la longitud
de la tubería (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 operación sobre los mismos.
Como ejemplo en el caso de las instrucciones tendremos operaciones de búsqueda,
decodificación y ejecución.

Pipeline Físico:

Pipeline digital.
Mientras un ítem en particular fluye a través del pipeline, éste ocupa sólo 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 máxima velocidad a la cual los nuevos ítems pueden ingresar al
pipeline depende exclusivamente del tiempo máximo requerido para atravesar una etapa y no
del número de éstas.
La utilización del pipeline se traduce en una mejora del comportamiento o performance del
procesador. Si una función se lleva a cabo en T segundos en un procesador de diseño
convencional, al utilizar un procesador pipeline de N etapas esa misma función podrá realizarse
en T/N segundos. Esto a nivel teórico, ya que la mejora de performance dependerá de la
cantidad de operaciones que puedan estructurarse en pipeline y también de calidad de la
partición o subdivisión de cada una de esas operaciones. La estructuración en pipeline de un
procesador se realiza en diferentes niveles como aritmética de punto flotante, ciclo de
instrucción, procesador de entrada/salida, etc.
Esta división o partición de una función en varias subfunciones se podrá realizar si se dan las
siguientes condiciones:
1. La evaluación de la función básica es equivalente a la evaluación secuencial de las
subfunciones que la constituyen.
2. Las entradas a una subfunción provienen únicamente de las salidas de subfunciones previas
en la secuencia de evaluación.
3. Excepto el intercambio de entradas y salidas no existe otra vinculación entre las
subfunciones.
4. Debe disponerse del hardware necesario para la evaluación 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 físico (tubería), 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 lógica que realiza el procesamiento en cada etapa generalmente carece de
memoria y dado el carácter discontinuo de la aparición de los datos en las etapas se impone la
utilización 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 partición o subdivisión de una función, pero se aplican en distintos entornos.
Se dice que podrá existir pipeline cuando se den las siguientes condiciones:
1. Cada evaluación de la función básica es independiente de las anteriores.
2. Cada evaluación requieren aproximadamente la misma secuencia de subfunciones.
3. Cada subfunción 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 evaluación puede requerir una secuencia diferente de subfunciones.
3. Cada subfunción tiene un propósito 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 sincrónico o estático, por otra parte el solapamiento se lo suele llamar pipeline
asincronico o dinámico.
Un ejemplo de pipeline estático es el de una unidad destinada a realizar sumas en punto
flotante sobre datos provenientes de otra unidad. Aquí la función básica, suma en punto
flotante es relativamente simple, el resultado de una sumo depende del anterior, próximo o de
cualquier otro. Además una vez que se realizó la partición, todas las sumas siguen la misma
secuencia.
El ejemplo más simple de solapamiento o pipeline dinámico se da en un procesador donde la
entrada/salida es manejada por un procesador, los cómputos por otro y la comunicación se
realiza a través de un modulo de memoria común.
La realización de una función en este procesador alternara entre el procesador de computo y el
de entrada/salida.

En otros casos la evaluación de una función sólo requerira de un procesador. En este caso
vemos
que las distintas operaciones están menos sincronizadas que en el caso del sumador en punto
flotante. La
participación de la función básica varía dinámicamente y aún el tiempo empleado en cada
etapa es difícil de
predecir.
Otro ejemplo de operación por solapamiento es el de ejecución de instrucciones de CPU's de
alta
velocidad. En este caso el hardware podrá estar dividido en un número 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 través del pipeline.
Pipeline en maquinas SISD.
Dependencia entre instrucciones y riesgos.
En una maquina secuencial clásica todas las operaciones que involucran la ejecución de una
instrucción se completan antes que comience la próxima. En el caso de las maquinas SISD
podemos intentar realizar pipeline a nivel de ejecución de instrucciones.
Esto consistirá en solapar la ejecución de las mismas de manera que algunas de las
operaciones necesarias para las instrucciones i+1, i+2, .... puedan realizarse antes que finalice
la ejecución de la instrucción i. Puede ocurrir que las operaciones realizadas por i+1, i+2,
dependan de los resultados de i que aún 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 código 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 operación en i que modifica el
operando no se completa antes que j lo acceda, entonces j leerá el valor erróneo. 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 instrucción j desea modificar un operando que es leído por
i. Si j modifica el operando antes que i lo haya leído, este dato así leído será erróneo. 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
después 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 Análisis de los componentes.
3.2.1 CPU.
Unidad central de proceso o UCP (conocida por sus siglas en inglés, CPU),
circuito microscópico 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 electrónicos. El microprocesador de la CPU
está formado por una unidad aritmético-lógica que realiza cálculos y
comparaciones, y toma decisiones lógicas (determina si una afirmación es
cierta o falsa mediante las reglas del álgebra de Boole); por una serie de
registros donde se almacena información 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
través 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 cronométrico que produce pulsos eléctricos
para sincronizar las operaciones de la computadora. Las computadoras se
describen en función de su velocidad de reloj, que se mide en mega hertz. La
velocidad también está determinada por la arquitectura del procesador, es decir
el diseño que establece de qué manera están colocados en el chip los
componentes individuales de la CPU. Desde la perspectiva del usuario, el
punto crucial es que "más rápido" casi siempre significa "mejor".

El Procesador: El chip más importante de cualquier placa madre es el


procesador. Sin el la computadora no podría funcionar. A menudo este
componente se determina CPU, que describe a la perfección su papel dentro
del sistema. El procesador es realmente el elemento central del proceso de
procesamiento de datos.
Los procesadores se describen en términos de su tamaño de palabra, su
velocidad y la capacidad de su RAM asociada.

Tamaño de la palabra: Es el número de bits que se maneja como una unidad


en un sistema de computación en particular.

Velocidad del procesador: Se mide en diferentes unidades según el tipo de


computador:

MHz (Megahertz): para microcomputadoras. Un oscilador de cristal controla la


ejecución de instrucciones dentro del procesador. La velocidad del procesador
de una micro se mide por su frecuencia de oscilación o por el número 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 pequeñas 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 términos del número 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 están 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 básico 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 función del PC consiste en seguir la pista de la instrucción por buscar


(capturar) en el siguiente ciclo de maquina, por lo tanto contiene la dirección de la
siguiente instrucción por ejecutar. El PC es modificado dentro del ciclo de búsqueda
de la instrucción actual mediante la suma de una constante. El numero que se
agrega al PC es la longitud de una instrucción en palabras.

Por lo tanto, si una instrucción tiene una palabra de longitud se agrega 1 al PC, si
una instrucción 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 dirección es colocada en el MAR por la unidad de control y ahí
permanece hasta que se completa la transacción. 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 ejecución de


una instrucción, 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 están en ella. Como la dirección de los datos suele ser diferente de la
instrucción siguiente se necesita el MAR.
 Registro de datos: la función 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 ejecución) o datos del operando (obtenidos en el ciclo de
ejecución). Debido a su conexión 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 código de


operación de la instrucción en todo el ciclo de la maquina. El código es empleado
por la unidad de control de la CPU para generar las señales apropiadas que controla
le ejecución de la instrucción. La longitud del ER es la longitud en bit del código de
operación.

 Palabra de estado de programa (PSW): la palabra de estado o condición de


programa almacena información pertinente sobre el programa que este
ejecutándose. Por ejemplo al completarse una función de la unidad aritmética lógica
se modifica un conjunto de bit llamados códigos (o señales de condición). Estos bit
especifican si el resultado de una operación aritmética 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 según su valor.

Además el PSW contiene bit que hacen posible que la computadora responda a
solicitudes de servicio asincrónicas generadas por dispositivos de Entrada-Salida, o
condiciones de error interno. Estas señales se denominan interrupciones.

Los registros restantes que se pueden encontrar en un microprocesador son de uso


general. Estos se utilizan para almacenar información en forma temporal. También
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 información contenida en el registro puede


manipularse como datos ordinarios durante la ejecución de algunas instrucciones
los datos se utilizan en forma explícita para decidir una dirección 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 componen

1. Unidad de control: controla el funcionamiento de la CPU y por tanto de el


computador.
2. Unidad aritmético-lógica (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 comunicación 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 señales eléctricas 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 periféricos de entrada, salida y
almacenamiento, al mismo tiempo que el acceso a la memoria principal y la ALU. Por
esta razón 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 periféricas implicadas.

La UC utiliza una señal 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 podría establecerse un ritmo de operación adecuado que controle la
velocidad de trabajo de cada componente. Se comprende fácilmente que la mayor o
menor frecuencia del reloj interno, determinará la capacidad de hacer un número 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 número de señales generadas por el reloj, sino que las instrucciones complejas
necesitarán más ciclos que las instrucciones simples.

En cualquier caso, la UC se encargará de las siguientes funciones:

• Determinar si el ordenador está en fase de introducción o en fase de ejecución 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 ejecución
del programa, la UC decodifica la primera instrucción del programa y según el
tipo de instrucción pide su ejecución al dispositivo adecuado: las entradas y
salidas a los periféricos y las operaciones aritméticas y lógicas a la ALU.
• Decodificar la instrucción en curso y, según su código de operación, mandar una
señal para que actúe la Unidad Aritmético-Lógica o una Unidad de entrada o de
salida.
• Verificar la transferencia de información entre los registros y la memoria
principal y viceversa.
• Controlar qué instrucción se está ejecutando en cada momento y qué instrucción
deberá seguirle a continuación.

Unidad Aritmético-Logica.

La Unidad Aritmético-Lógica (ALU, Arithmetic-Logical Unit) es la encargada de


ejecutar las operaciones aritméticas básicas (suma, resta, multiplicación y división) y
lógicas (AND, OR, NOT). Sólo con estas operaciones básicas es procesada toda la
información 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é operación tiene


que realizar.

3.2.1.2 Tipos.
Tipos

Básicamente nos encontramos con dos tipos de diseño 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 mayoría de las instrucciones para
realizar procesos en el computador son relativamente simples por lo que se minimiza el
número de instrucciones y su complejidad a la hora de diseñar la CPU. Algunos ejemplos de
arquitectura RISC son el SPARC de Sun Microsystem’s, el microprocesador Alpha diseñado
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 rápidos procesando código complejo. Las CPU´s CISC más extendidas son las
de la familia 80x86 de Intel cuyo último micro es el Pentium II. Últimamente han aparecido
otras compañías 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. Además,
tanto Intel con MMX como AMD con su especificación 3D-Now! están apostando por
extender el conjunto de instrucciones de la CPU para que trabaje más eficientemente con
tratamiento de imágenes y aplicaciones en 3 dimensiones.

3.2.1.3 Características.
La CPU ha de cumplir dos características 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 (introducción
del programa) y en segunda fase debe ejecutar en secuencia las instrucciones
recibidas (ejecución del programa). Al realizar esta ejecución se leerán los datos
que se necesiten a través de un dispositivo de entrada de datos en el momento en
que sean requeridos, realizando las operaciones que forman el proceso hasta la
obtención de los resultados, los cuales serán enviados al usuario a través de un
dispositivo de salida.

3.2.1.4 Funcionamiento.
Funciones que realiza

La Unidad central de proceso o CPU, se puede definir como un circuito microscópico


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 electrónicos. El
microprocesador de la CPU está formado por una unidad aritmético-lógica que realiza
cálculos y comparaciones, y toma decisiones lógicas (determina si una afirmación es
cierta o falsa mediante las reglas del álgebra de Boole); por una serie de registros donde
se almacena información 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 través 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 información. En
un sentido más amplio, puede referirse también 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 leída 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 pequeños rectángulos 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 muchísimo más
rápida, 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 número , denominado dirección de memoria. A partir de una
dirección, se calcula cuál 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 conexión. Obviamente,
esta técnica (denominada multiplexado) permite emplear menos terminales de conexión
para acceder a la RAM, lo que optimiza la relación entre el tamaño del chip y la
capacidad de almacenamiento.

Realmente, la CPU no suele trabajar con bits independientes, sino más bien con
agrupaciones de los mismos en forma de palabras binarias. Esto hace que la RAM no se
presente en un solo chip, sino más 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 más rápido o más lento de nuestras aplicaciones diarias. La
memoria RAM hace unos años era muy cara, pero hoy en día su precio ha bajado
considerablemente.

Cuando alguien se pregunta cuánta memoria RAM necesitará debe sopesar con qué
programas va a trabajar normalmente. Si únicamente vamos a trabajar con aplicaciones de
texto, hojas de cálculo y similares nos bastará con unos 32 Mb de ésta (aunque esta cifra se ha
quedado bastante corta), pero si trabajamos con multimedia, fotografía, vídeo o CAD, por poner
un ejemplo, hemos de contar con la máxima cantidad de memoria RAM en nuestro equipo
(unos 128 Mb o más) para que su funcionamiento sea óptimo, ya que estos programas son
auténticos devoradores de memoria. Hoy en día 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 dirección de la palabra de
memoria que se desea leer y entonces se activa la señal de lectura (R); después de cierto
tiempo (tiempo de latencia de la memoria), en el bus de datos aparecerá el contenido de
la dirección buscada. Por otra parte, para realizar una escritura se deposita en el bus de
datos la información que se desea escribir y en el bus de direcciones la dirección donde
deseamos escribirla, entonces se activa la señal de escritura (W), pasado el tiempo de
latencia, la memoria escribirá la información en la dirección deseada. Internamente la
memoria tiene un registro de dirección (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 organización lineal o de una dimensión. En la figura cada línea de
palabra activa todas las células de memoria que corresponden a la misma palabra.

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

En el caso de una memoria RAM estática con organización lineal cada célula de
memoria toma la forma mostrada en la figura 3-4. En este esquema las primeras puertas
AND sólo son necesarias en el una de las células 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 células de diferentes palabras a
través del hilo de bit. Si esa puerta no se pusiera (o hubiera otro tipo de puerta en su
lugar, como una puerta AND) la información correspondiente a la palabra activa
entraría por los circuitos de salida de las demás células, lo que los dañaría.

Organizar 1a memoria de esta forma, tiene el inconveniente de que la complejidad del


decodificador crece exponencialmente con el número 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
organización en dos dimensiones en que los bits del registro de dirección se dividen en
dos partes y cada una de ellas va a un decodificador diferente. En este caso, las líneas
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 sólo se activa una línea, sólo se activará la palabra
correspondiente al punto de cruce de las dos líneas activadas. Fácilmente 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 célula de
memoria se complica un poco porque hay que añadir una puerta AND en cada palabra
para determinar si coinciden las líneas X e Y.
La organización de la memoria en dos dimensiones también es útil para las memorias
dinámicas 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 dirección de
mayor peso).

En la práctica, las memorias dinámicas son más lentas que las estáticas y además son de
lectura destructiva, pero resultan más 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 función, 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 pequeño y una capacidad mínima, normalmente igual a
la "palabra" del microprocesador (de 1 a 8 bytes).
· Registros intermedios: Básicamente es un paso intermedio entre dos memorias, un buffer. Tiene
capacidad muy pequeña y un tiempo de acceso también muy pequeño.
· Memoria caché: Es la más utilizada por la CPU, y la más importante entre la principal y el
microprocesador. Aunque sean de pequeña capacidad, normalmente una fracción de la memoria
principal máxima posible, está continuamente intercambiando información tanto con el procesador
como con la memoria principal, aunque normalmente se utiliza para guardar la dirección de la
memoria principal, en vez de almacenar el archivo entero, así tarda menos a pasar la información
hacia la CPU, que si lo hiciera mediante la caché.

Y es por esta razón, 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 más 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 rápido 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.). Dónde 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 además de clasificarse por su tiempo de
acceso y capacidad, también se pueden clasificar por la forma en que se modifican los datos y la
tecnología 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 electrónicamente por chips, dónde se pueden subdividir en:

· SRAM (Static RAM): Su célula está basada en un biestable.


· DRAM (Dinamic RAM): Su célula está basada en un pequeño condensador, carga del cual
representa la información almacenada. Estas necesitan circuitos adicionales de refresco, puesto
que como los condensadores son de baja capacidad, a través de la s fugas, la información se podría
perder; son de lectura destructiva.

2. Memorias ROM (Read Only Memory): Son memorias en las que sólo se puede leer. Hay de varios
tipos:

· ROM: programadas por máscara, la información es grabada enla fábrica y no tiene posible
modificación.
· 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 eléctricamente, se diferencian de las RAM en
que no son volátiles.
· Memoria FLASH, denominada así por la velocidad en la que se puede reprogramar (en tan solo
segundos), usan el borrado eléctrico.

Básicamente las ROM se basan en una matriz de diodos unidos, esta unión puede ser destruida
por una sobretensión. De esta forma, salen de la fábrica con las uniones juntas y para grabarlas se
rompen dónde se quieran poner ceros.

Aparte de los módulos de memoria aquí mencionados también existen, aunque ya en desuso, de
otros como los SIMM (Single In<-Line Memory Module) y los SIP (Single In-Line Packages), los
cuales no son nada más que chips de memoria soldados entre ellos para formar un único conjunto.

También hay modelos más nuevos como el DDR (DobleData Rate) que se usa básicamente en
equipos basados en microprocesadores AMD, ahora implementados también en equipos Intel,
aunque principalmente se usan en las tarjetas gráficas, aunque Intel ya posee la del tipo RAMBUS.
La DDR es el mismo que la SDR pero en doble sentido, de ida y de vuelta, mientras que la
segunda(SDR) solamente puede hacer servir un sentido ida o vuelta.

http://www.hardware12v.com/conocimientospc/5.php

Tipos de Memoria RAM

• DRAM (Dynamic Random Access Memory): Es la memoria de trabajo, también llamada


RAM, esta organizada en direcciones que son reemplazadas muchas veces por
segundo. Esta memoria llegó a alcanzar velocidades de 80 y 70 nanosegundos (ns),
esto es el tiempo que tarda en vaciar una dirección para poder dar entrada a la
siguiente, entre menor sea el número, mayor la velocidad, y fué utilizada hasta la época
de los equipos 386.
• FPM (Fast Page Mode): El nombre de esta memoria procede del modo en el que hace
la transferencia de datos, que también es llamado paginamiento rápido. Hasta hace
aproximadamente un año ésta memoria era la más popular, era el tipo de memoria
normal para las computadores 386, 486 y los primeros Pentium®, llegó a fabricarse en
velocidades de 60ns y la forma que presentaban era en módulos SIMM de 30 pines,
para los equipos 386 y 486 y para los equipos Pentium® era en SIMM de 72 pines.
EDO (Extended Data Output): Esta memoria fue una innovación en cuestión de
transmisión de datos pudiendo alcanzar velocidades de hasta 45ns, dejando
satisfechos a los usuarios. La transmisión se efectuaba por bloques de memoria y no
por instrucción como lo venía haciendo las memorias FPM. Se utiliza en equipos con
procesadores Pentium®, Pentium Pro® y los primeros Pentium II®, además de su alta
compatibilidad, tienen un precio bajo y es una opción viable para estos equipos. Su
presentación puede ser en SIMM ó DIMM.
• SDRAM (Synchronous DRAM): Esta memoria funciona como su nombre lo indica, se
sincroniza con el reloj del procesador obteniendo información en cada ciclo de reloj, sin
tener que esperar como en los casos anteriores. La memoria SDRAM puede aceptar
velocidades de BUS de hasta 100Mhz, lo que nos refleja una muy buena estabilidad y
alcanzar velocidades de 10ns. Se presentan en módulos DIMM, y debido a su
transferencia de 64 bits, no es nesesario instalarlo en pares.
• RDRAM (Rambus DRAM): Esta memoria tiene una transferencia de datos de 64 bits
que se pueden producir en ráfagas de 2ns, además puede alcanzar taza de
tranferencia de 533 Mhz con picos de 1.6Gb/s. Muy pronto alcanzará dominio en el
mercado, ya que se estará utilizando en equipos con el nuevo procesador Pentium 4®.
Es ideal ya que evita los cuellos de botella entre la tarjeta gráfica AGP y la memoria del
sistema, hoy en día se pueden encontrar éste tipo de memorias en las consolas
NINTENDO 64®. Será lanzada al mercado por SAMSUNG® e HITACHI®.

Tipos de Memoria ROM

• EPROM (Erasable Programmable Read-Only Memory): Se utiliza para corregir errores


de última hora en la ROM, el usuario no la puede modificar y puede ser borrada
exponiendo la ROM a una luz ultravioleta.
EEPROM (Electrically Erasable Programmable Read-Only Memory): Esta memoria
puede ser borrada y volver a ser programada por medio de una carga eléctrica, pero
sólo se puede cambiar un byte de información a la vez.
• MEMORIA FLASH: Es un tipo de memoria EEPROM que es reprogramable, su
utilización por lo regular es en BIOS de ahí su nombre.
Otros tipos de memoria RAM
• BEDO (Burst Extended Data Output): Fue diseñada para alcanzar mayores velocidades
de BUS. Trabaja de igual forma que la SDRAM, ó sea, la transferencia de datos se
hace en cada ciclo de reloj, pero esta memoria lo hace en ráfagas (burst), haciendo
que los tiempos de entrega desaparezcan casi totalmente.
• DDR SDRAM (Double Data Rate SDRAM ó SDRAM-II): Esta memoria tendrá el mismo
aspecto que un DIMM, pero la diferencia estará en que tendrá más pines, pasando de
168 pines del actual DIMM a 184 pines, además de tener sólo una muesca en la
tableta. Viendo un poco de voltaje, la DDR trabajará con tan sólo 2.5V, siendo ésta una
reducción del 30% respecto a los actuales 3.3V de la SDRAM. Trabajará a velocidades
de 200Mhz.
• VRAM: Es como la memoria RAM normal, pero la diferencia reditúa en que podrá ser
accedida al mismo tiempo por el monitor y el procesador de la tarjeta de video, se
podrá leer y escribir en ella al mismo tiempo.
• SGRAM (Synchronous Graphic RAM): Ofrece las mismas capacidades de la memoria
SDRAM pero para las tarjetas gráficas, se utiliza en las nuevas tarjetas gráficas
aceleradoras 3D.

http://www.monografias.com/trabajos14/dispositivos/dispositivos.shtml#

Jerarquía de memoria

En un ordenador hay una jerarquía de memorias atendiendo al tiempo de acceso y a la


capacidad que. normalmente son factores contrapuestos por razones económicas y en
muchos casos también físicas. Comenzando desde el procesador al exterior, es decir en
orden creciente de tiempo de acceso y capacidad, se puede establecer la siguiente
jerarquía:

Registros de procesador: Estos registros interaccionan continuamente con la CPU


(porque forman parte de ella). Los registros tienen un tiempo de acceso muy pequeño y
una capacidad mínima, normalmente igual a la palabra del procesador (1 a 8 bytes).

Registros intermedios: Constituyen un paso intermedio entre el procesador y la


memoria, tienen un tiempo de acceso muy breve y muy poca capacidad.

Memorias caché: Son memorias de pequeña capacidad. Normalmente una pequeña


fracción de la memoria principal. y pequeño tiempo de acceso. Este nivel de memoria se
coloca entre la CPU y la memoria central. Hace algunos años este nivel era exclusivo de
los ordenadores grandes pero actualmente todos los ordenadores lo incorporan. Dentro
de la memoria caché puede haber, a su vez, dos niveles denominados caché on chip,
memoria caché dentro del circuito integrado, y caché on board, memoria caché en la
placa de circuito impreso pero fuera del circuito integrado, evidentemente, por razones
físicas, la primera es mucho más rápida que la segunda. Existe también una técnica,
denominada Arquitectura Harvard, en cierto modo contrapuesta a la idea de Von
Newmann, que utiliza memorias caché separadas para código y datos. Esto tiene
algunas ventajas como se verá en este capítulo.

Memoria central o principal: En este nivel residen los programas y los datos. La CPU
lee y escribe datos en él aunque con menos frecuencia que en los niveles anteriores.
Tiene un tiempo de acceso relativamente rápido y gran capacidad.

Extensiones de memoria central: Son memorias de la misma naturaleza que la


memoria central que amplían su capacidad de forma modular. El tiempo de similar, a lo
sumo un poco mayor, al de la memoria central y su capacidad puede ser algunas veces
mayor.

Memorias de masas o auxiliares: Son memorias que residen en dispositivos externos


al ordenador, en ellas se archivan programas y datos para su uso posterior. También se
usan estas memorias para apoyo de la memoria central en caso de que ésta sea
insuficiente (memoria virtual). Estas memorias suelen tener gran capacidad pero pueden
llegar a tener un tiempo de acceso muy lento. Dentro de ellas también se pueden
establecer varios niveles de jerarquía.

Clasificación de memorias semiconductoras de acceso aleatorio

Las memorias se clasifican, por la tecnología empleada y, además según la forma en que
se puede modificar su contenido, A este respecto, las memorias se clasifican en dos
grandes grupos:

1) Memorias RAM: Son memorias en las que se puede leer y escribir, si bien su nombre
(Random access memory) no representa correctamente este hecho. Por su tecnología
pueden ser de ferritas (ya en desuso) o electrónicas, Dentro de éstas últimas hay
memorias estáticas (SRAM, static RAM), cuya célula de memoria está basada en un
biestable, y memorias dinámicas (DRAM, dinamic RAM, en las que la célula de
memoria es un pequeño condensador cuya carga representa la información almacenada.
Las memorias dinámicas necesitan circuitos adicionales de refresco ya que los
condensadores tienen muy poca capacidad y, a través de las fugas, la información puede
perderse, por otra parte, son de lectura destructiva.

2) Memorias ROM (Read 0nly Memory): Son memorias en las que sólo se puede leer.
Pueden ser:

a ROM programadas por máscara, cuya información se graba en fábrica


y no se puede modificar.
b PROM, o ROM programable una sola vez.
c EPROM (erasable PROM) o RPROM (reprogramable ROM), cuyo
contenido puede borrarse mediante rayos ultravioletas para regrabarlas.

d EAROM (electrically alterable ROM) o EEROM (electrically


erasable ROM), que son memorias que está en la frontera entre las
RAM y las ROM ya que su contenido puede regrabarse por medios
eléctricos, estas se diferencian de las RAM en que no son volátiles. En
ocasiones a este tipo de memorias también se las denomina NYRAM
(no volátil RAM).
e Memoria FLASH, denominada así por la velocidad con la que
puede reprogramarse, utilizan tecnología de borrado eléctrico al igual
que las EEPROM. Las memorias flash pueden borrarse enteras en unos
cuantos segundos, mucho más rápido que las EPROM.

Básicamente las memorias ROM se basan en una matriz de diodos cuya unión se puede
destruir aplicando sobre ella una sobretensión (usualmente comprendida ente -12.5 y
-40 v.). De fábrica la memoria sale con 1's en todas sus posiciones, para grabarla se
rompen las uniones en que se quieran poner 0's. Esta forma de realizar la grabación se
denomina técnica de los fusibles.

Los tipos más usados de memoria RAM son los siguientes:

• DRAM (Dinamic-RAM): La primera memoria hasta la aparición de los 386, era algo
lenta (70 ó 80 ns). En formato DIMM o SIMM de 30 contactos.
• Fast Page (FPM o DRAM): Algo más rápida que la anterior (70 ó 60 ns). Se presenta
en formato SIMM de 30 ó 72 contactos.
• EDO-RAM (Extended Data Output-RAM): Permite empezar a introducir nuevos datos
mientras los anteriores están saliendo (70, 60 ó 50 ns), lo que la hace algo más rápida
(un 5% más que la FPM). Vienen en SIMMs de 72 contactos, aunque también los hay
en DIMM de 168.
• SDRAM (Sincronic-RAM): Funciona sincronizadamente con la velocidad de la placa (de
50 a 66 MHz), para lo que debe ser rapidísima (de 25 a 10 ns) y se presenta en forma
de DIMMs de 168 contactos.
• PC100 (SDRAM de 100 MHz): Memoria SDRAM que funciona a 100 MHz, que utilizan
los micros más modernos.

Según los tipos de conectores que lleve la memoria, al conjunto de éstos se les denominan
módulos, y éstos a su vez se dividen en:

• SIMM (Single In-line Memory Module): Pequeña placa de circuito impreso con varios
chips de memoria integrados. Se fabrican con diferentes velocidades de acceso
capacidades (4, 8, 16, 32, 64 Mb) y son de 30 ó 72 contactos. Se montan por pares
generalmente.
• DIMM: Son más alargados, cuentan con 168 contactos y llevan dos muescas para
facilitar su correcta colocación. Pueden montarse de 1 en 1.

Tipos de memoria RAM.

La memoria RAM del ordenador suele ser la más abundante del sistema, ya que permite
la grabación y posterior recuperación de la información contenida en la misma.

Podemos dividir la memoria RAM en función del modo en el que trabaja: memoria
RAM estática (SRAM: Static RAM) y memoria RAM dinámica (DRAM: Dynamic
RAM). Ambos tipos de memoria almacenan los datos utilizando cargas eléctricas. Se
diferencian en que utilizan métodos distintos para almacenarlos.

La memoria SRAM suele estar basada en transistores de tecnología MOS


(Semiconductor de Oxido-Metal), que permiten el almacenamiento de una alta densidad
de información. En este tipo de memoria la información se almacena en una red de
osciladores biestables, es decir, osciladores que sólo permiten dos estados: cero o uno.
La principal característica de las memorias RAM estáticas radica en que una vez
introducida la información, ésta se mantiene dentro de la memoria hasta que se
desconecte la fuente de alimentación.

Las memorias DRAM, por el contrario, almacenan la información en forma de una


carga eléctrica en un condensador, el cual sólo puede almacenar una pequeña cantidad
de carga que, unido a las inevitables fugas, provoca que la información se pierda a los
pocos milisegundos. Para evitar el citado inconveniente, este tipo de memorias, que por
otro lado son las más extendidas por ser las más económicas y por ser las que mayor
densidad de información permiten, necesitan que se les refresque la información cada
cierto tiempo.

Hay que destacar que mientras la SRAM necesita un mínimo de siete transistores por
cada bit de información, la memoria DRAM solamente necesita un transistor MOSFET
y un condensador para la celda. El pequeño condensador, que se debe recargar o
refrescar miles de veces por segundo, necesita de una circuitería adicional bastante
compleja para sostener la información. Pero esta complejidad se ve compensada por lo
reducido del tamaño y del coste de cada celda de memoria.

En general, se emplea la DRAM como el sistema principal de almacenamiento de


código y de datos, ya que es la más barata de fabricar. La SRAM se utiliza cuando sólo
se necesitan pequeñas cantidades de memoria, tal como en el caso de las memorias
cachés.

La memoria caché es un tipo de memoria de acceso aleatorio especialmente rápida que


suele estar localizada, incluso, dentro del propio microprocesador. Suele ser de pequeño
tamaño y almacena la información manejada con mayor frecuencia por la CPU. Los
nuevos procesadores Pentium cuentan con dos memorias cachés independientes, una
para datos y otra para códigos.

A continuación se describen brevemente las tecnologías de DRAM existentes en la


actualidad:
• EDO (Extended Data Output). Incorpora varias innovaciones que permiten
acelerar hasta un 15% la velocidad de acceso a memoria.
• SDRAM (DRAM Síncrona). Emplea una señal de reloj, sincronizada con la
señal de reloj de la CPU, para coordinar las transferencias. Consigue superar la
velocidad de la memoria EDO en un 25%.
• DDR (Double Data Rate) o SDRAM II. Segunda generación de las memorias
SDRAM. Aprovecha tanto el estado alto como el bajo de la señal de reloj para
sincronizar las transferencias. Consigue duplicar la velocidad de transferencia
sin modificar la frecuencia del reloj (es decir, con la misma CPU).
• RDRAM (Rambus DRAM). Esta tecnología consigue multiplicar por 10 la
velocidad de transferencia de una DRAM estándar, gracias a una tecnología
exclusiva denominada RSL (Rambus Signaling Logic).
• SLDRAM (synclink). Tecnología desarrollada por un consorcio de doce
compañías. Es una extensión de la SDRAM, que permite ampliar el número de
bancos de 4 a 16.

Por supuesto, para aprovechar una de estas tecnologías, el PC debe estar preparado para
ello. Valgan como ejemplo los procesadores Pentium 4, que por medio de un acuerdo
entre Rambus e Intel, vienen preparados para emplear RDRAM.

http://aib.umh.es/1_InTroduccion_Informatica/tema2/ElPCpordentro.htm

3.2.2.3 Características.
Características de la Memoria:

• El tiempo de almacenamiento: (volátil o no).

• Velocidad de acceso en operaciones de lectura / escritura.

• Capacidad de almacenamiento.

Sin embargo: A mas velocidad mayor costeSOLUCIÓNUtilizar distintos tipos de


memoria organizada de forma jerárquica.

• Tipos:

 Memorias de solo lectura ROM: PROM y EPROM

 Memorias de lectura / escritura RAM: SDRAM y DRAM

 Memorias Magnéticas / ópticas: Discos duros, CDROM, DVD

• Jerarquía de memoria, Niveles:

NIVEL 0 Cache +VELOCIDAD

NIVEL 1 Ram/Rom ……..……………….

NIVEL 2 Magnético / óptico +CAPACIDAD


un sistema de memoria se puede clasificar en función de muy diversas características.
Entre ellas se pueden destacar las siguientes: localización de la memoria, capacidad,
método de acceso y velocidad de acceso. En el caso de la memoria RAM, también
denominada memoria principal o primaria, los valores de estas características son:

• Localización: interna, se encuentra en la placa base.


• Capacidad: hoy en día no es raro encontrar PC equipados con 128 o 256 MB de
memoria RAM.
• Método de acceso: memoria de acceso aleatorio. Además, permite el acceso para
lectura y escritura de información.
• Velocidad de acceso: actualmente se pueden encontrar sistemas de memoria
RAM capaces de realizar transferencias a frecuencias del orden de los Gbps
(gigabits por segundo).

También es importante anotar que la RAM es una memoria volátil y por tanto requiere
de alimentación eléctrica para mantener la información.

Características

Tienen matriz: Lugar físico en el que se almacena información. Un punto es el


lugar físico donde se almacena un bit. 8 puntos es una celda ⇒ Byte.

Cada celda tiene asociada una dirección, que indica la ubicación física de la
celda.

Capacidad: número de bytes que puede almacenar.

Tiempo de acceso: El tiempo que transcurre desde que el µ P solicita un dato


y la memoria se lo entrega (en ns).

CARACTERISTICAS DE LA MEMORIA

 CAPACIDAD

Cantidad de información que puede almacenar en una memoria en concreto. Hay dos tipos:
*Util: LA que puede almacenar el usuario.

*Bruta: Número total de unidades de información (bits ó bytes) que pueden ser

almacenadas en un dispositivo.

 VELOCIDAD

Indica el tiempo desde que se solicita un dato hasta que se recibe. Dos grupos:

* De acceso aleatorio: Si se tarde lo mismo independientemente de la situación del dato.

De acceso no aleatorio: Influye el tiempo de búsqueda y el de latencia.

 DURACION DE LA INFORMACION
Capacidad de retener la información a lo largo del tiempo. Tiene que ver con la permanencia ó
no del suministro de energía eléctrica.

*Volátiles: Pierden su contenido sin electricidad. Están basadas en semiconductores.

*No volátiles: Permanentes.

 COSTES

Se divide en precio/unidad de información y depende fuertemente de forma antagónica con la


velocidad de acceso.

Precio T.acceso Coste

Registros 20000 pts/MB 10 ns

RAM 5000 pts/MB 70 ns

Disco duro 100 pts/MB 10 ms

Disquetes 50 pts/MB 2 s

Cintas Streamer 10 pts/MB 20 s

Papel digital 0,01 pts/MB 2 min. Tiempo

 MODO DE ACCESO

Se refiere a como se indica la dirección de la posición de memoria a la que se quiere acceder y


como se organiza la información en el interior de la memoria.

 JERARQUIAS DE MEMORIA

Lo que interesa es utilizar memorias rápidas, pero son muy costosas, por lo que se utilizan
dispositivos caros(rápidos) para los que operan en la CPU y dispositivos baratos(lentos) pero
con mayor capacidad de almacenar información que no se procesa en ese momento
determinado.

ns REGISTRO En la CPU

decenas de ns MEMORIA CACHE

MEMORIA PRINCIPAL Placa base

de ms a seg. MEMORIA SECUNDARIA Fuera del ordenador

3.2.2.4 Funcionamiento.
Función
Formada por condensadores, que continuamente se están cargando y descargando, hacen
posible almacenar los ceros y unos (ausencia y presencia de corriente respectivamente), el
tiempo que tarden a volverse a cargar una vez se descargan recibe el nombre de tiempo de
refresco; también hay otro tiempo establecido, es el tiempo de acceso.
La memoria de trabajo (normalmente compuesta de chips RAM), hace de cajón o caja al
microprocesador dónde guarda los datos que necesita para operar con ellos, así sí la CPU
necesita algún dato, el disco duro la busca, y este lo envía a la memoria de trabajo, y éste va
a la CPU cuando se la pide. Así pues vemos que es una memoria temporal, puesto que
además, al apagar el PC se pierde toda la información que hay.

http://www.hardware12v.com/conocimientospc/5.php

Funciones que realiza

La memoria de un computador se puede definir como los circuitos que permiten


almacenar y recuperar la información. En un sentido más amplio, puede referirse
también a sistemas externos de almacenamiento, como las unidades de disco o de cinta.

Hoy en día se requiere cada vez más memoria para poder utilizar complejos programas
y para gestionar complejas redes de computadores.

3.2.3 Dispositivos de I/O.


Las unidades de E/S constan de dos elementos:

MECÁNICO: denominado “DISPOSITIVO DE E/S”.


ELECTRÓNICO: denominado “CONTROLADORES”.

Los dispositivos de E/S que se conectan al ordenador se clasifican en:


BLOQUE: La información se almacena en bloques, esos bloques son de
tamaño fijo. Donde cada bloque tiene una dirección que lo identifica. Se
puede leer o escribir en un bloque independiente de los demás.
Por ejemplo: disquete, CD, DVD, disco duro.

CARÁCTER: La información que se generan o reciben son flujos de


caracteres (no bloques). Accede a los datos en secuencia: o sea, para
acceder a determinados datos, la lectura y escritura se debe hacer
seguido de los datos anteriores.
Por ejemplo: teclado, pantalla, cinta, ratones, interfaz de
comunicación.

La línea de separación no es rígida, hay dispositivos que pueden ser


del tipo bloque (cintas Magnéticas) aunque son considerados del tipo carácter.
Con esta clasificación, un dispositivo que está fuera de ellas, el
“RELOJ”, no es orientado ni a bloque ni de carácter. Si es un dispositivo
especial, ya que lo único que hace es generar interrupciones.
Otros aspectos importantes que hacen la diferencia entre dispositivos
son:
Comportamiento: entrada, salida, almacenamiento.
Tasa de transferencia: tasa de peak de transferencia entre
dispositivos y memoria.

El siguiente cuadro hace referencia, a las grandes diferencias entre las


clases de dispositivos:
DISPOSITIVO COMPORTAMIENTO CLASIFICACION TASA KB/SEG.

TECLADO Entrada Carácter 0,01


MOUSE " " 0,02
SCANNER " " 400
VOS (Salida) Salida " 0,6
IMPRESORA " " 1,0
(Línea)
IMPRESORA " " 200
(Láser)
MODEM Entrada / salida " 2,0-8,0
RED LAN " " 500-6000
FLOPPY Almacenamiento Bloque 100
CD " " 1000
CINTA " " 2000
MAGNETICA
DISCO " " 2000-10000
MAGNETICO

Existen otros factores que hacen a su distinción:


UNIDADES DE CONTROL
REPRESENTACIÓN DE DATOS
CONDICIÓN DE ERROR
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/
GESTES02.htm

Principios del Software de E / S

La idea básica es organizar el software como una serie de capas donde [23,
Tanenbaum]:

• Las capas inferiores se encarguen de ocultar las peculiaridades del hardware a


las capas superiores.
• Las capas superiores deben presentar una interfaz agradable, limpia y regular a
los usuarios.

Objetivos del Software de E / S

Un concepto clave es la independencia del dispositivo:

• Debe ser posible escribir programas que se puedan utilizar con archivos en
distintos dispositivos, sin tener que modificar los programas para cada tipo de
dispositivo.
• El problema debe ser resuelto por el S. O.

El objetivo de lograr nombres uniformes está muy relacionado con el de independencia


del dispositivo.
Todos los archivos y dispositivos adquieren direcciones de la misma forma, es decir
mediante el nombre de su ruta de acceso.

Otro aspecto importante del software es el manejo de errores de e / s:

• Generalmente los errores deben manejarse lo más cerca posible del hardware.
• Solo si los niveles inferiores no pueden resolver el problema, se informa a los
niveles superiores.
• Generalmente la recuperación se puede hacer en un nivel inferior y de forma
transparente.

Otro aspecto clave son las transferencias síncronas (por bloques) o asíncronas
(controlada por interruptores):

• La mayoría de la e / s es asíncrona: la cpu inicia la transferencia y realiza otras


tareas hasta una interrupción.
• La programación es más fácil si la e / s es síncrona (por bloques): el programa
se suspende automáticamente hasta que los datos estén disponibles en el buffer.

El S. O. se encarga de hacer que operaciones controladas por interruptores parezcan del


tipo de bloques para el usuario.

También el S. O. debe administrar los dispositivos compartidos (ej.: discos) y los de


uso exclusivo (ej.: impresoras).

Generalmente el software de e / s se estructura en capas (ver Figura 5.3 [23,


Tanenbaum]):

• Manejadores de interrupciones.
• Directivas de dispositivos.
• Software de S. O. independiente de los dispositivos.
• Software a nivel usuario.
Software de E / S Independiente del Dispositivo

Funciones generalmente realizadas por el software independiente del dispositivo:

• Interfaz uniforme para los manejadores de dispositivos.


• Nombres de los dispositivos.
• Protección del dispositivo.
• Proporcionar un tamaño de bloque independiente del dispositivo.
• Uso de buffers.
• Asignación de espacio en los dispositivos por bloques.
• Asignación y liberación de los dispositivos de uso exclusivo.
• Informe de errores.

Las funciones básicas del software independiente del dispositivo son:

• Efectuar las funciones de e / s comunes a todos los dispositivos.


• Proporcionar una interfaz uniforme del software a nivel usuario.

El software independiente del dispositivo asocia los nombres simbólicos de los


dispositivos con el nombre adecuado.

Un nombre de dispositivo determina de manera única el nodo-i de un archivo especial:

• Este nodo-i contiene el número principal del dispositivo, que se utiliza para
localizar el manejador apropiado.
• El nodo-i contiene también el número secundario de dispositivo, que se
transfiere como parámetro al manejador para determinar la unidad por leer o
escribir.
El software independiente del dispositivo debe:

• Ocultar a los niveles superiores los diferentes tamaños de sector de los distintos
discos.
• Proporcionar un tamaño uniforme de los bloques, por ej.: considerar varios
sectores físicos como un solo bloque lógico.

Software de E / S en el Espacio del Usuario

La mayoría del software de e / s está dentro del S. O.

Una pequeña parte consta de bibliotecas ligadas entre sí con los programas del usuario.

La biblioteca estándar de e / s contiene varios procedimientos relacionados con e / s y


todos se ejecutan como parte de los programas del usuario.

Otra categoría importante de software de e / s a nivel usuario es el sistema de spooling.

El spooling es una forma de trabajar con los dispositivos de e /s de uso exclusivo en un


sistema de multiprogramación:

• El ejemplo típico lo constituye la impresora de líneas.


• Los procesos de usuario no abren el archivo correspondiente a la impresora.
• Se crea un proceso especial, llamado demonio en algunos sistemas.
• Se crea un directorio de spooling.

Para imprimir un archivo:

• Un proceso genera todo el archivo por imprimir y lo coloca en el directorio de


spooling.
• El proceso especial, único con permiso para utilizar el archivo especial de la
impresora, debe imprimir los archivos en el directorio.
• Se evita el posible problema de tener un proceso de usuario que mantenga un
recurso tomado largo tiempo.

Un esquema similar también es aplicable para la transferencia de archivos entre equipos


conectados:

• Un usuario coloca un archivo en un directorio de spooling de la red.


• Posteriormente, el proceso especial lo toma y transmite. Un ej. son los sistemas
de correo electrónico.

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO5.htm

3.2.3.1 Arquitecturas.
3.2.3.2 Tipos.
Los dispositivos de entrada salida se dividen, en general, en dos tipos: dispositivos
orientados a bloques y dispositivos orientados a caracteres. Los dispositivos orientados
a bloques tienen la propiedad de que se pueden direccionar, esto es, el programador
puede escribir o leer cualquier bloque del dispositivo realizando primero una operación
de posicionamiento sobre el dispositivo. Los dispositivos más comunes orientados a
bloques son los discos duros, la memoria, discos compactos y, posiblemente, unidades
de cinta. Por otro lado, los dispositivos orientados a caracteres son aquellos que trabajan
con secuencias de byes sin importar su longitud ni ningúna agrupación en especial. No
son dispositivos direccionables. Ejemplos de estos dispositivos son el teclado, la
pantalla o display y las impresoras.

La clasificación anterior no es perfecta, porque existen varios dispositivos que generan


entrada o salida que no pueden englobarse en esas categorías. Por ejemplo, un reloj que
genera pulsos. Sin embargo, aunque existan algunos periféricos que no se puedan
categorizar, todos están administrados por el sistema operativo por medio de una parte
electrónica - mecánica y una parte de software.

http://www.tau.org.ar/base/lara.pue.udlap.mx/sistoper/capitulo6.html

Dispositivos de entrada

Estos dispositivos permiten al usuario del ordenador introducir datos, comandos y


programas en la CPU. El dispositivo de entrada más común es un teclado similar al de
las máquinas de escribir. La información introducida con el mismo, es transformada por
el ordenador en modelos reconocibles. Otros dispositivos de entrada son los lápices
ópticos, que transmiten información gráfica desde tabletas electrónicas hasta el
ordenador; joysticks y el ratón o mouse, que convierte el movimiento físico en
movimiento dentro de una pantalla de ordenador; los escáneres luminosos, que leen
palabras o símbolos de una página impresa y los traducen a configuraciones electrónicas
que el ordenador puede manipular y almacenar; y los módulos de reconocimiento de
voz, que convierten la palabra hablada en señales digitales comprensibles para el
ordenador. También es posible utilizar los dispositivos de almacenamiento para
introducir datos en la unidad de proceso. Otros dispositivos de entrada, usados en la
industria, son los sensores.

Dispositivos de Entrada/Salida

Los dispositivos de almacenamiento externos, que pueden residir físicamente dentro de


la unidad de proceso principal del ordenador, están fuera de la placa de circuitos
principal. Estos dispositivos almacenan los datos en forma de cargas sobre un medio
magnéticamente sensible, por ejemplo una cinta de sonido o, lo que es más común,
sobre un disco revestido de una fina capa de partículas metálicas. Los dispositivos de
almacenamiento externo más frecuentes son los disquetes y los discos duros, aunque la
mayoría de los grandes sistemas informáticos utiliza bancos de unidades de
almacenamiento en cinta magnética. Los discos flexibles pueden contener, según sea el
sistema, desde varios centenares de miles de bytes hasta bastante más de un millón de
bytes de datos. Los discos duros no pueden extraerse de los receptáculos de la unidad de
disco, que contienen los dispositivos electrónicos para leer y escribir datos sobre la
superficie magnética de los discos y pueden almacenar desde varios millones de bytes
hasta algunos centenares de millones. La tecnología de CD-ROM, que emplea las
mismas técnicas láser utilizadas para crear los discos compactos (CD) de audio,
permiten capacidades de almacenamiento del orden de varios cientos de megabytes
(millones de bytes) de datos. También hay que añadir los recientemente aparecidos
DVD que permiten almacenar más de 4 Gb de información.

Dispositivos de salida

Estos dispositivos permiten al usuario ver los resultados de los cálculos o de las
manipulaciones de datos de la computadora. El dispositivo de salida más común es la
unidad de visualización, que consiste en un monitor que presenta los caracteres y
gráficos en una pantalla similar a la del televisor. Por lo general, los monitores tienen un
tubo de rayos catódicos como el de cualquier televisor, aunque los ordenadores
pequeños y portátiles utilizan hoy pantallas de cristal líquido (LCD, acrónimo de Liquid
Crystal Displays) o electroluminiscentes. Otros dispositivos de salida más comunes son
las impresoras, que permiten obtener una copia impresa de la información que reside
en los dispositivos de almacenamiento, las tarjetas de sonido y los módem. Un módem
enlaza dos ordenadores transformando las señales digitales en analógicas para que los
datos puedan transmitirse a través de las líneas telefónicas convencionales.

Dispositivos de entrada

Son los que envían información a la unidad de procesamiento, en código


binario. Dispositivos de entrada (entre otros):
Teclado: Un teclado se compone de una serie de teclas agrupadas en
funciones que podremos describir:

• Teclado alfanumérico: es un conjunto de 62 teclas entre las que se encuentran las


letras, números, símbolos ortográficos, Enter, alt...etc.
• Teclado de Función: es un conjunto de 13 teclas entre las que se encuentran el ESC,
tan utilizado en sistemas informáticos, más 12 teclas de función. Estas teclas suelen
ser configurables pero por ejemplo existe un convenio para asignar la ayuda a F1.
• Teclado Numérico: se suele encontrar a la derecha del teclado alfanumérico y consta
de los números así como de un Enter y los operadores numéricos de suma, resta,...
etc.
• Teclado Especial: son las flechas de dirección y un conjunto de 9 teclas agrupadas en
2 grupos; uno de 6 (Inicio y fin entre otras) y otro de 3 con la tecla de impresión de
pantalla entre ellas.
Recomendaciones: En este apartado es conveniente distinguir entre dos tipos
de teclado:

• De Membrana: Fueron los primeros que salieron y como su propio nombre indica
presentan una membrana entre la tecla y el circuito que hace que la pulsación sea un
poco más dura.
• Mecánico: Estos nuevos teclados presentan otro sistema que hace que la pulsación
sea menos traumática y más suave para el usuario.
• Mouse: A este periférico se le llamó así por su parecido con este roedor. Suelen estar
constituidos por una caja con una forma más o menos anatómica en la que se
encuentran dos botones que harán los famosos clicks de ratón siendo transmitidos por
el cable al puerto PS/II o al puerto de serie (COM1 normalmente). Dentro de esta caja
se encuentra una bola que sobresale de la caja a la que se pegan 4 rodillos
ortogonalmente dispuestos que serán los que definan la dirección de movimiento del
ratón. El ratón se mueve por una alfombrilla ocasionando el movimiento de la bola que
a su vez origina el movimiento de uno o varios de estos rodillos que se transforma en
señales eléctricas y producen el efecto de desplazamiento del ratón por la pantalla del
ordenador.

Existen modelos modernos en los que la transmisión se hace por infrarrojos


eliminando por tanto la necesidad de cableado. Otros presentan la bola en la
parte superior de la caja no estando por tanto en contacto con la alfombrilla y
teniendo que ser movida por los dedos del usuario aunque se origina el mismo
efecto.

• Micrófono: Periférico por el cual transmite sonidos que el ordenador capta y los
reproduce, los salva, etc. Se conecta a la tarjeta de sonido.
• Escáner: Es un dispositivo utiliza un haz luminoso para detectar los patrones de luz y
oscuridad (o los colores) de la superficie del papel, convirtiendo la imagen en señales
digitales que se pueden manipular por medio de un software de tratamiento de
imágenes o con reconocimiento óptico de caracteres. Un tipo de escáner utilizado con
frecuencia es el flatbed, que significa que el dispositivo de barrido se desplaza a lo
largo de un documento fijo. En este tipo de escáneres, como las fotocopiadoras de
oficina, los objetos se colocan boca abajo sobre una superficie lisa de cristal y son
barridos por un mecanismo que pasa por debajo de ellos. Otro tipo de escáner flatbed
utiliza un elemento de barrido instalado en una carcasa fija encima del documento.

Un tipo muy popular de escáner es el escáner de mano, también llamado hand-


held, porque el usuario sujeta el escáner con la mano y lo desplaza sobre el
documento. Estos escáneres tienen la ventaja de ser relativamente baratos,
pero resultan algo limitados porque no pueden leer documentos con una
anchura mayor a 12 o 15 centímetros.

• Lector de código de barras: dispositivo que mediante un haz de láser lee dibujos
formados por barras y espacios paralelos, que codifica información mediante anchuras
relativas de estos elementos. Los códigos de barras representan datos en una forma
legible por el ordenador, y son uno de los medios más eficientes para la captación
automática de datos.
• Cámara digital: Cámara que se conecta al ordenador y le transmite las imágenes que
capta, pudiendo ser modificada y retocada, o volverla a tomar en caso de que este mal.
Puede haber varios tipos:
• Cámara de fotos digital: Toma fotos con calidad digital, casi todas incorporan una
pantalla LCD (Liquid Cristal Display) donde se puede visualizar la imagen obtenida.
Tiene una pequeña memoria donde almacena fotos para después transmitirlas a un
ordenador.
• Cámara de video: Graba videos como si de una cámara normal se tratara, pero las
ventajas que ofrece en estar en formato digital, que es mucho mejor la imagen, tiene
una pantalla LCD por la que ves simultáneamente la imagen mientras grabas. Se
conecta al PC y este recoge el video que has grabado, para poder retocarlo
posteriormente con el software adecuado.
• Webcam: Es una cámara de pequeñas dimensiones. Sólo es la cámara, no tiene LCD.
Tiene que estar conectada al PC para poder funcionar, y esta transmite las imágenes al
ordenador. Su uso es generalmente para videoconferencias por internet, pero mediante
el software adecuado, se pueden grabar videos como una cámara normal y tomar fotos
estáticas.
• Lápiz Óptico: dispositivo señalador que permite sostener sobre la pantalla un lápiz que
está conectado al ordenador y con el que es posible seleccionar elementos u opciones
(el equivalente a un clic de mouse o ratón), bien presionando un botón en un lateral del
lápiz óptico o presionando éste contra la superficie de la pantalla.

El lápiz contiene sensores luminosos y envía una señal a la computadora cada


vez que registra una luz, por ejemplo al tocar la pantalla cuando los píxeles no
negros que se encuentran bajo la punta del lápiz son refrescados por el haz de
electrones de la pantalla. La pantalla de la computadora no se ilumina en su
totalidad al mismo tiempo, sino que el haz de electrones que ilumina los píxeles
los recorre línea por línea, todas en un espacio de 1/50 de segundo.
Detectando el momento en que el haz de electrones pasa bajo la punta del
lápiz óptico, el ordenador puede determinar la posición del lápiz en la pantalla.
El lápiz óptico no requiere una pantalla ni un recubrimiento especiales como
puede ser el caso de una pantalla táctil, pero tiene la desventaja de que
sostener el lápiz contra la pantalla durante periodos largos de tiempo llega a
cansar al usuario.

• Joystick: dispositivo señalador muy conocido, utilizado mayoritariamente para juegos


de ordenador o computadora, pero que también se emplea para otras tareas. Un
joystick o palanca de juegos tiene normalmente una base de plástico redonda o
rectangular, a la que está acoplada una palanca vertical. Los botones de control se
localizan sobre la base y algunas veces en la parte superior de la palanca, que puede
moverse en todas direcciones para controlar el movimiento de un objeto en la pantalla.
Los botones activan diversos elementos de software, generalmente produciendo un
efecto en la pantalla. Un joystick es normalmente un dispositivo señalador relativo, que
mueve un objeto en la pantalla cuando la palanca se mueve con respecto al centro y
que detiene el movimiento cuando se suelta. En aplicaciones industriales de control, el
joystick puede ser también un dispositivo señalador absoluto, en el que con cada
posición de la palanca se marca una localización específica en la pantalla.
• Tarjetas perforadas: ficha de papel manila de 80 columnas, de unos 7,5 cm (3
pulgadas) de ancho por 18 cm (7 pulgadas) de largo, en la que podían introducirse 80
columnas de datos en forma de orificios practicados por una máquina perforadora.
Estos orificios correspondían a números, letras y otros caracteres que podía leer un
ordenador equipada con lector de tarjetas perforadas.
• Pantalla Táctil: pantalla diseñada o modificada para reconocer la situación de una
presión en su superficie. Al tocar la pantalla, el usuario puede hacer una selección o
mover el cursor. El tipo de pantalla táctil más sencillo está compuesto de una red de
líneas sensibles, que determinan la situación de una presión mediante la unión de los
contactos verticales y horizontales.

Otros tipos de pantallas más precisas utilizan una superficie cargada


eléctricamente y sensores alrededor de los bordes externos de la pantalla, para
detectar la cantidad de cambio eléctrico y señalar exactamente donde se ha
realizado el contacto. Un tercer tipo fija diodos emisores de rayos infrarrojos
(LEDs, acrónimo de Light-Emitting Diodes) y sensores alrededor de los bordes
externos de la pantalla. Estos LEDs y sensores crean una red invisible de
infrarrojos en la parte delantera de la pantalla que interrumpe el usuario con
sus dedos.

Las pantallas táctiles de infrarrojos se usan a menudo en entornos sucios,


donde la suciedad podría interferir en el modo de operación de otros tipos de
pantallas táctiles. La popularidad de las pantallas táctiles entre los usuarios se
ha visto limitada porque es necesario mantener las manos en el aire para
señalar la pantalla, lo que sería demasiado incómodo en largos periodos de
tiempo. Además no ofrece gran precisión al tener que señalar ciertos
elementos en programas de alta resolución. Las pantallas táctiles, sin embargo,
son enormemente populares en aplicaciones como los puestos de información
porque ofrecen una forma de señalar que no requiere ningún hardware móvil y
porque presionar la pantalla es algo intuitivo.

Dispositivos de salida

Son los dispositivos que reciben información que es procesada por la CPU y la
reproducen para que sea perceptible para la persona.

Dispositivos de salida (entre otros):

• Monitor: es la pantalla en la que se ve la información suministrada por el ordenador. En


el caso más habitual se trata de un aparato basado en un tubo de rayos catódicos
(CRT) como el de los televisores, mientras que en los portátiles es una pantalla plana
de cristal líquido (LCD).

Puntos a tratar en un monitor:

• Resolución (RESOLUTION): Se trata del número de puntos que puede representar el


monitor por pantalla, en horizontal x vertical. Así, un monitor cuya resolución máxima
sea 1024x 768 puntos puede representar hasta 768 líneas horizontales de 1024 puntos
cada una, probablemente además de otras resoluciones inferiores, como 640x480 u
800x600.
• Refresco de Pantalla: Se puede comparar al número de fotogramas por segundo de
una película de cine, por lo que deberá ser lo mayor posible. Se mide en HZ (hertzios)
y debe estar por encima de los 60 Hz, preferiblemente 70 u 80. A partir de esta cifra, la
imagen en la pantalla es sumamente estable, sin parpadeos apreciables, con lo que la
vista sufre mucho menos.
• Tamaño de punto (DOT PITCH): Es un parámetro que mide la nitidez de la imagen,
midiendo la distancia entre dos puntos del mismo color; resulta fundamental a grandes
resoluciones. En ocasiones es diferente en vertical que en horizontal, o se trata de un
valor medio, dependiendo de la disposición particular de los puntos de color en la
pantalla, así como del tipo de rejilla empleada para dirigir los haces de electrones.

Lo mínimo, exigible en este momento es que sea de 0,25 mm, no debiéndose


admitir nada superior como no sea en monitores de gran formato para
presentaciones, donde la resolución no es tan importante como el tamaño de la
imagen.

• Controles y conexiones: Aunque se va cada vez más el uso de monitores con controles
digitales, en principio no debe ser algo determinante a la hora de elegir un monitor, si
bien se tiende a que los monitores con dichos controles sean los más avanzados de la
gama.
• Multimedia: Algunos monitores llevan acoplados altavoces, e incluso micrófono y/o
cámaras de video. Esto resulta interesante cuando se trata de un monitor de 15'' ó 17''
cuyo uso vaya a ser doméstico, para juegos o videoconferencias.
• Pantalla táctil: véase en dispositivos de entrada.
• Impresoras: Dispositivo que sirve para captar la información que le envía la CPU y
imprimirla en papel, plástico, etc. Hay varios tipos:
• Matriciales: Ofrecen mayor rapidez pero una calidad muy baja.
• Inyección: La tecnología de inyección a tinta es la que ha alcanzado un mayor éxito en
las impresoras de uso doméstico o para pequeñas empresas, gracias a su relativa
velocidad, calidad y sobre todo precio reducidos, que suele ser la décima parte de una
impresora de las mismas características. Claro está que hay razones de peso que
justifican éstas características, pero para imprimir algunas cartas, facturas y pequeños
trabajos, el rendimiento es similar y el coste muy inferior.

Hablamos de impresoras de color porque la tendencia del mercado es que la


informática en conjunto sea en color. Esta tendencia empezó hace una década
con la implantación de tarjetas gráficas y monitores en color. Todavía podemos
encontrar algunos modelos en blanco y negro pero ya no son recomendables.

Las impresoras de inyección cuentan a favor con elementos como el coste,


tanto de adquisición como de mantenimiento, la sencillez de manejo y el
tamaño. En contra tenemos su escasa velocidad y calidad frente a otras
tecnologías.

• Láser: Ofrecen rapidez y una mayor calidad que cualquiera, pero tienen un alto coste y
solo se suelen utilizar en la mediana y grande empresa. Por medio de un haz de láser
imprimen sobre el material que le pongamos las imágenes que le haya enviado la CPU.
• Altavoces: Dispositivos por los cuales se emiten sonidos procedentes de la tarjeta de
sonido. Actualmente existen bastantes ejemplares que cubren la oferta más común que
existe en el mercado. Se trata de modelos que van desde lo más sencillo (una pareja
de altavoces estéreo), hasta el más complicado sistema de Dolby Digital, con nada
menos que seis altavoces, pasando por productos intermedios de 4 o 5 altavoces. Sin
duda alguna, se nota perfectamente el esfuerzo que todos los fabricantes han realizado
para ponerse al día en esta tecnología, ya que en poco tiempo han incorporado a su
tecnología desarrollos basados en Dolby Surround o Dolby Digital.

Los más avanzados constan de 4 altavoces (2 delanteros y 2 traseros) de


reducido tamaño, otro más central para los diálogos y un último altavoz mucho
más voluminoso que se encarga de realzar las fuerzas de los graves. Hasta
aquí todo parece indicar que se trata de otros juegos de altavoces
cuadrafónicos. Pero la diferencia principal de estos sistemas es que incorporan
un descodificador Dolby Digital, mediante el cual, podremos ajustar los
volúmenes de cada juego de altavoces, así como aplicar diferentes filtros de
sonido en funcíon del tipo de sonido que estemos reproduciendo en cada
momento (música, película...etc). Para sacar partido de estos altavoces es
necesario que nuestra tarjeta de sonido cuente con una salida S/PDIF de Dolby
Digital ya que a través de ésta es desde donde los conjuntos de altavoces
toman el sonido.

La desventaja de este tipo de unidades suele ser la calidad de las mismas.


Teniendo en cuenta el precio de este tipo de conjuntos, en el que se incluye un
aparato decodificador, la calidad de los 6s altavoces no puede ser
especialmente buena, aunque para un uso casero resulta más que válida. Otra
cuestíon es la potencia. Tratándose de altavoces pequeños y baratos no
conseguirán una fildelidad de sonido muy grande a poco que la habitación
tenga un tamaño medio.

En cualquier caso los equipos basados en Dolby Digital son muy escasos por el
momento y debemos recurrir a equipos grandes si deseamos una calidad de
sonido suficiente y por tanto será inevitable gastar una cantidad de dinero
bastante importante.

• Auriculares: son dispositivos colocados en el oído para poder escuchar los sonidos que
la tarjeta de sonido envía. Presentan la ventaja de que no pueden ser escuchados por
otra persona, solo la que los utiliza.
• Fax: Dispositivo mediante el cual se imprime una copia de otro impreso, transmitida o
bien, vía teléfono, o bien desde el propio fax. Se utiliza para ello un rollo de papel que
cuando acaba la impresión se corta.

http://www.monografias.com/trabajos14/dispositivos/dispositivos.shtml#

3.2.3.3 Características.
Dispositivos de E / S

Se pueden clasificar en dos grandes categorías:

• Dispositivos de bloque.
• Dispositivos de caracter.

Las principales características de los dispositivos de bloque son:

• La información se almacena en bloques de tamaño fijo.


• Cada bloque tiene su propia dirección.
• Los tamaños más comunes de los bloques van desde los 128 bytes hasta los
1.024 bytes.
• Se puede leer o escribir en un bloque de forma independiente de los demás, en
cualquier momento.
• Un ejemplo típico de dispositivos de bloque son los discos.

Las principales características de los dispositivos de caracter son:

• La información se transfiere como un flujo de caracteres, sin sujetarse a una


estructura de bloques.
• No se pueden utilizar direcciones.
• No tienen una operación de búsqueda.
• Un ejemplos típico de dispositivos de caracter son las impresoras de línea,
terminales, interfaces de una red, ratones, etc.

Algunos dispositivos no se ajustan a este esquema de clasificación, por ejemplo los


relojes, que no tienen direcciones por medio de bloques y no generan o aceptan flujos
de caracteres.
El sistema de archivos solo trabaja con dispositivos de bloque abstractos, por lo que
encarga la parte dependiente del dispositivo a un software de menor nivel, el software
manejador del dispositivo.

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO5.htm

Controladores de Dispositivos

Las unidades de e / s generalmente constan de:

• Un componente mecánico.
• Un componente electrónico, el controlador del dispositivo o adaptador.

Muchos controladores pueden manejar más de un dispositivo.

El S. O. generalmente trabaja con el controlador y no con el dispositivo.

Los modelos más frecuentes de comunicación entre la cpu y los controladores son:

• Para la mayoría de las micro y mini computadoras:


o Modelo de bus del sistema.
• Para la mayoría de los mainframes:
o Modelo de varios buses y computadoras especializadas en e / s llamadas
canales de e / s.

La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel:

• La comunicación es mediante un flujo de bits en serie que:


o Comienza con un preámbulo.
o Sigue con una serie de bits (de un sector de disco, por ej.).
o Concluye con una suma para verificación o un código corrector de
errores.
• El preámbulo:
o Se escribe al dar formato al disco.
o Contiene el número de cilindro y sector, el tamaño de sector y otros
datos similares.

El controlador debe:

• Convertir el flujo de bits en serie en un bloque de bytes.


• Efectuar cualquier corrección de errores necesaria.
• Copiar el bloque en la memoria principal.

Cada controlador posee registros que utiliza para comunicarse con la cpu:

• Pueden ser parte del espacio normal de direcciones de la memoria: e / s


mapeada a memoria.
• Pueden utilizar un espacio de direcciones especial para la e / s, asignando a cada
controlador una parte de él.
El S. O. realiza la e / s al escribir comandos en los registros de los controladores; los
parámetros de los comandos también se cargan en los registros de los controladores.

Al aceptar el comando, la cpu puede dejar al controlador y dedicarse a otro trabajo.

Al terminar el comando, el controlador provoca una interrupción para permitir que el S.


O.:

• Obtenga el control de la cpu.


• Verifique los resultados de la operación.

La cpu obtiene los resultados y el estado del dispositivo al leer uno o más bytes de
información de los registros del controlador.

Ejemplos de controladores, sus direcciones de e / s y sus vectores de interrupción en la


PC IBM pueden verse en la Tabla 5.1 [23, Tanenbaum].

Controlador de e /
Dirección de e / s Vector de interrupciones
s
Reloj 040 - 043 8
Teclado 060 - 063 9
Disco duro 320 - 32f 13
Impresora 378 - 37f 15
Disco flexible 3f0 - 3f7 14
Rs232 primario 3f8 - 3ff 12
Rs232 secundario 2f8 - 2ff 11
Tabla 5.1: Controladores de e / s, direcciones de e / s y vector de
interrupciones.

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO5.htm

3.2.3.4 Funcionamiento.
Funciones que realiza

Vamos a señalar las funciones que debe realizar un computador para ejecutar trabajos
de entrada/salida:

 Direccionamiento o selección del


dispositivo que debe llevar a cabo la operación de E/S.
 Transferencia de los datos entre el
procesador y el dispositivo (en uno u otro sentido).
 Sincronización y coordinación de
las operaciones.
Esta última función es necesaria debido a la deferencia de velocidades entre los
dispositivos y la CPU y a la independencia que debe existir entre los periféricos y la
CPU (por ejemplo, suelen tener relojes diferentes).

Se define una transferencia elemental de información como la transmisión de una sola


unidad de información (normalmente un byte) entre el procesador y el periférico o
viceversa. Para efectuar una transferencia elemental de información son precisas las
siguientes funciones:

 Establecimiento de una
comunicación física entre el procesador y el periférico para la transmisión de la
unidad de información.
 Control de los periféricos, en que
se incluyen operaciones como prueba y modificación del estado del periférico. Para
realizar estas funciones la CPU gestionará las líneas de control necesarias.

Definiremos una operación de E/S como el conjunto de acciones necesarias para la


transferencia de un conjunto de datos (es decir, una transferencia completa de datos).
Para la realización de una operación de E/S se deben efectuar las siguientes funciones:

 Recuento de las unidades de


información transferidas (normalmente bytes) para reconocer el fin de operación.
 Sincronización de velocidad entre
la CPU y el periférico.
 Detección de errores (e incluso
corrección) mediante la utilización de los códigos necesarios (bits de paridad,
códigos de redundancia cíclica, etc.)
 Almacenamiento temporal de la
información. Es más eficiente utilizar un buffer temporal específico para las
operaciones de E/S que utilizan el área de datos del programa.
 Conversión de códigos,
conversión serie/paralelo, etc.

Dispositivos externos

Una de las funciones básicas del ordenador es comunicarse con los dispositivos
exteriores, es decir, el ordenador debe ser capaz de enviar y recibir datos desde estos
dispositivo. Sin esta función, el ordenador no sería operativo porque sus cálculos no
serían visibles desde el exterior.

Existe una gran variedad de dispositivos que pueden comunicarse con un ordenador,
desde los dispositivos clásicos (terminales, impresoras, discos, cintas, etc.) hasta
convertidores A/D y D/A para aplicaciones de medida y control de procesos, De todos
los posibles periféricos, algunos son de lectura, otros de escritura y otros de lectura y
escritura (es importante resaltar que este hecho siempre se mira desde el punto de vista
del proceso). Por otra parte, existen periféricos de almacenamiento también llamados
memorias auxiliares o masivas.

La mayoría de los periféricos están compuestos por una parte mecánica y otra parte
electrónica. Estas partes suelen separarse claramente para dar una mayor modularidad.
A la componente electrónica del periférico se le suele denominar controlador del
dispositivo o, también, adaptador del dispositivo. Si el dispositivo no tiene parte
mecánica (como, por ejemplo, la pantalla de un terminal), el controlador estará formado
por la parte digital del circuito. Frecuentemente los controladores de los dispositivos
están alojados en una placa de circuito impreso diferenciada del resto del periférico. En
este caso es bastante habitual que un mismo controlador pueda dar servicio a
dispositivos de características similares.

El principal problema planteado por los periféricos es su gran variedad que también
afecta a las velocidades de transmisión. Por tanto, el mayor inconveniente que
encontramos en los periféricos es la diferencia entre sus velocidades de transmisión y la
diferencia entre éstas y la velocidad de operación del ordenador.

http://www.mailxmail.com/curso/informatica/arquitectur
aordenadores/capitulo16.htm

Unidad 2. Comunicación interna en la


computadora.
2.6 Buses.
BUSES DEL SISTEMA

Funciones que realiza

El bus se puede definir como un conjunto de líneas conductoras


de hardware utilizadas para la transmisión de datos entre los
componentes de un sistema informático. Un bus es una ruta
que conecta diferentes partes del sistema, como el
microprocesador, la controladora de unidad de disco, la
memoria y los puertos de entrada/salida, para permitir la
transmisión de información.

En el bus se encuentran dos pistas separadas, el bus de datos y


el bus de direcciones. La CPU escribe la dirección de la posición
deseada de la memoria en el bus de direcciones accediendo a
la memoria, teniendo cada una de las líneas carácter binario. Es
decir solo pueden representar 0 o 1 y de esta manera forman
conjuntamente el número de la posición dentro de la memoria
(es decir: la dirección)

• Estructuras de interconexión

Existen dos estructuras de operaciones Entrada/Salida que


tienen que ver con los buses, son: el bus único y el bus
dedicado.
El bus dedicado trata a la memoria de manera distinta que a los
periféricos (utiliza un bus especial) al contrario que el bus único
que los considera a ambos como posiciones de memoria. Este
bus especial que utiliza el bus dedicado tiene 4 componentes
fundamentales:

o Datos: Intercambio de información entre la CPU y los


periféricos.

o Control: Lleva información referente al estado de los


periféricos (petición de interrupciones).

o Direcciones: Identifica el periférico referido.

o Sincronización: Temporiza las señales de reloj.

La mayor ventaja del bus único es su simplicidad de estructura


que le hace ser más económico, no permite que se realice a la
vez transferencia de información entre la memoria y el
procesador y entre los periféricos y el procesador.

El bus dedicado es mucho más flexible y permite transferencias


simultáneas. Su estructura es más compleja y por tanto sus
costes son mayores.

Bus es una voz inglesa que significa "transporte". Aplicada a la informática, permite
significar la idea de las transferencias internas de datos que se dan en un sistema
computacional en funcionamiento. En el bus todos los nodos reciben los datos aunque
no se dirijan a todos los nodos, los nodos a los que no van dirigidos simplemente lo
ignorán.
Este sistema se usan, a veces, incluso en otras topologias como la ethernet que, aunque
es en forma de estrella, se comporta como un bus cuando el concentrador es un hub en
vez de un switch.

En Informática, bus es el conjunto de conductores eléctricos en forma de pistas


metálicas impresas sobre la tarjeta madre del computador, por donde circulan las
señales que corresponden a los datos binarios del lenguaje máquina con que opera el
Microprocesador.

Hay tres clases de buses: Bus de Datos, Bus de Direcciones y Bus de Control. El
primero mueve los datos entre los dispositivos del hardware: de Entrada como el
Teclado, el Escáner, el Ratón, etc.; de salida como la Impresora, el Monitor o la tarjeta
de Sonido; y de Almacenamiento como el Disco Duro, el Diskette o la Memoria-Flash.

Estas transferencias que se dan a través del Bus de Datos son gobernadas por varios
dispositivos y métodos, de los cuales el Controlador PCI, "Peripheral Component
Interconnect", Interconexión de componentes Periféricos, es uno de los principales. Su
trabajo equivale, simplificando mucho el asunto, a una central de semáforos para el
tráfico en las calles de una ciudad.
El Bus de Direcciones, por otra parte, está vinculado al bloque de Control de la CPU
para tomar y colocar datos en el Sub-sistema de Memoria durante la ejecución de los
procesos de cómputo,

El Bus de Control transporta señales de estado de las operaciones efectuadas por el CPU
con las demás unidades.

Una tarjeta-madre tipo ATX tiene tantas pistas eléctricas destinadas a buses, como
anchos sean los Canales de Buses del Microprocesador de la CPU: 64 para el Bus de
datos y 32 para el Bus de Direcciones.

El "ancho de canal" explica la cantidad de bits que pueden ser transferidos


simultáneamente. Así, el Bus de datos transfiere 8 bytes a la vez.

Para el Bus de Direcciones, el "ancho de canal" explica así mismo la cantidad de


ubicaciones o Direcciones diferentes que el microprocesador puede alcanzar. Esa
cantidad de ubicaciones resulta de elevar el 2 a la 32 potencia. "2" porque son dos las
señales binarias, los bits 1 y 0; y "32 potencia" porque las 32 pistas del Bus de
Direcciones son, en un instante dado, un conjunto de 32 bits.

Así, el Canal de Direcciones del Microprocesador para una PC-ATX puede


"direccionar" más de 4 mil millones de combinaciones diferentes para el conjunto de 32
bits de su Bus.

http://es.wikipedia.org/wiki/Bus_de_datos

Concepto y Función
Es el elemento responsable de establecer una correcta interacción entre los
diferentes componentes del ordenador, es por lo tanto, el dispositivo principal de
comunicación.

En un sentido físico, su descripción es: conjunto de líneas de hardware (metálicas o


físicas), utilizadas para la transmisión de datos entre los componentes de un sistema
informático.

En cambio, en sentido figurado es: una ruta compartida, que conecta diferentes
partes del sistema.

Componentes y estructura
Un bus está compuesto por conductos (vías), éstas hacen posible la interconexión de
los diferentes componentes entre sí, y principalmente con la CPU y la memoria. En estos
conductos se destacan dos subcategorías, el bus de datos y el bus de direcciones; entre
estos existe una fuerte relación, puesto que para cada instrucción/archivo enviado por
uno de los dos buses, por el otro va información sobre esta instrucción/archivo.

En lo referente a la estructura de interconexión mediante los buses, existen de dos


tipo:

· Bus único : considera a la memoria y a los periféricos como posiciones de memoria, y


hace un símil de las operaciones E/S con las de escritura/lectura en memoria. Todas
estas equivalencias consideradas por este bus, hacen que no permita controladores DMA
(Direct Acces Memory ; de acceso directo a memoria).
· Bus dedicado : este en cambio, al considerar la memoria y periféricos como dos
componentes diferentes, permite controladores DMA (dedicando un bus especial para él).

Éste bus especial del bus dedicado, contiene cuatro subcategorías más:

· Bus de datos : transmite información entre la CPU y los periféricos.


· Bus de direcciones : identifica el dispositivo a quién va destinada la información que se
transmite por el bus de datos.
· Bus de control o de sistema : organiza y redirige la información hacia el bus pertinente
para la información que se tiene que transmitir. Es el bus encargado de hacer el
direccionamiento, quién realiza toda la función de direccionar es el controlador,
diferente para cada tipo de dispositivo.

La capacidad operativa del bus depende de: la inteligencia del sistema, la velocidad
de éste, y la "anchura" del bus (número de conductos de datos que operan en paralelo)

Aquí tenemos una tabla de los difer entes procesadores que ha habido hasta ahora y
su capacidad de bus:

Bus de direcciones Bus de datos


Procesadores
(bits) (bits)

808680186 20 16
808880188 20 8
80286 24 16
80386 SX 32 16
80386 DX
80486 SX 32 32
80486 DX

PENTIUM PENTIUM II/III/IV


AMD K5/K6/K7
32 64
AMD ATHLON/THUNDERBIRD
AMD ATHLON XP/MP

INTEL ITANIUM
32/64 64/128
AMD ATHLON64

http://www.hardware12v.com/conocimientospc/41.php

Ahora vamos a ver los distintos tipos de buses que se han ido desarrollando y los que se
emplean en la actualidad.

EL BUS XT y EL BUS ISA (AT)

Cuando en 1980 IBM fabricó su primer PC, este contaba con un bus de expansión
conocido como XT que funcionaba a la misma velocidad que los procesadores Intel
8086 y 8088 (4.77 Mhz). El ancho de banda de este bus (8 bits) con el procesador 8088
formaba un tandem perfecto, pero la ampliación del bus de datos en el 8086 a 16 bits
dejo en entredicho este tipo de bus (aparecieron los famosos cuellos de botella).
Dada la evolución de los microprocesadores el bus del PC no era ni mucho menos la
solución para una comunicación fluida con el exterior del micro. En definitiva no podía
hablarse de una autopista de datos en un PC cuando esta sólo tenía un ancho de 8 bits.
Por lo tanto con la introducción del AT apareció un nuevo bus en el mundo del PC, que
en relación con el bus de datos tenía finalmente 16 bits (ISA), pero que era compatible
con su antecesor. La única diferencia fue que el bus XT era síncrono y el nuevo AT era
asíncrono. Las viejas tarjetas de 8 bits de la época del PC pueden por tanto manejarse
con las nuevas tarjetas de 16 bits en un mismo dispositivo. De todas maneras las tarjetas
de 16 bits son considerablemente más rápidas, ya que transfieren la misma cantidad de
datos en comparación con las tarjetas de 8 bits en la mitad de tiempo (transferencia de
16 bits en lugar de transferencia de 8 bits).

No tan solo se amplió el bus de datos sino que también se amplió el bus de direcciones,
concretamente hasta 24 bits, de manera que este se podía dirigir al AT con memoria de
16 MB. Además también se aumentó la velocidad de cada una de las señales de
frecuencia, de manera que toda la circulación de bus se desarrollaba más rápidamente.
De 4.77 Mhz en el XT se pasó a 8.33 Mhz. Como consecuencia el bus forma un cuello
de botella por el cual no pueden transferirse nunca los datos entre la memoria y la CPU
lo suficientemente rápido. En los discos duros modernos por ejemplo, la relación (ratio)
de transferencia de datos ya es superior al ratio del bus.

A las tarjetas de ampliación se les ha asignado incluso un freno de seguridad,


concretamente en forma de una señal de estado de espera (wait state), que deja todavía
mas tiempo a las tarjetas lentas para depositar los datos deseados en la CPU.

Especialmente por este motivo el bus AT encontró sucesores de más rendimiento en


Micro Channel y en el Bus EISA, que sin embargo, debido a otros motivos, no han
tenido éxito.

BUS MICRO CHANNEL (MCA)

Vistas las limitaciones que tenía el diseño del bus ISA en IBM se trabajó en un nueva
tecnología de bus que comercializó con su gama de ordenadores PS/2. El diseño MCA
(Micro Channel Arquitecture) permitía una ruta de datos de 32 bits, más ancha, y una
velocidad de reloj ligeramente más elevada de 10 Mhz, con una velocidad de
transferencia máxima de 20 Mbps frente a los 8 Mbps del bus ISA.

Pero lo que es más importante el novedoso diseño de bus de IBM incluyó un circuito de
control especial a cargo del bus, que le permitía operar independientemente de la
velocidad e incluso del tipo del microprocesador del sistema.

Bajo MCA, la CPU no es más que uno de los posibles dispositivos dominantes del bus a
los que se puede acceder para gestionar transferencias. La circuitería de control, llamada
CAP (punto de decisión central), se enlaza con un proceso denominado control del bus
para determinar y responder a las prioridades de cada uno de los dispositivos que
dominan el bus.

Para permitir la conexión de más dispositivos, el bus MCA especifica interrupciones


sensibles al nivel, que resultan más fiables que el sistema de interrupciones del bus ISA.
De esta forma es posible compartir interrupciones. Pero además se impusieron
estándares de rendimiento superiores en las tarjetas de expansión.

Es cierto que el progreso conlleva un precio: La arquitectura de IBM era totalmente


incompatible con las tarjetas de expansión que se incluyen en el bus ISA. Esto viene
derivado de que los conectores de las tarjetas de expansión MCA eran más pequeños
que las de los buses ISA. De esto se pueden sacar dos conclusiones. Por un lado el coste
de estas tarjetas era menor y por otro ofrecía un mayor espacio interior en las pequeñas
cajas de sobremesa.

Las señales del bus estaban reorganizadas de forma que se introducía una señal de tierra
cada 4 conectores. De esta forma se ayudaba a reducir las interferencias.

EISA (Extended ISA)

El principal rival del bus MCA fue el bus EISA, también basado en la idea de controlar
el bus desde el microprocesador y ensanchar la ruta de datos hasta 32 bits. Sin embargo
EISA mantuvo compatibilidad con las tarjetas de expansión ISA ya existentes lo cual le
obligo a funcionar a una velocidad de 8 Mhz (exactamente 8.33). Esta limitación fue a
la postre la que adjudico el papel de estándar a esta arquitectura, ya que los usuarios no
veían factible cambiar sus antiguas tarjetas ISA por otras nuevas que en realidad no
podían aprovechar al 100%.

Su mayor ventaja con respecto al bus MCA es que EISA era un sistema abierto, ya que
fue desarrollado por la mayoría de fabricantes de ordenadores compatibles PC que no
aceptaron el monopolio que intentó ejercer IBM. Estos fabricantes fueron: AST,
Compaq, Epson, Hewlett Packard, NEC, Olivetti, Tandy, Wyse y Zenith.

Esta arquitectura de bus permite multiproceso, es decir, integrar en el sistema varios


buses dentro del sistema, cada uno con su procesador. Si bien esta característica no es
utilizada más que por sistemas operativos como UNIX o Windows NT.

En una máquina EISA, puede haber al mismo tiempo hasta 6 buses principales con
diferentes procesadores centrales y con sus correspondientes tarjetas auxiliares.

En este bus hay un chip que se encarga de controlar el tráfico de datos señalando
prioridades para cada posible punto de colisión o bloqueo mediante las reglas de control
de la especificación EISA. Este chip recibe el nombre de Chip del Sistema Periférico
Integrado (ISP). Este chip actúa en la CPU como un controlador del tráfico de datos.

El motivo para que ni MCA ni EISA hayan sustituido por completo a ISA es muy
sencillo: Estas alternativas aumentaban el coste del PC (incluso más del 50%) y no
ofrecían ninguna mejora evidente en el rendimiento del sistema. Es más, en el momento
en que se presentaron estos buses (1987-1988) esta superioridad en el rendimiento no
resultaba excesivamente necesaria: Muy pocos dispositivos llegaban a los límites del
rendimiento del bus ISA ordinario.

Cuantas más líneas hayan disponibles, mayor es la dirección máxima y mayor es la


memoria a la cual puede dirigirse de esta forma. En el bus de direcciones original
habían ya 20 direcciones, ya que con 20 bits se puede dirigir a una memoria de 1 Mb y
esto era exactamente lo que correspondía a la CPU.

Esto que en le teoría parece tan fácil es bastante mas complicado en la práctica, ya que
aparte de los bus de datos y de direcciones existen también casi dos docenas más de
líneas de señal en la comunicación entre la CPU y la memoria, a las cuales también se
acude. Todas las tarjetas del bus escuchan, y se tendrá que encontrar en primer lugar
una tarjeta que mediante el envío de una señal adecuada indique a la CPU que es
responsable de la dirección que se ha introducido. Las demás tarjetas se despreocupan
del resto de la comunicación y quedan a la espera del próximo ciclo de transporte de
datos que quizás les incumba a ellas.

Este mismo concepto es también la razón por la cual al utilizar tarjetas de ampliación en
un PC surgen problemas una y otra vez, si hay dos tarjetas que reclaman para ellas el
mismo campo de dirección o campos de dirección que se solapan entre ellos.

Los datos en si no se mandan al bus de direcciones sino al bus de datos. El bus XT tenía
solo 8 bits con lo cual sólo podía transportar 1 byte a la vez. Si la CPU quería depositar
el contenido de un registro de 16 bits o por valor de 16 bits, tenía que desdoblarlos en
dos bytes y efectuar la transferencia de datos uno detrás de otro.

De todas maneras para los fabricantes de tarjetas de ampliación, cuyos productos deben
atenderse a este protocolo, es de una importancia básica la regulación del tiempo de las
señales del bus, para poder trabajar de forma inmejorable con el PC. Pero precisamente
este protocolo no ha sido nunca publicado por lBM con lo que se obliga a los
fabricantes a medir las señales con la ayuda de tarjetas ya existentes e imitarlas. Por lo
tanto no es de extrañar que se pusieran en juego tolerancias que dejaron algunas tarjetas
totalmente eliminadas.

http://www.mailxmail.com/curso/informatica/arquitectu
raordenadores/capitulo7.htm

Estructuras de interconexión

Existen dos organizaciones físicas de operaciones E/S que tienen que ver con los buses
que son:
- Bus único
- Bus dedicado

La primera gran diferencia entre estas dos tipos de estructuras es que el bus único no
permite un controlador DMA (todo se controla desde la CPU), mientras que el bus
dedicado si que soporta este controlador.

El bus dedicado trata a la memoria de manera distinta que a los periféricos (utiliza un
bus especial) al contrario que el bus único que los considera a ambos como posiciones
de memoria (incluso equipara las operaciones E/S con las de lectura/escritura en
memoria). Este bus especial que utiliza el bus dedicado tiene 4 componentes
fundamentales:
- Datos: Intercambio de información entre la CPU y los periféricos.
- Control: Lleva información referente al estado de los periféricos (petición de
interrupciones).
- Direcciones: Identifica el periférico referido.
- Sincronización: Temporiza las señales de reloj.

La mayor ventaja del bus único es su simplicidad de estructura que le hace ser más
económico, pero no permite que se realice a la vez transferencia de información entre la
memoria y el procesador y entre los periféricos y el procesador.

Por otro lado el bus dedicado es mucho más flexible y permite transferencias
simultáneas. Por contra su estructura es más compleja y por tanto sus costes son
mayores.

http://www.mailxmail.com/curso/informatica/arquitectu
raordenadores/capitulo8.htm

PCI (Peripheral Component Interconnect)

Visto lo anterior, se puede ver que el bus del futuro es claramente el PCI de Intel. PCI
significa: interconexión de los componentes periféricos (Peripheral Component
Interconnect) y presenta un moderno bus que no sólo está meditado para no tener la
relación del bus ISA en relación a la frecuencia de reloj o su capacidad sino que también
la sincronización con las tarjetas de ampliación en relación a sus direcciones de puerto,
canales DMA e interrupciones se ha automatizado finalmente de tal manera que el
usuario no deberá preocuparse más por ello.

El bus PCI es independiente de la CPU, ya que entre la CPU y el bus PCI se instalará
siempre un controlador de bus PCI, lo que facilita en gran medida el trabajo de los
diseñadores de placas. Por ello también será posible instalarlo en sistemas que no estén
basados en el procesador Intel si no que pueden usar otros, como por ejemplo, un
procesador Alpha de DEC. También los procesadores PowerMacintosh de Apple se
suministran en la actualidad con bus PCI.

Las tarjetas de expansión PCI trabajan eficientemente en todos los sistemas y pueden
ser intercambiadas de la manera que se desee. Solamente los controladores de
dispositivo deben naturalmente ser ajustados al sistema anfitrión (host) es decir a su
correspondiente CPU.

Como vemos el bus PCI no depende del reloj de la CPU, porque está separado de ella
por el controlador del bus. Si se instalara una CPU más rápida en su ordenador no
debería preocuparse porque las tarjetas de expansión instaladas no pudieran soportar las
frecuencias de reloj superiores, pues con la separación del bus PCI de la CPU éstas no
son influidas por esas frecuencias de reloj. Así se ha evitado desde el primer momento
este problema y defecto del bus VL.

El bus PCI emplea un conector estilo Micro Channel de 124 pines (188 en caso de una
implementación de 64 bits) pero únicamente 47 de estas conexiones se emplean en una
tarjeta de expansión (49 en caso de que se trate de un adaptador bus-master); la
diferencia se debe a la incorporación de una línea de alimentación y otra de tierra. Cada
una de las señales activas del bus PCI está bien junto o frente a una señal de
alimentación o de tierra, una técnica que minimiza la radiación.

El límite práctico en la cantidad de conectores para buses PCI es de tres; como ocurre
con el VL, más conectores aumentarían la capacitancia del bus y las operaciones a
máxima velocidad resultarían menos fiables.

A pesar de presentar un rendimiento similar al de un bus local conectado directamente,


en realidad PCI no es más que la eliminación de un paso en el microprocesador. En
lugar de disponer de su propio reloj, un bus PCI se adapta al empleado por el
microprocesador y su circuitería, por tanto los componentes del PCI están sincronizados
con el procesador. El actual estándar PCI autoriza frecuencias de reloj que oscilan entre
20 y 33 Mhz.

A pesar que de que las tarjetas ISA no pueden ser instaladas en una ranura PCI, no
debería renunciarse a la posibilidad de inserción de una tarjeta ISA. Así pues, a menudo
se puede encontrar en un equipo con bus PCI la interfaz «puente» llamada «PCI-To-
ISA-Bridge». Se trata de un chip que se conecta entre los distintos slots ISA y el
controlador del bus PCI. Su tarea consiste en transponer las señales provenientes del bus
PCI al bus ISA. De esta manera pueden seguir siendo utilizadas las tarjetas ISA al
amparo del bus PCI.

A pesar de que el bus PCI es el presente, sigue habiendo buses y tarjetas de expansión
ISA ya que no todas las tarjetas de expansión requieren las ratios de transferencia que
permite el bus PCI. Sin embargo las tarjetas gráficas, tarjetas SCSI y tarjetas de red se
han decantando cada vez más fuertemente hacia el bus PCI. La ventaja de la velocidad
de este sistema de bus es que este hardware puede participar del continuo incremento de
velocidad de los procesadores.

http://www.mailxmail.com/curso/informatica/arquitectu
raordenadores/capitulo12.htm

SCSI (Small Computer System Interface)


Además de todas las arquitecturas mencionadas anteriormente, también hay que
mencionar a SCSI. Esta tecnología tiene su origen a principios de los años 80 cuando un
fabricante de discos desarrollo su propia interface de E/S denominado SASI (Shugart
Asociates System Interface) que debido a su gran éxito comercial fue presentado y
aprobado por ANSI en 1986.

SCSI no se conecta directamente al microprocesador sino que utiliza de puente uno de


los buses anteriormente nombrados.

Podríamos definir SCSI como un subsistema de E/S inteligente, completa y


bidireccional. Un solo adaptador host SCSI puede controlar hasta 7 dispositivos
inteligentes SCSI conectados a él.

Una ventaja del bus SCSI frente a otros interfaces es que los dispositivos del bus se
direccionan lógicamente en vez de físicamente. Esto sirve para 2 propósitos:

1.- Elimina cualquier limitación que el PC-Bios imponga a las unidades de disco.

2.- El direccionamiento lógico elimina la sobrecarga que el host podría tener en manejar
los aspectos físicos del dispositivo como la tabla de pistas dañadas. El controlador SCSI
lo maneja.

Es un bus que a diferencia de otros buses como el ESDI puede tener hasta 8
dispositivos diferentes conectados al bus (incluido el controlador). Aunque
potencialmente varios dispositivos pueden compartir un mismo adaptador SCSI, sólo 2
dispositivos SCSI pueden comunicarse sobre el bus al mismo tiempo.

El bus SCSI puede configurarse de tres maneras diferenciadas que le dan gran
versatilidad a este bus:

1.- Único iniciador/Único objetivo: Es la configuración más común donde el iniciador


es un adaptador a una ranura de un PC y el objetivo es el controlador del disco duro.
Esta es una configuración fácil de implementar pero no aprovecha las capacidades del
bus SCSI, excepto para controlar varios discos duros.

2.- Único iniciador/Múltiple objetivo: Menos común y raramente implementado. Esta


configuración es muy parecida a la anterior excepto para diferentes tipos de dispositivos
E/S que se puedan gestionar por el mismo adaptador. Por ejemplo un disco duro y un
reproductor de CD-ROM.

3.- Múltiple iniciador/Múltiple objetivo: Es mucho menos común que las anteriores
pero así es como se utilizan a fondo las capacidades del bus.

Dentro de la tecnología SCSI hay 2 generaciones y una tercera que está a punto de
generalizarse. La primera generación permitía un ancho de banda de 8 bits y unos ratios
de transferencia de hasta 5 MBps. El mayor problema de esta especificación fue que
para que un producto se denominara SCSI solo debía cumplir 4 códigos de operación de
los 64 disponibles por lo que proliferaron en el mercado gran cantidad de dispositivos
SCSI no compatibles entre sí.
Esto cambió con la especificación 2.0 ya que exigía un mínimo de 12 códigos, por lo
que aumentaba la compatibilidad entre dispositivos. Otro punto a favor de SCSI 2.0 es
el aumento del ancho de banda de 8 a 16 y 32 bits. Esto se consigue gracias a las
implementaciones wide (ancho) y fast (rápido). Combinando estas dos metodologías se
llega a conseguir una transferencia máxima de 40 Mbps con 32 bits de ancho (20 Mbps
con un ancho de banda de 16 bits).

El protocolo SCSI 3.0 no establecerá nuevas prestaciones de los protocolos, pero si


refinará el funcionamiento de SCSI.

http://www.mailxmail.com/curso/informatica/arquitectu
raordenadores/capitulo13.htm

AGP (Accelerated Graphics Port)

La tecnología AGP, creada por Intel, tiene como objetivo fundamental el nacimiento de
un nuevo tipo de PC, en el que se preste especial atención a dos facetas: gráficos y
conectividad.

La especificación AGP se basa en la especificación PCI 2.1 de 66 Mhz (aunque ésta


apenas se usa, dado que la mayoría de las tarjetas gráficas disponibles tan sólo son
capaces de utilizar la velocidad de bus de 33 Mhz), y añade tres características
fundamentales para incrementar su rendimiento: operaciones de lectura/escritura en
memoria con pipeline, demultiplexado de datos y direcciones en el propio bus, e
incremento de la velocidad hasta los 100 Mhz (lo que supondría unos ratios de
transferencia de unos 800 Mbytes por segundo, superiores en más de 4 veces a los
alcanzados por PCI).

Pero el bus AGP es también un bus exclusivamente dedicado al apartado gráfico, tal y
como se deriva de su propio nombre, Accelerated Graphics Port o bus acelerado para
gráficos. Esto tiene como consecuencia inmediata que no se vea obligado a compartir el
ancho de banda con otros componentes, como sucede en el caso del PCI.

Otra característica interesante es que la arquitectura AGP posibilita la compartición de


la memoria principal por parte de la aceleradora gráfica, mediante un modelo que Intel
denomina DIME (Direct Memory Execute, o ejecución directa a memoria) y que
posibilitará mejores texturas en los futuros juegos y aplicaciones 3D, al almacenar éstas
en la RAM del sistema y transferirlas tan pronto como se necesiten.

http://www.mailxmail.com/curso/informatica/arquitectur
aordenadores/capitulo14.htm

Los buses.
Son el conjunto de líneas o caminos por los cuales los datos fluyen internamente
de una parte a otra de la computadora (CPU, disco duro, memoria). Puede decirse
que en las computadoras modernas hay muchos buses, por ejemplo entre los
puertos IDE y los drives, entre una placa Aceleradora de video y la memoria Ram,
entre el modem y el Chipset, etc. Pero Los buses básicos son: a) el bus interno
(bus de datos), o sea el que comunica los diferentes componentes con la CPU y la
memoria RAM, formado por los hilos conductores que vemos en el circuito impreso
de la placa, y el bus de direcciones.

b) El bus de expansión constituido por el conjunto de slots o ranuras en donde se


insertan placas independientes de sonido, video, modem, etc. Este según ha
aumentado su capacidad de transmisión ha cambiado de nomenclatura: ISA
(Industry Standard Architecture), 1981, solo trabaja con un ancho de banda de 16
bits, VESA (Video Electronics Standard Association), 1992, trabaja a 32 bits, pero
cayo rápidamente en desuso al aparecer el actual PCI (Peripheral Component
Interconnect), 1992, cuyo ancho de banda es de 64 bits.

De la velocidad de transmisión del bus interno depende la selección de algunos


componentes como el Microprocesador y la memoria Ram en una motherboard,
entendiéndose por ejemplo que una PLACA BASE cuya velocidad de transferencia
es de 100 MHz, no admite procesadores Pentium IV (que necesitan buses con
mayor velocidad de transmisión) ni módulos de memoria que trabajan
exclusivamente en buses con velocidad de 133 MHz.

Por otra parte es importante resaltar la diferencia de conceptos que hay entre:
numero de líneas de un bus (16, 32, 64 bits) y la frecuencia de trabajo del bus. La
multiplicación de estos dos factores representa al ancho de banda y se mide en
Mb/s.

Todo bus local esta compuesto de dos áreas: datos y direcciones. El bus de datos
lo forman las líneas dedicadas a la transmisión de señales u ordenes, el bus de
direcciones lo constituyen las líneas que dan a conocer las posiciones de ubicación
de los datos en la memoria (registros).

Buses actuales.

En conjunción con la Informática, la electrónica innova permanentemente para


crear nuevas y mas eficientes rutas de comunicación entre los PC y sus
periféricos. Muchas de estas vías pueden realmente llamarse buses entre tanto
que otras solo deben clasificarse como puertos. A continuación una descripción de
las principales tecnologías empezando por las de mayor relevancia..

BUS PCI. Es el bus local estándar en las motherboards actuales. El nombre


abreviado proviene de Peripheral Component Interconnect y fue dado a conocer
por Intel en 1993. PCI es un bus local compuesto por líneas físicas que permiten
comunicar el Microprocesador con otro componente. Los puntos de conexión de los
componentes son los SLOTS o puertos de expansión que se observan en las
motherboards, como bloques de plástico blanco.

Detalles técnicos de PCI. 1. Es un bus de 64 bits (64 líneas de transmisión). Se lo


utiliza principalmente como un bus de 32 bits. 2. Trabaja con frecuencias variadas:
33 MHz, 66 Mhz, 100 MHz, 400 Mhz, etc., lo que permite alcanzar un ancho de
banda de gran capacidad. 3. 32 lineas son utilizadas para transmitir datos y
direcciones en forma multiplexada (multiplexado= utilización de una misma línea
para transmitir datos y direcciones). Las demás líneas sirven para interpretar y
validar las señales correspondientes a datos y direcciones. 4. A diferencia de su
antecesor el bus AT (ISA), PCI utiliza circuitos PCI Bridge para comunicar al
Microprocesador con otros componentes, lo que permite que los dispositivos
acoplados en el bus PCI puedan trabajar con diferentes tipos de Microprocesadores.
5. El número de dispositivos que pueden conectarse al bus PCI está limitado a 32.
No obstante, la norma PCI admite la jerarquización de buses incrementándose el
número de dispositivos que pueden conectarse. El software de configuración debe
ser capaz de realizar transacciones de configuración en todos los dispositivos PCI
que residen más allá del puente PCI/host (bridge). 6. Control de error en la
transmisión, mediante el uso de bits de control de paridad (uso de señales de
verificación de envio - recepción entre los dispositivos).

BUS AGP. Accelerated Graphics Port. Se trata de un bus independiente del bus
general constituido por un slot específico para tarjetas gráficas. Es un bus de 32
bits que trabaja a 66 MHz, pero tiene la posibilidad de doblar o cuadruplicar las
características básicas, hasta una tasa de transferencia máxima de 1064 Mbits por
segundo. Puede decirse que no es un bus en el sentido estricto de la palabra sino
más bien una extensión de la norma PCI, razón por la cual en algunos aspectos es
idéntico a aquel. Actualmente es un puerto de uso exclusivo para dispositivos
gráficos de alta velocidad. Ver aquí la foto de su ubicación física en una
motherboard.

BUS USB. 1996. Universal serial bus. Es un nuevo estándar para comunicaciones
serie que resuelve muchos de los inconvenientes de los antiguos puertos COM
( dificultades en la adaptación a un puerto COM libre, conflicto de los vectores de
interrupción IRQ, etc.). Presenta muchas ventajas frente a sistemas tradicionales:
velocidades de trabajo hasta de 480 Mb/s (USB 2.0), incluye alimentación eléctrica
para dispositivos con bajo consumo de energía ( alrededor de los 5 voltios),
permite conectar hasta 127 dispositivos, todos ellos compartiendo el mismo canal;
permite realizar conexión y desconexión en "caliente" (sin apagar el equipo),
permite utilizar cables de hasta 5m de longitud para dispositivos de alta
velocidad. Actualmente todos los PCs disponen de por lo menos un par de salidas
USB y muchos dispositivos, como impresoras, ratones, escáneres, webcams,
equipos de fotografía digital, etc. que antes se conectaban a través de puertos
COM o LPT lo hacen ahora mediante USB. Mas detalles en el apartado Puertos.

BUS E-IDE. Enhanced Integrated Drive Electronics. Debe ser considerado mas
como una Interface. Se trata de una tecnología electrónica que basa el control de
la comunicación en una placa integrada en el propio dispositivo. El bus lo
constituye un cable plano de 40 u 80 hilos conductores que comunica el conector
del dispositivo (disco duro, CD-ROM o grabador de CD) con el conector o puerto
IDE de la motherboard. Las placas base actuales se fabrican con dos puertos: IDE
0 e IDE1.

Teoricamente cada puerto IDE representa un canal. Cada canal permite la


conexión de hasta 2 drives (discos duros o unidades opticas). Detalles de esta
conexion se amplian bajo el tema 'Interfaces del Disco duro'.

BUS SCSI. 1980, 1986. Small Computer System Interface. Es la interface de mayor
capacidad, velocidad y estabilidad para conectar dispositivos directamente a una
motherboard. En las computadoras desktop, SCSI es una interface pues se fabrica
sobre una placa que se inserta en un slot de la motherboard (actualmente en slots
PCI). Esta independencia física del microprocesador tiene la gran ventaja de hacer
que los dispositivos se direccionen lógicamente en contraposición al
direccionamiento físico que utiliza IDE. La consecuencia inmediata es que los
dispositivos quedan liberados de las imposiciones que el Bios pudiera imponer pues
SCSI se encarga de hacer el trabajo completo de comunicación y configuración.
Esta capacidad lo ha hecho el preferido en equipos en los que se requiere
estabilidad y alta velocidad de transmisión, como los servidores.

La ultima versión de SCSI es la Wide Ultra2 SCSI, que usa un bus de 16 bits, un
ancho de banda de 80MB/s y trabaja con cables planos de 68 hilos.

La interface al trabajar como un dispositivo I/O (de entrada y salida) permite en


teoría conectar 8 dispositivos simultáneamente, en una conexión en la que cada
dispositivo se une al siguiente y en donde cada dispositivo tiene su propio ID ante
el host. El mayor uso de SCSI se da en la conexión de discos duros, tape drives,
unidades ópticas, escáneres e impresoras. Los dispositivos externos que trabajan
con interface SCSI tienen dos puertos: uno para la entrada del cable y otro para
conectarse al siguiente dispositivo. El ultimo elemento debe cerrar la cadena
mediante un circuito 'terminador' para que la conexión funcione.

http://www.servicioalpc.com/ensamble5.htm

2.6.1 Bus Local.


Bus local. Bus entre la CPU, la memoria y dispositivos periféricos que corre a la
velocidad de la CPU. En un computador personal, el bus VL y el PCI suministran
una transferencia de datos más rápida que el bus ISA tradicional. A partir del 386,
cuando las velocidades de la CPU comenzaron a acelerarse enormemente, los
computadores personales vienen con dos buses. La CPU tiene acceso a sus chips de
memoria a través de una vía de acceso interna de 32 bits (63 bits con el Pentium),
conocida como bus local, a la velocidad más alta del reloj de la CPU (25MHz,
33MHz, etc.). Sin embargo, tradicionalmente ha tenido acceso a sus dispositivos
periféricos en forma más lenta, en un bus ISA de 16 bits sólo a 8MHz. Incluso en el
bus EISA de 32 bits inherentemente más rápido corre en forma lenta para acomodar
las tarjetas ISA, que se conectan a éste. Los estándares de bus VL de VESA y de bus
local PCI de Intel se crearon para aprovechar las velocidades más altas de la CPU.
El PC corre a 33MHz; el bus VL hasta a 40MHz; esperándose más altas
velocidades. Las tarjetas base ISA y EISA se construyen ahora con ranuras
adicionales para el bus VL o las tarjetas PCI, o ambos.

http://www.glosarium.com/term/893,14,xhtml

LOCAL BUS

Teniendo en cuenta las mencionadas limitaciones del bus AT y la infalibilidad de los


buses EISA y MCA para asentarse en el mercado, en estos años se han ideado otros
conceptos de bus. Se inició con el llamado Vesa Local Bus (VL-Bus), que fue
concebido y propagado independientemente por el comité VESA, que se propuso el
definir estándares en el ámbito de las tarjetas gráficas y así por primera vez y realmente
tuviera poco que ver con el diseño del bus del PC. Fueron y son todavía las tarjetas
gráficas quienes sufren la menor velocidad del bus AT. Por eso surgió, en el Comité
VESA, la propuesta para un bus más rápido que fue el VESA Local Bus.

Vesa Local Bus


Al contrario que con el EISA, MCA y PCI, el bus VL no sustituye al bus ISA sino que
lo complementa. Un PC con bus VL dispone para ello de un bus ISA y de las
correspondientes ranuras (slots) para tarjetas de ampliación. Además, en un PC con bus
VL puede haber, sin embargo, una, dos o incluso tres ranuras de expansión, para la
colocación de tarjetas concebidas para el bus VL, casi siempre gráficos. Solamente estos
slots están conectados con la CPU a través de un bus VL, de tal manera que las otras
ranuras permanecen sin ser molestadas y las tarjetas ISA pueden hacer su servicio sin
inconvenientes.

El VL es una expansión homogeneizada de bus local, que funciona a 32 bits, pero que
puede realizar operaciones a 16 bits.

VESA presentó la primera versión del estándar VL-BUS en agosto de 1992. La


aceptación por parte del mercado fue inmediata. Fiel a sus orígenes, el VL-BUS se
acerca mucho al diseño del procesador 80486. De hecho presenta las mismas
necesidades de señal de dicho chip, exceptuando unas cuantas menos estrictas
destinadas a mantener la compatibilidad con los 386.

La especificación VL-Bus como tal, no establece límites, ni superiores ni inferiores, en


la velocidad del reloj, pero una mayor cantidad de conectores supone una mayor
capacitancia, lo que hace que la fiabilidad disminuya a la par que aumenta la frecuencia.
En la práctica, el VL-BUS no puede superar los 66 Mhz. Por este motivo, la
especificación VL-BUS original recomienda que los diseñadores no empleen más de
tres dispositivos de bus local en sistemas que operan a velocidades superiores a los 33
Mhz. A velocidades de bus superiores, el total disminuye: a 40 Mhz solo se pueden
incorporar dos dispositivos; y a 50 Mhz un único dispositivo que ha de integrarse en la
placa. En la práctica, la mejor combinación de rendimiento y funciones aparece a 33
Mhz.

Tras la presentación del procesador Pentium a 64 bits, VESA comenzó a trabajar en un


nuevo estándar (VL-Bus versión 2.0).

La nueva especificación define un interface de 64 bits pero que mantienen toda


compatibilidad con la actual especificación VL-BUS. La nueva especificación 2.0
redefine además la cantidad máxima de ranuras VL-BUYS que se permiten en un
sistema sencillo. Ahora consta de hasta tres ranuras a 40 Mhz y dos a 50 Mhz, siempre
que el sistema utilice un diseño de baja capacitancia.

En el nombre del bus VL queda de manifiesto que se trata de un bus local. De forma
distinta al bus ISA éste se acopla directamente en la CPU. Esto le proporciona por un
lado una mejora substancial de la frecuencia de reloj (de la CPU) y hace que dependa de
las línea de control de la CPU y del reloj. A estas desventajas hay que añadirle que no
en todos los puntos están bien resueltas las especificaciones del comité VESA, hecho
que a la larga le llevará a que el éxito del bus VL se vea empañado por ello. En sistemas
486 económicos se podía encontrar a menudo, pero su mejor momento ya ha pasado.

Bus local. Bus entre la CPU, la memoria y dispositivos periféricos que corre a la
velocidad de la CPU. En un computador personal, el bus VL y el PCI suministran
una transferencia de datos más rápida que el bus ISA tradicional. A partir del 386,
cuando las velocidades de la CPU comenzaron a acelerarse enormemente, los
computadores personales vienen con dos buses. La CPU tiene acceso a sus chips de
memoria a través de una vía de acceso interna de 32 bits (63 bits con el Pentium),
conocida como bus local, a la velocidad más alta del reloj de la CPU (25MHz,
33MHz, etc.). Sin embargo, tradicionalmente ha tenido acceso a sus dispositivos
periféricos en forma más lenta, en un bus ISA de 16 bits sólo a 8MHz. Incluso en el
bus EISA de 32 bits inherentemente más rápido corre en forma lenta para acomodar
las tarjetas ISA, que se conectan a éste. Los estándares de bus VL de VESA y de bus
local PCI de Intel se crearon para aprovechar las velocidades más altas de la CPU.
El PC corre a 33MHz; el bus VL hasta a 40MHz; esperándose más altas
velocidades. Las tarjetas base ISA y EISA se construyen ahora con ranuras
adicionales para el bus VL o las tarjetas PCI, o ambos.

http://www.glosarium.com/term/893,14,xhtml

EL BUS LOCAL PCI

Cuando IBM diseño su primer ordenador, el PC, diseño un bus para la conexión de
periféricos, que aunque en aquel entonces era mas que suficiente para los
dispositivos existentes, quedo rápidamente obsoleto con la aparición de los nuevos
microprocesadores rápidos y de los dispositivos que necesitaban una gran velocidad
de transferencia para comunicarse con el procesador del sistema.

Este bus fue denominado ISA, se encontraba disponible en dos versiones, una de 8
bits (que la integraban los primeros PC) y otra de 16 bits (que apareció junto con
los primeros AT con procesador 80286). Ambas versiones del bus ISA funcionaban
a una velocidad de 8 Mhz. si bien existen ordenadores compatibles en los que la
velocidad del bus se puede elevar hasta 10 o 12 Mhz.
Esta característica hizo que en poco tiempo los usuarios poseedores de ordenadores
con procesadores 386 a 40 Mhz o 486 a 33 Mhz. se vieran frenados de forma
considerable al hacer accesos al bus ISA.

Dejando a parte las soluciones propietarias desarrolladas por algunos fabricantes de


ordenadores, el primer bus local que tuvo una plena aceptación por parte del
publico en general fue el bus local VESA.
Esta tecnología aprovechaba el bus local del propio procesador para implementar
dos o tres ranuras de expansión, mediante los cuales el usuario conectaba las
tarjetas que normalmente contenían los dispositivos que podían representar en
cuello de botella durante el funcionamiento del ordenador (Tarjeta grafica, y
controladora de disco). Sin embargo, esta tecnología tenia como todo ventajas e
inconvenientes. La ventaja principal era su bajo coste de implementación. Por otro
lado los fabricantes se encontraron con una especificación del bus que era un poco
vaga, por lo que rápidamente aparecieron problemas de incompatibilidad entre
algunas placas base y determinadas tarjetas de expansión. Además el diseño
eléctrico de este bus hacia que solo se pudieran diseñar placas con dos o a lo sumo
tres ranuras de expansión VESA.
Para completar este relativamente desolador panorama, el bus VESA era de 32 bits,
y al menos en un primer momento no existía una especificación de 64 bits.

Para crear un bus local que fuese aceptado tanto por la industria informática como
por los usuarios, una serie de compañías, entre ellas Intel, se unieron en un comité,
el cual fue el encargado de crear las especificaciones de lo que hoy en día
conocemos como bus PCI.

El bus local PCI es un bus de alto rendimiento de 32 o 64 bits de anchura (casi


todas las implementaciones actuales soportan solo la versión de 32 bits) dotado de
líneas de datos y direcciones multiplexadas. Este bus esta diseñado como
mecanismo de interconexión entre componentes de la placa base, tarjetas de
expansión y subsistema de memoria, y el propio procesador.
En un sistema PCI típico, el subsistema formado por el procesador, la memoria
cache externa o de segundo nivel y la memoria principal se conectan al bus PCI
mediante un bridge o puente PCI. Este puente proporciona un acceso mediante el
cual el procesador puede acceder directamente a los dispositivos PCI, ya sea
mediante entrada/salida mapeada en la memoria del sistema o utilizando un
espacio de direcciones separado para las operaciones de entrada/salida.

La especificación PCI permite la existencia de dispositivos PCI maestros o masteres,


los cuales con capaces de acceder a la memoria principal de ordenador sin que sea
necesaria la intervención del microprocesador. El bridge puede disponer de algunas
otras funciones destinadas a optimizar el rendimiento general del sistema, como
por ejemplo buffer de escritura y de arbitro del bus.
Las configuraciones PCI típicas permiten la conexión de hasta cuatro tarjetas de
expansión.
En cuanto al tamaño de las tarjetas de expansión, se han definido tres tamaños,
tarjetas largas, cortas y cortas de longitud variable. No es necesario que todos los
sistemas soporten estos tres tipos de tarjetas.
Los dos tipos de voltajes soportados por el bus PCI (5 y 3'3 voltios) han tenido su
influencia en el diseño de las tarjetas de expansión, de forma que se han definido
tres tipos de tarjetas: una tarjeta de cinco voltios, que solo se puede conectar a las
ranuras PCI de este tipo, una tarjeta "universal" que se puede conectar a ranuras
de 5 y 3'3 voltios, y por ultimo otro tipo de tarjeta que solo se puede conectar a las
ranuras de 3'3 voltios.
La velocidad estándar de funcionamiento del PCI es de 33 Mhz, por lo que
asumiendo un ancho de banda de 32 bits es posible obtener velocidades superiores
a los 120 MB/seg.

http://www.dinastiasoft.com.ar/Tecnologia/PCI.htm

La conexión entre los elementos de un computador se realiza a través de los


BUSES. Un bus es un conjunto de cables (pistas de circuito impreso o hilos
conductores) que proporciona un camino para el flujo de información entre los
distintos elementos que forman el ordenador. Cuando un dato pasa de un
componente a otro, viaja a lo largo de este camino común para alcanzar su destino.
Por cada pista o cable se transmite un bit; para transmitir un bloque de varios bytes,
pueden transmitirse todos por el mismo hilo (un bit después de otro), lo que se
denomina transmisión en serie, o transmitir por distintos cables a la vez, lo que nos
proporciona una transmisión en paralelo.
Por el bus se debe transmitir distintos tipos de información: la dirección del dato al
que se quiere acceder, el dato a transferir, o información de control para permitir la
operación de los distintos elementos.

http://64.233.167.104/search?
q=cache:QXZW4e1mbg8J:wwwdi.ujaen.es/~mcdiaz/docencia/cur04_05/fi/teoria/04_Or
denador.pdf+%22funcionamiento+de+la+memoria%22informatica&hl=es
2.6.2 Bus de datos.
Sirve para transmitir información entre el microprocesador, la memoria y los
periféricos. Por él circulan los datos y las instrucciones. Tiene tantas líneas
como bits se transmiten en paralelo (una para cada bit). El flujo es de doble
sentido y a mayor número de bits paralelos mayor podrá ser la velocidad de
transmisión que consigamos.
El ancho de este bus (n° de bits que puede transmitir simultáneamente en
paralelo) es una medida de la potencia del microprocesador. Este bus es como
una autopista de datos electrónicos y cuanto más ancho sea, más datos podrán
moverse al mismo tiempo.
El ancho del bus de datos es una de las características más importantes del
microprocesador. Cuando decimos que un microprocesadores, por ej., de 16
bits, nos estamos refiriendo al ancho de su bus de datos.

http://www.lawebdelprogramador.com/diccionario/mostrar.php?letra=B&pagina=4

El Bus de Datos es bidireccional, pues los datos pueden fluir hacia ó desde la CPU.
Los m terminales de la CPU, de D0 - Dm-1 , pueden ser entradas ó salidas, según la
operación que se este realizando ( lectura ó escritura ) . en todos los casos, las palabras
de datos transmitidas tiene m bits de longitud debido a que la CPU maneja palabras de
datos de m bits; del número de bits del bus de datos, depende la clasificación del
microprocesador. En algunos microprocesadores, el bus de datos se usa para transmitir
otra información además de los datos ( por ejemplo, bits de dirección ó información de
condiciones ). Es decir, el bus de datos es compartido en el tiempo ó multiplexado. En
general se adoptó 8 bits como ancho estándar para el bus de datos de los primeros
computadores PC y XT. Usualmente el computador transmite un carácter por cada
pulsación de reloj que controla el bus (bus clock), el cual deriva sus pulsaciones del
reloj del sistema (system clock). Algunos computadores lentos necesitan hasta dos
pulsaciones de reloj para transmitir un carácter. Los computadores con procesador
80286 usan un bus de datos de 16 bits de ancho, lo cual permite la comunicación de dos
caracteres o bytes a la vez por cada pulsación de reloj en el bus. Los procesadores
80386 y 80486 usan buses de 32 bits. El PENTIUM de Intel utiliza bus externo de datos
de 64 bits, y uno de 32 bits interno en el microprocesador.

Bus de datos de 16 bits

Los procesadores dominantes antes de la introducción del


IBM PC, basado en el 8086, eran todos de 8 bits; con lo que
nos refereimos al bus de datos. Esto quiere decir que se
podía accesar un byte de memoria en un solo ciclo de reloj,
pues existían 8 cables entre la memoria y el procesador,
por donde viajaban a la vez 8 bits de información. Que el
procesador ahora sea de 16 bits, quiere decir que pueden
viajar a la vez 16 bits (2 bytes) entre el procesador y la
memoria; por tanto, el procesador puede mover bloques de
memoria en la mitad del tiempo, y con la mitad de
instrucciones. Esto hace más eficiente el acceso a memoria
por parte del procesador.
Al tamaño del bus de datos también suele llamársele tamaño
de palabra.

Bus de datos, que transporta los datos que se transfieren entre unidades. El número
de líneas (y por tanto el número de bits) que utilice el bus de datos en un ordenador
determina el tamaño de su palabra, es decir el tamaño del dato que se puede
transmitir. Es bidireccional, es decir, los mismos hilos se utilizan para transmitir
información hacia dentro o hacia fuera de una unidad en instantes diferentes

Bus de datos: Lleva los datos que es necesario enviar de un elemento a otro,
puede ser bidireccional (los datos pueden ir en uno u otro sentido). Existe un
bus de datos interno: (ejemplo: entre el microprocesador y la memoria) y uno
externo, entre la computadora y sus periféricos (ejemplo: Computadora e
impresora)

http://www.unicrom.com/Cmp_estructura.asp

El bus de datos

Los procesadores 80x86 utilizan el bus de datos para intercambiar información


entre los diferentes componentes del sistema. El tamaño de éstos buses es variable
dependiendo del tipo de procesador, por esta razón es común pensar en el tamaño
del bus como una medida del "tamaño" del procesador, puede haber buses de
datos de 8 (8088, 80188), 16 (8086, 80186, 80286), 32 (80386, 80486) ó 64
líneas (Pentium, Pentium Pro). En cada línea del bus de datos se transmite un bit
de información pero un sistema no está limitado a manejar información de acuerdo
al tamaño del bus de datos, es decir, un bus de 32 bits no está limitado a trabajar
con tipos de datos máximos de 32 bits. El tamaño del bus de datos por otro lado si
limita el número de bits que el sistema puede manejar por cada ciclo de memoria
de tal manera que un sistema de 16 bits necesita dos ciclos de memoria para
manejar un tipo de dato de 32 bits, naturalmente pero no necesariamente, un
sistema de 32 bits es el doble de rápido que un sistema de 16 bits, la limitación es
porque existen otros factores que influyen en el rendimiento de un sistema.

http://www.modelo.edu.mx/univ/virtech/prograc/cbyn03.htm

2.6.3 Bus de direcciones.


Bus de direcciones: Muchos de los elementos de una computadora así como
las posiciones de memoria tienen una dirección única dentro del sistema. De
esta dirección se puede leer un dato o en esta dirección podemos escribir un
dato. En el bus de direcciones se coloca la dirección del elemento a accesar y
con ayuda del bus de datos movemos la información de un elemento a otro.
Ejemplo: Si la CPU quiere leer unos datos de memoria para después enviarlo a
la impresora o la pantalla, primero pone en el bus de direcciones la dirección
del dato en memoria, lo lee (lo obtiene a través del bus de datos), después
pone en el bus de direcciones la otra dirección (la de pantalla o impresora) y
escribe (con ayuda del bus de datos). ¿Quién controla todo este proceso......?
http://www.unicrom.com/Cmp_estructura.asp

Bus de direcciones

Es utilizado por el microprocesador para señalar la celda de memoria (o el


dispositivo de E/S) con el que se quiere operar. El tipo de operación será de lectura
o de escritura y los datos implicados viajarán por el bus de datos.

Por él circula la expresión binaria de la dirección de memoria a la cual el


microprocesador quiere acceder. Tiene sentido de flujo unidireccional desde el
microprocesador hacia la memoria. Una vez localizados los datos perdidos, su
transmisión hacia el microprocesador (o hacia donde sea) se hará a través del bus
de datos.

Los dispositivos de E/S intercambian la información con el microprocesador


mediante los puertos de E/S. Cada puerto está asociado con un determinado
dispositivo y tiene una dirección que lo identifica.

El ancho de este bus también es una medida de la potencia del microprocesador, ya


que determina la cantidad de memoria a la que éste puede acceder, es decir, la
cantidad de espacio direccionable. El espacio de direcciones es el rango de valores
distintos que el microprocesador puede seleccionar. La cantidad máxima de
direcciones disponibles será 2 a la n, siendo n el número de líneas del bus de
direcciones.

http://html.rincondelvago.com/bus-de-direcciones_dispositivo-dma.html

El bus de Direcciones es un medio de comunicación unidireccional, debido a que los


datos fluyen en un único sentido, de la CPU a la memoria u otros dispositivos.

La CPU alimenta niveles lógicos en las líneas de dirección, con lo cual se generan 2n
posibles direcciones diferentes. Cada una de estas direcciones corresponde a una
localidad de la memoria ó dispositivo.

Los procesadores 8086 y 8088 usados en los primeros computadores personales


contaban con un bus de 20 líneas o bits de dirección, con lo cual eran capaces de
direccionar hasta 1 megabyte de memoria (1.048.576 bytes), lo cual fue superado por
los equipos AT (80286), que con 24 bits de direccionamiento, podían administrar hasta
16 MB de memoria (16.777.216 bytes). Subsecuentemente, los procesadores 80386DX
direccionan directamente 4 gigabytes de memoria principal, mientras que el procesador
80486DX hasta 64 GB.
http://www.tecnotopia.com.mx/mecatronica/buses.htm

Bus de direcciones, que transporta la dirección de la posición de memoria o del


periférico que interviene en el tráfico de información (de dónde procede el dato o a
dónde se dirige). Permite la comunicación entre el procesador y las celdas de la
memoria RAM. Cuando el procesador quiere leer el contenido de una celda de
memoria, envía por el bus de direcciones la dirección de la celda que quiere leer,
recibiendo a través del bus de datos el contenido de la misma. El tamaño de este
bus define la cantidad de memoria RAM que la CPU puede gestionar. Puesto que
hay dos valores posibles que pueden viajar a lo largo de cada una de las líneas de
direcciones, tenemos que, por ejemplo:
o con 10 bits podemos acceder a 1024 palabras, es decir, 1 Kbyte si la palabra
equivale a 1 byte.
o con 16bits accedemos a 65536 palabras (65KBytes)
o con 32bits podemos acceder a 4294967296 palabras, es decir 4GB

Bus de direcciones de 20 bits

También antes del 8086 había una limitante en la memoria de


la que el procesador podía disponer. Los procesadores
anteriores contaban con un bus de direcciones de 16 bits,
con lo que podían indexar 65536 localidades distintas en
memoria; siendo éstas bytes. Por tanto, su memoria máxima
era de 64 Kb. Intel reconoció que pronto, esta memoria
sería insuficiente, por lo que decidió ampliarla. Sin
embargo, no pudieron imaginar usos para una memoria mayor a
1 Mb.; parecía infinita para los estándares de entonces.
Por lo que aumentaron las líneas del bus de direcciones a
20, con lo cual se pueden indexar memorias con 1'048,576
elementos (1 Mb.)

El bus de direcciones

El bus de direcciones es el encargado de diferenciar las ubicaciones físicas de


cada elemento de un sistema de cómputo, sea memoria ó elemento de E/S, cuando
un programa necesita tener acceso a un elemento determinado del sistema coloca
su dirección en el bus de direcciones, los circuitos electrónicos asociados sea con la
memoria ó con un dispositivo de E/S son los encargados de reconocer ésta
dirección y consecuentemente colocar los datos correspondientes en el bus de
datos. Con una sola línea de dirección es posible tener acceso a dos elementos
diferentes, con n líneas de dirección se puede acceder a 2n direcciones diferentes,
por lo tanto el número de bits de un bus de direcciones determina la cantidad
máxima de direcciones de memoria que un sistema puede acceder. Un procesador
Pentium tiene un bus de direcciones de 32 bits por lo que su capacidad física real
de direccionamiento de memoria de de 4 Gigabytes, utilizando la técnica de
segmentación éstos procesadores pueden acceder a un mayor número de
direcciones de memoria.

http://www.modelo.edu.mx/univ/virtech/prograc/cbyn03.htm

Bus de direcciones
El bus del PC XT contiene 20 líneas identificadas SA0 a SA19; que en el AT se
aumentaron a 27, añadiendo las denominaciones LA17 a LA23. Estas líneas
contienen las direcciones que identifican la parte del ordenador que comunica.
Las direcciones son de dos tipos; unas se refieren a direcciones de memoria;
otras a direcciones de puertos de E/S, pero en cualquier caso son de 20 bits
para el PC XT y de 27 para los ATs.

Con los datos anteriores, resulta evidente ( 0.4) que el PC XT podía manejar
1.048.576 direcciones (220), mientras que en el AT esta cantidad asciende a
algo más de 134 millones (227). Sin embargo, recordemos que tanto los
procesadores 8088 presentes en el XT, como los 80287 del AT, tenían
registros de 16 bits ( H3b) que solo podían albergar 65.536 posiciones (216),
muy alejado de los valores anteriores. Para resolver el problema, se utilizan las
direcciones segmentadas ( H5.1), compuestas por dos palabras de 16 bits
que se componen para formar una dirección de 20 bits.

Nota: durante las operaciones E/S de puertos, las direcciones SA16-


SA19 del 8088 permanecen iguales a cero ( H3.2.1), por lo que solo
pueden utilizarse 16 bits para direcciones de puertos.

http://www.zator.com/Hardware/H2.htm#Controlador DMA

2.6.4 Bus de control.


Bus de control: Son hilos que transportan señales de control, dan la
información del estado de ciertos componentes, la dirección del flujo de la
información, controlan el momento (temporización) en que suceden ciertos
eventos de manera que no haya choques de datos, transmiten señales de
interrupción, etc.

http://www.unicrom.com/Cmp_estructura.asp

El bus de control

El bus de control es una colección de líneas que transportan un conjunto de


señales cuyo propósito es la sincronía de todas las operaciones efectuadas por el
CPU con los diferentes subsistemas de un equipo de cómputo, destacan las líneas
para escritura (write) y lectura (read) de datos, el reloj del sistema, líneas de
interrupción, líneas de estado, etc. El uso de éstas líneas se comprenderá mejor
conforme se avance en éste curso. Los procesadores de la familia 80x86 proveen
dos espacios diferentes de direccionamiento, uno para la memoria y otro para la
E/S, mientras que el direccionamiento de memoria varía según el procesador, las
líneas de E/S son siempre de 16 bits, lo que permite direccionar 65,536 localidades
diferentes. Algunas líneas de control son las encargadas de decidir qué direcciones
son para memoria y cuáles son para E/S.

http://www.modelo.edu.mx/univ/virtech/prograc/cbyn03.htm

El Bus de Control es utilizado para sincronizar las actividades y transacciones con los
periféricos del sistema. Algunas de estas señales, como R / W , son señales que la CPU
envía para indicar que tipo de operación se espera en ese momento. Los periféricos
también pueden remitir señales de control a la CPU, como son INT, RESET, BUS RQ.
Las señales más importantes en el bus de control son las señales de cronómetro, que
generan los intervalos de tiempo durante los cuales se realizan las operaciones. Este
tipo de señales depende directamente del tipo del microprocesador.

Bus de control, que transporta las señales de control y de estado, indicando la


dirección de la transferencia de datos, controlando la temporización de eventos
durante la transferencia, transmitiendo las señales de interrupción, etc. En
definitiva, son las señales para controlar y sincronizar todos los componentes. Las
señales de control parten desde la unidad de control hacia el resto de elementos, y
las de estado parten del resto de los elementos hacia la unidad de control.
Además, se suele distinguir dos tipos de buses dependiendo de las partes del sistema
que conectan: el bus que conecta la CPU con la memoria (bus interno o de CPU) y
el que conecta la CPU con el resto de elementos (bus de expansión, que es una
prolongación del bus interno).
El bus de CPU es interesante en relación con los tipos de memoria que exige, puesto
que se dedica a transferir datos entre la CPU y la memoria. Destaca por su
velocidad, y existen arquitecturas con velocidades de más de 100 Mhz. Pero la clase
realmente interesante de los buses son los buses de expansión.

· Bus de control o de sistema : organiza y redirige la información hacia el bus pertinente


para la información que se tiene que transmitir. Es el bus encargado de hacer el
direccionamiento, quién realiza toda la función de direccionar es el controlador,
diferente para cada tipo de dispositivo.

http://www.hardware12v.com/conocimientospc/41.php

El bus del sistema


El bus del sistema conecta a los elementos que forman una computadora Von
Neumann, en una máquina Intel 80x86 existen tres buses principales: el bus de
datos, el bus de direcciones y el bus de control. Un bus es un conjunto de alambres
por los cuales pasan señales eléctricas entre los componentes de un sistema, éstos
buses varían de procesador en procesador, sin embargo cada bus transporta
información equivalente para todos los procesadores. Un típico componente de un
sistema 80x86 utiliza niveles TTL estándar de señal, esto significa que cada
alambre en un bus utiliza un nivel de voltaje estándar para representar los niveles
lógicos de 1 y 0.

http://www.modelo.edu.mx/univ/virtech/prograc/cbyn03.htm

Papel del bus de control: a traves de este bus, la unidad de control


activa el MAR el MDR y los demas registros involucrados en los
procesos de lectura-escritura. Sincroniza el momento en que se
activan AB y DB, esto corresponde a un conjunto de
microoperraciones necesarias para producir una lectura o escritura en
memoria.

http://html.rincondelvago.com/arquitectura-de-computadoras_2.html
Bus de Control

El bus de control, al igual que el bus de direcciones es unidireccional


y se utiliza para efectuar la lectura y escritura en las memorias y
puertos de E/S. Este bus en general lo emplea la CPU para controlar
el flujo de los datos y las direcciones de forma organizada.

Funcionamiento del Bus del Sistema

El bus de datos depende del tamaño de los datos que maneja el procesador, este puede
tener 8, 16 o 32 bits y el bus de direcciones generalmente tiene como mínimo 16 bits.
El bus del sistema se utiliza para transferir información entre la CPU y la memoria o
para extraer instrucciones almacenadas en memoria y datos presentes en los puertos
de E/S.

El intercambio de información por el bus del sistema se realiza con dos tipos de
operaciones:

o Ciclo de Lectura: Cuando los datos en Memoria o puertos


de E/S se transfieren a la CPU.
o Ciclo de Escritura: Cuando los datos de la CPU se
transfieren a la Memoria o a los puertos de E/S.

Las líneas de control son aquellas con las que se controla el flujo de la información por
los buses, y las más importantes son:

o CHIPSELECT (CS’)
o LECTURA (RD’)
o ESCRITURA (WR’)

Cada transferencia empieza con la carga de una dirección en el bus de direcciones. Las
líneas correspondientes a la los bits menos significativos de la dirección se encuentran
conectados directamente a las memorias. Las líneas de dirección de los bits más
significativos se utilizan para seleccionar el dispositivo del cual se desea extraer la
información, ya sea una EPROM, RAM o un Puerto de E/S. Entonces, el decodificador de
direcciones se encarga de seleccionar el dispositivo que se debe activar según la
dirección presente en el bus. Para ello, cada dispositivo en el microcomputador debe
tener una única dirección que lo identifique. En la figura 11.2.3 se muestra un diagrama
de los tiempos de las señales presentes durante el flujo de los datos y direcciones en el
bus del sistema.

Figura 11.2.3. Diagrama de tiempos de las señales del bus del sistema.
La señal CS’ selecciona el dispositivo que debe transmitir los datos por el bus de datos.
Luego una de las señales RD o WR se activa desde la CPU, con lo cual se ordena al
dispositivo seleccionado enviar los datos a la CPU (ciclo de lectura) o recibirlos de la
CPU (ciclo de escritura).

Todos los ciclos de lectura y escritura comienzan con una dirección válida de la CPU.
Luego el decodificador de direcciones genera una señal CS’ para seleccionar uno de los
dispositivos. Entonces la CPU envía una señal RD o WR para efectuar la lectura o
escritura de los datos.

Para una operación de lectura el dispositivo debe conducir a través del bus de datos, lo
cual toma un tiempo corto (el tiempo de acceso de los datos), y los datos deben estar
disponibles en el bus durante el flanco de subida de la señal RD. Durante este flanco de
subida la CPU toma los datos y los almacena internamente en sus registros.

Durante un ciclo de escritura la CPU por si misma maneja de los datos. En este caso, al
igual que en el ciclo de lectura los datos deben estar disponibles en el bus antes de que
ocurra el flanco de subida de la señal WR, para que el dispositivo seleccionado pueda
recibir los datos correctamente.

http://www.virtual.unal.edu.co/cursos/ingenieria/2000477/lecciones/110201.htm

Bus de control

Además de los datos y la energía, el bus transporta una serie de señales de


control, por lo que a estas líneas se las denomina bus de control o del
sistema. Las principales son las siguientes:
• 0WS ("Zero Wait State"). Es utilizado por los dispositivos rápidos
conectados al bus para prevenir al procesador que no inserte estados
adicionales de espera.
• AEN ("Address Enabled") Se utiliza para indicar si es la UCP o el
controlador DMA, el que tiene control sobre las líneas de datos y de
direcciones en ese momento. Cuando está alta, el controlador DMA
controla el bus de datos y el de direcciones, además de las líneas
MEMR, MEMW, IOR e IOW,
• ALE ("Address Latch Enabled") Cuando está alta, señala que la UCP ha
colocado una dirección válida en el bus de direcciones.
• CLK. Señal del reloj que conecta directamente con una patilla del
procesador ( H3b1). En el XT es de 4.77 MHz, un tercio de la señal
del oscilador (OSC). En el AT esta frecuencia se elevó a 7 MHz, la
mitad de la señal del oscilador.

• OSC. Señal del oscilador ; basada en la frecuencia de un cristal


instalado en la placa-base. En el XT es de 14.31818 MHz.
• I/O CH CHK ("Channel Check"). Es una señal de detección de errores.
Cuando está baja, algún dispositivo del bus ha detectado un error de
paridad.
• I/O CH RDY ("Channel Ready"). Sirve para avisar al procesador o al
MDAC que un dispositivo lento necesita tiempo extra para estar
preparado. Cuando algún dispositivo necesita tiempo extra, baja esta
señal, aunque nunca durante un periodo de más de 10 ciclos CLK.
• IRQ ("Interrupt request"). En el PC XT existen 6 líneas identificadas
IRQ2 a IRQ7, que juegan un papel fundamental en el funcionamiento del
ordenador, ya que la tecnología de los ordenadores modernos se basa
en un sistema de interrupciones al que nos referiremos más adelante (
H2.4). Estas 6 líneas fueron aumentadas posteriormente en el PC AT,
añadiéndose 8, aunque no todas fueron destinadas al servicio de
periféricos, por lo que en el nuevo BUS solo aparecen IRQ10, IRQ11,
IRQ12, IRQ14 e IRQ15.

Adelantamos aquí que una interrupción es una señal que se origina en


un dispositivo (un periférico) para indicar al procesador que algo requiere
su atención inmediata (de ahí su nombre, literalmente "Petición de
interrupción"). Se solicita al procesador que suspenda lo que está
haciendo para atender la petición.
• IOR ("I/O Read") Orden de lectura. Esta línea indica a un dispositivo
E/S conectado al bus que debe colocar un dato en el bus de datos.
• IOW ("I/O Write") Orden de escritura. Esta línea indica a un dispositivo
E/S que debe leer el dato situado en el bus de datos.

• RESET. Una señal en esta línea ( H4), que conecta con una patilla
especial del procesador, origina el reinicio del sistema. Cuando esta
línea es puesta a masa (desaparece su tensión) y después vuelve a su
valor normal, se origina un reinicio del procesador.
• SBHE ("System Bus High Enable"). Cuando está activado indica que se
está realizando una transferencia de datos.
• DRQ ("DMA Request"). Similares en concepto a las líneas IRQ, pero
utilizadas para solicitar acceso directo a memoria. Existen tres de ellas,
señaladas DRQ1 a DRQ3.
• DACK ("DMA Acknowledge"). Se utilizan para acusar recibo de la
petición DRQ correspondiente. Existen cuatro, señaladas DACK0 a
DACK3, aunque el mecanismo DMA solo utiliza las tres últimas, DACK0
es utilizada en el XT para señalar un ciclo de refresco de memoria.
• MEMR ("Memory Read") Cuando se activa, esta señal indica a la
memoria conectada al bus que escriba los datos en el bus de datos.
• MEMW ("Memory Write") Cuando se activa, indica a la memoria que
almacene los datos situados en el bus de datos.
• T/C ("Terminal Count"). Sirve para señalar que el controlador DMA ha
alcanzado el final de una transferencia ( 2.3).

El sistema de acceso directo a memoria DMA ("Direct Memory Access") es muy


importante. Como puede verse, algunas líneas del bus están destinadas a este
servicio, que será tratado más adelante con mayor detalle ( 2.3).
http://www.zator.com/Hardware/H2.htm#Controlador DMA

2.6.5 Buses normalizados.


Buses normalizados más comunes

El Chipset marca las características del bus de la CPU

Tipos de buses de expansión

ISA Usado en los primeros PC. Es de ocho bits por que usa ocho líneas para
comunicarse con tarjeta de placas. También hay de 16 bits.

Características:

Baja capacidad y amplia difusión.

8 bits 16 bits

NCA Es un ISD extendido de 32 bits. Es compatible con el ISA. No se usa


para orden de alto nivel avanzado y más avanzado.

EISD Es un ISD extendido de 32 y compatibles con ISD. No se usaba para


ordenes de alto nivel.

Bases locales Obtienen alto rendimiento entre la placa y las ranuras de


expansión. Trabaja a 33 Mhz.

TIPOS

VL-BUS Instalado en los 468 de gama alta. No había acceso directo a RDM,
y tenía que intervenir o la CPU o un canal DMD y esto tardaba mucho.

PCI Evita el problema anterior creado por Intel.

Características:

- Bus de 32 bit de datos y direcciones.

- Velocidad de 33 Mhz.

- Capacidad de transferir datos de 132 Mb/seg.

- Soporta el bus masterin´ (Bus master RMD)

- Permite realizar casos concurrentes de escritura.

- Reparte de forma inteligente la capacidad. Otorga más capacidad al


dispositivo que más lo necesite.

- Permite realizar casos concurrentes de escritura.

- Soporta máximo 3 ó 4 slots por cada bus PCI


- Puede coexistir con buses de otro tipo.

- Preparado para multitud de plataformas. No sólo para PC.

- Incorpora facilidades ( Plug & Play)

- El coste de este tipo de buses es muy bajo.

AG`P Específico para controladores de vídeo. Bus de alto rendimiento de 32


bits y velocidad de 66 Mhz, su capacidad es muy superior.

Buses normalizados de periféricos

SCSI Entándart universal para la conversión de todo tipo de periféricos.


Utilizado para dispositivos de almacenamiento.

Características

- Sencillez

- Los dispositivos conectados son específicos para el Scasi, es decir, son de


tipo SCASI, esto conlleva a que todos los dispositivos llevan conector de “E”
y de “S” para el SCASI.

- Contienen altas prestaciones.

- Alto coste de adquisición

SCSI 1 Ocho bits permite conectar hasta 8 dispositivos. Realmente son sólo
siente dispositivos, ya que uno lo ocupa la controladora. La transferencia es
de 3,3. Mb/seg. Hasta 5 Mb/seg.

SCSI 2 Se mejora la velocidad. Hay cuatro tipos de SCSI .

Normal 8 bitss 5 Mb/seg

Fast 8 bits 10 Mb/seg

Wide 16 bits 10 Mb/seg

Fast-Wide 16 bits 20 Mb/seg

Ultra SCSI: Salió en 1996, aumenta las prestaciones del SCSI. Compatible
con Fast-SCSI 2 y con Fast/Wide-SCSI 2.

Para buses de 8 bits. Alcanza los 20 Mb/seg, y para buswes de 16 bits llega
hasta 40 Mb/seg.

SCSI 3: Es otro conjunto de estándares, muy especializado. Por ejemplo, uno


de esos conjuntos está orientado a serie en fibra óptica, y alcanza una gran
velocidad en este campo. SCSI 3 ya no es compatible con los otros, a favor
de la velocidad.

USB: (universal serial Bus). La información se transmite en serie. Su objetivo


es superar los inconvenientes de la conexión entre periféricos y ordenador.
IEEE 1394 Tiene los mismos objetívos (wire-fire)

http://html.rincondelvago.com/informatica-basica_8.html

2.7 Direccionamiento.
MODOS DE DIRECCIONAMIENTO Y FORMATOS

Introducción

El campo de operación de una instrucción especifica la operación que se debe realizar.


Esta debe ser ejecutada sobre algunos datos almacenados en registros del computador o
en palabras de memoria, es decir, sobre los operandos. El modo de direccionamiento
especifica la forma de interpretar la información contenida en cada campo de operando
para localizar, en base a esta información, el operando.

Los ordenadores utilizan técnicas de direccionamiento con los siguientes fines:


- Dar versatilidad de programación al usuario proporcionando facilidades tales como
índices, direccionamientos indirectos, etc., esta versatilidad nos servirá para manejar
estructuras de datos complejas como vectores, matrices, etc.
- Reducir el número de bits del campo de operando.

Al usuario que tiene poca experiencia, la variedad de modos de direccionamiento en un


ordenador le puede parecer excesivamente complicada. Sin embargo, la disponibilidad
de diferentes esquemas de direccionamiento le da al programador experimentado
flexibilidad para escribir programas que son más eficientes en cuanto a número de
instrucciones y tiempo de ejecución.

Es tal la importancia de los modos de direccionamiento que la potencia de una máquina


se mide tanto por su repertorio de instrucciones como por la variedad de modos de
direccionamiento que es capaz de admitir.

Definición: Los modos de direccionamiento de un ordenador son las diferentes formas


de transformación del campo de operando de la instrucción en la dirección del
operando.

En esta definición el término dirección debe interpretarse en su sentido más general de


localización del operando, en cualquier lugar, y no en el sentido más estricto de
dirección de memoria.

A la dirección obtenida de las transformaciones anteriores la llamaremos dirección


efectiva. Esta dirección, en el caso de tratarse de una dirección de memoria, es la que se
cargará en el M.A.R. o registro de dirección de memoria.

Llamando x a la información del campo de operando y Aef. a la dirección efectiva, la


función f que a partir de x nos da Aef. constituirá el modo de direccionamiento
empleado:

Aef. = f(x)
En la evaluación de la función f pueden intervenir otras informaciones además de la
información presente en el campo de operando de la instrucción. Estas informaciones
pueden residir en registros del procesador o en memoria.

La especificación del modo de direccionamiento puede ir en el código de operación o en


el campo de cada operando. Normalmente se codifica en el código de operación si el
número de modos es pequeño, en caso contrario se codifica con cada operando, esta
última forma de codificación favorece la ortogonalidad.

Modos de direccionamiento más usuales

En los párrafos siguientes se irán describiendo los modos de direccionamiento más


frecuentes. La mayoría de estos modos son comunes a muchas máquinas, sin embargo,
hay otros que sólo se usan en determinados procesadores.

- Direccionamiento implícito

En este modo, llamado también inherente, el operando se especifica en la misma


definición de la instrucción. El modo implícito se usa para hacer referencia a operandos
de dos tipos:

- Registros: En el caso de que el código de operación se refiera en particular a un


registro.

- Operandos en la pila: En el caso de que la operación se realice siempre sobre el dato


situado en la cima de pila.

El primer caso es típico de las organizaciones de un solo acumulador. Generalmente en


un ordenador de este tipo todas las instrucciones que actúan sobre el acumulador
utilizan direccionamiento implícito.

En el segundo caso están la mayoría de las instrucciones de los ordenadores con


organización de pila. Estas operaciones llevan implícitos los operandos que son los
elementos de la cima de pila. Esto se debe a que en este tipo de máquinas la mayoría de
las operaciones no tienen campos de dirección. También están en este caso las
instrucciones PUSH y POP de la mayoría de los ordenadores cuyo operando implícito
también es, como en el caso anterior, la cima de pila.

- Direccionamiento inmediato (o literal)

En este modo es el operando el que figura en la instrucción no su dirección. En otras


palabras el campo de operando contiene él mismo, sin transformación alguna, la
información sobre la que hay que operar. Este modo es útil para inicializar registros o
palabras de memoria con un valor constante.

- Direccionamiento directo por registro

Se mencionó anteriormente que el campo de dirección de una instrucción puede


especificar una palabra de memoria o un registro M procesador. Cuando se da este
último caso se dice que el operando está especificado con direccionamiento directo por
registro, en tal caso, el operando reside en uno de los registros del procesador que es
seleccionado por un campo de registro de k bits en la instrucción. Un campo de k bits
puede especificar uno de 2k registros. Este modo es típico de los ordenadores con
organización de registros de uso general.

Las ventajas de este modo son:

- El acceso a los registros es muy rápido, por tanto el direccionamiento por registro debe
usarse en las variables que se usen con más frecuencia para evitar accesos a memoria
que son más lentos, un ejemplo muy típico del uso de este direccionamiento son los
índices de los bucles.

- El número de bits necesarios para especificar un registro es mucho más pequeño que el
necesario para especificar una dirección de memoria, esto es debido a que el número de
registros del procesador es muy pequeño comparado con el número de direcciones de
memoria. Sin embargo, hay que tener en cuenta que en los ordenadores modernos el
número de registros ha aumentado considerablemente.

- Direccionamiento directo (o absoluto)

Este es el modo de direccionamiento más sencillo. El campo de dirección no necesita


transformación alguna para dar la dirección efectiva, es decir la función que transforma
el campo de operando en la dirección efectiva es la identidad. Esto significa que el
campo de operando es ya la dirección efectiva.

Este direccionamiento sólo se usa en ordenadores pequeños en que el programa siempre


se sitúa en la misma zona de memoria ya que dificulta la relocalización de los
programas, es decir que el código de los programas no dependa de su situación en
memoria. Ordinariamente este modo sólo se usa para acceder a direcciones del sistema
que normalmente se refieren a operaciones de entrada y salida ya que estas direcciones
no dependen del programa.

- Direccionamiento indirecto

En este modo el campo de operando de la instrucción indica la localización de la


dirección efectiva del operando. El modo de direccionamiento indirecto puede adquirir
diferentes formas según cuál sea el lugar donde se encuentre la dirección del operando.
En general, todos los modos de direccionamiento tienen su versión indirecta que añade
un eslabón más a la cadena del direccionamiento. Por ejemplo existe el
direccionamiento indirecto por registro, en el que el registro especificado contiene la
dirección del operando, no el operando mismo.

Este direccionamiento es útil cuando se trabaja con punteros ya que los punteros son
variables que contienen las direcciones de los operandos, no los operandos mismos.

- Direccionamiento relativo

Hay algunos modos de direccionamiento en que se hace uso de una propiedad muy
generalizada de los programas denominada localidad de referencia, esta propiedad
consiste en que las direcciones referenciadas por los programas no suelen alejarse
mucho unas de otras y, por tanto, suelen estar concentradas en una parte de la memoria.
Estas consideraciones nos llevan a la conclusión de que no es necesario utilizar todos
los bits de la dirección de memoria en el campo de operando, basta utilizar los bits
precisos para cubrir la parte de memoria donde estén incluidas las direcciones a las que
el programa hace referencia. Esto puede hacerse tomando corno referencia un punto de
la memoria y tomando como campo de operando la diferencia entre ese punto y la
dirección efectiva del operando. La dirección que se toma como punto de referencia
puede residir en un registro de la CPU y, por tanto, sumando el contenido de ese
registro con el campo de operando obtendremos la dirección efectiva. Hay varios
direccionamientos basados en esta técnica que reciben diferentes nombres dependiendo
de cuál sea el registro en el que radica la dirección tomada como referencia. Todos ellos
podrían catalogarse como direccionamientos relativos a un registro.

El direccionamiento denominado habitualmente relativo toma como valor de referencia


el registro contador de programa. Cuando se usa este modo de direccionamiento, el
campo de operando consiste en un número (normalmente con signo) que expresa la
diferencia entre la dirección del dato y la dirección siguiente a la instrucción en curso
(contenida en el contador de programa). Si el campo de operando, llamado en este caso
desplazamiento u offset, es positivo el operando residirá en una dirección posterior a la
de la instrucción y si es negativo, en una dirección anterior.

Este modo de direccionamiento es usado muy frecuentemente en programas cuyo


código deba ser independiente de la posición de memoria donde estén situados
(programas relocalizables) ya que el desplazamiento es independiente de la localización
del programa. También se usa con mucha frecuencia en instrucciones de bifurcación.

- Direccionamiento por base y desplazamiento

Este modo de direccionamiento se fundamenta en la propiedad de localidad de


referencia mencionada anteriormente. La dirección que se toma como referencia de la
zona de memoria en la que están localizados los datos se deposita en un registro
denominado registro base y el campo de operando indica la diferencia entre el registro
base y la dirección M operando. Normalmente se toma como referencia (registro base)
la dirección de comienzo de la zona de memoria ocupada por un programa. Por tanto, la
dirección efectiva del operando se calculará sumando el contenido del registro base con
el campo de operando.

Este modo de direccionamiento se usa en ordenadores que pueden mantener en


memoria varios programas ya que, de esta forma, los diferentes registros base pueden
contener las direcciones de comienzo de cada uno de los programas. Esto es muy útil
porque facilita la relocalización de los programas para situar el programa en una zona de
memoria diferente bastará con cambiar el contenido de su registro base, no será
necesario cambiar ninguno de los campos de operando.

- Direccionamiento indexado

En este modo de direccionamiento, la dirección del operando también se calcula


sumando un registro de la CPU al campo de operando, este registro es un registro
específico para este uso llamado registro índice. En los ordenadores con organización de
registros generales, el registro índice puede ser cualquiera de los registros de la CPU.
En los ordenadores en que el contador de programa es considerado como un registro de
uso general (PDP 11 y VAX) el modo relativo es un caso particular del
direccionamiento indexado. A la cantidad que hay que sumar al registro índice para
conseguir la dirección del operando también se le llama desplazamiento u offset. Este
modo de direccionamiento es especialmente útil para el direccionamiento de vectores y
matrices en bucles ya que, si se quieren direccionar elementos consecutivos del vector o
matriz, basta mantener en el desplazamiento la dirección del primer elemento e ir
incrementando el registro índice. También sirve para acceder de forma relativa a
elementos de vectores cercanos a uno dado, para ello, se carga la dirección del elemento
de referencia en el registro índice y después se accede mediante direccionamiento
indexado, con el desplazamiento adecuado, al anterior, al siguiente, etc., esto mismo
también es aplicable a pilas, en que, en ocasiones, hay que acceder a datos cercanos, por
encima o por debajo, al dato señalado por algún apuntador. Una consecuencia de todo
esto es una modalidad de direccionamiento indexado de que disponen algunos
ordenadores, denominada autoindexación, que hace que el registro índice sea
incrementado o decrementado en el tamaño del operando antes o después de acceder al
mismo. Los ordenadores que poseen autoindexación incorporan los modos de
direccionamiento descritos en los dos apartados siguientes. En algunos ordenadores
existen variantes del direccionamiento indexado en que se obtiene la dirección del
operando sumando el contenido de varios registros con el desplazamiento, esto puede
servir para especificar el comienzo de un vector mediante un desplazamiento respecto a
un registro y el elemento del vector mediante un registro índice.

- Direccionamiento autoincremental o postincremental

En este modo, la dirección del operando se encuentra en un registro y éste es


incrementado, después de acceder al operando, en el tamaño del mismo.

Este modo es útil para manejar vectores y matrices como se veía en el apartado anterior.
También se puede utilizar para extraer datos de pilas (que crezcan hacia direcciones
bajas) ya que, si el registro sobre el que se aplica este modo es el apuntador de pila,
después de la operación el apuntador señalará al siguiente elemento de la pila.

- Direccionamiento autodecremental o predecremental

En este modo para obtener la dirección del operando hay que decrementar un registro en
el tamaño del operando; el nuevo contenido del registro después de efectuar esa
operación, es la dirección del operando.

Para finalizar, veamos un resumen de las utilidades de los modos de direccionamiento


usados con más frecuencia.
http://www.mailxmail.com/curso/informatica/arquitecturaordenadores/capitulo19.htm
http://www.mailxmail.com/curso/informatica/arquitecturaordenadores/capitulo20.htm
http://www.mailxmail.com/curso/informatica/arquitecturaordenadores/capitulo21.htm
http://www.mailxmail.com/curso/informatica/arquitecturaordenadores/capitulo22.htm
http://www.mailxmail.com/curso/informatica/arquitecturaordenadores/capitulo23.htm
http://www.mailxmail.com/curso/informatica/arquitecturaordenadores/capitulo24.htm

2.7.1 Modo real.


Segmentos y párrafos

Esta forma de representación segmentada de las direcciones es en realidad


una imagen de como son manejadas internamente en el procesador.

Los procesadores 8088 tienen registros de 16 bits que pueden servir para
almacenar los desplazamientos, es decir, cualquier dirección dentro de una
zona de 64 KB (que se conoce como segmento). Disponen además de 4
registros de segmento de 16 bits (CS, SS, DS y ES H3.2), en los que se
almacenan las direcciones de inicio del segmento activo en cada momento.
Resulta así, que pueden direccionar un total absoluto de 1MByte, y hasta 64 x
4 = 256 KB sin necesidad de cambiar los registros de segmento. Esto es lo
que se conoce como funcionamiento en modo real (como puede verse, en
realidad es una forma de manejar la memoria).

La figura adjunta muestra como se utilizan los registros para señalar las
direcciones de inicio de los diversos módulos de un programa cargado en
memoria ( E1.3.2) dentro del espacio de memoria direccionable con 20 bits
(00000-FFFFFh).
En la figura 1 se muestra una división de este "Mega" en 16 segmentos
cuyos desplazamientos son justamente 0h, 1h, 2h ... Fh.

http://www.zator.com/Hardware/H5_1.htm
El 80386 tiene dos modos de operación: modo de direccionamiento real (modo real), y
modo de direccionamiento virtual protegido (modo protegido). En modo real el 80386
opera como un 8086 muy rápido, con extensiones de 32 bits si se desea. El modo real se
requiere primariamente para preparar el procesador para que opere en modo protegido.

http://lorca.act.uji.es/e08/ayudas/intel/80386.HTM

Ese mismo año aparece en escena el 80286, mucho más complejo que el
8086. Aunque el juego de instrucciones es prácticamente el mismo, se diseñó
pensando en la ejecución de sistemas multitarea. Contaba con dos modos de
ejecución, el real y el protegido. En el modo real el 286 opera como un 8086;
sin embargo en modo protegido cuando un programa intenta acceder a una
región de la memoria o ejecutar una determinada instrucción se comprueba
antes si tiene ese privilegio. Si no es así se activa un mecanismo de protección
que generalmente gestionará el sistema operativo, que es el programa que
controla los derechos del resto de programas. Además este modo protegido
permitía manejar hasta 16Mb de memoria RAM (por contar con un bus de
direcciones de 24 bits), aunque como los registros seguían siendo de 16 bits,
no posibilitaba el manejo de bloques de memoria -segmentos- de más de 64kb.
En cualquier caso, más allá del mero aumento de la velocidad de reloj (hasta
10MHz en el 8086, 16, 20 e incluso 25MHz en el 286), o el espacio de memoria
direccionable, se produjo una fuerte reducción del número de ciclos de reloj por
instrucción, lo que llevó a un incremento aún mayor del rendimiento.

En 1985 sale el 80386, lo que vendría a ser un peso pesado comparado a sus
antecesores. Prácticamente todos los registros quedaban extendidos a 32 bits,
e incluía un mecanismo de gestión de memoria más avanzado que el 286,
facilitando el uso de memoria virtual (disco duro como si fuera ram). Contaba
con un bus de direcciones de 32 bits, llegando a direccionar 4Gb de memoria, y
memoria caché. Aparte del modo real incluía un nuevo modo protegido
mejorado. En este modo protegido se permitía la ejecución de programas en un
modo virtual o V86, posibilitando la ejecución de máquinas virtuales 8086; el
sistema puede pasar con cierta facilidad de un modo a otro, permitiendo que
funcionen varios "8086" en una especie de modo "real" al tiempo, cada uno con
su memoria, estado... funcionando completamente ajeno al resto del software.
Cuando se ejecuta un programa de MS-DOS (modo real) bajo Windows (modo
protegido) en realidad entra en acción el modo virtual, ejecutando la aplicación
con relativa seguridad aislada del sistema y resto de aplicaciones (y digo
relativa porque he colgado muchas *muchas* veces el windows enredando con
un programilla DOS; los mecanismos de protección del Windows dejan
bastante que desear).

http://www.rinconsolidario.org/eps/asm8086/CAP1.html

2.7.2 Modo protegido.


El modo protegido provee el acceso al sofisticado manejo de memoria y paginado.

Dentro del modo protegido, el software puede realizar un cambio de tarea para entrar en
tareas en modo 8086 virtual (V86 mode) (esto es nuevo con este microprocesador).
Cada una de estas tareas se comporta como si fuera un 8086 el que lo está ejecutando, lo
que permite ejecutar software de 8086 (un programa de aplicación o un sistema
operativo). Las tareas en modo 8086 virtual pueden aislarse entre sí y del sistema
operativo (que debe utilizar instrucciones del 80386), mediante el uso del paginado y el
mapa de bits de permiso de entrada/salida (I/O Permission Bitmap). Finalmente, para
facilitar diseños de hardware de alto rendimiento, la interfaz con el bus del 80386 ofrece
pipelining de direcciones, tamaño dinámico del ancho del bus de datos (puede tener 16
ó 32 bits según se desee en un determinado ciclo de bus) y señales de habilitación de
bytes por cada byte del bus de datos.

Un 286 en modo protegido no podía volver al modo real salvo con un reset, lo
que supuso una seria traba al desarrollo de software que explotase este modo
de funcionamiento (no olvidemos que por entonces el estándar de facto en
sistemas operativos era MSDOS). Además, seguíamos estando limitados a
segmentos de 64k, y con el 386 al caer (siempre que se lanza un procesador
nuevo, están los de las siguientes generaciones en diferentes estados de
desarrollo) no compensaba el esfuerzo. Debido a la escasa relevancia del
modo protegido del 286, nos referiremos genéricamente a modo protegido
cuando hablemos de 386+.
http://lorca.act.uji.es/e08/ayudas/intel/80386.HTM

Modo protegido y memoria extendida

La especificación EMS de Lotus/Intel/Microsoft, permitía manejar grandes


cantidades de datos (ahora no nos parecen tan grandes), pero no resolvía el
problema de grandes cantidades de código, ya que el segmento de código no
podía manejarse de esta forma. Esto presentaba problemas no solo para
programas grandes, sino para cualquier intento de multiprogramación ( 1.7),
cuando varios programas deben coexistir en memoria.

Como siempre, la solución vino de la mano de otro avance tecnológico; en este


caso, la aparición del procesador Intel 80286, que en 1982 inició la era del PC
AT. Este micro permite un acceso a memoria que recuerda vagamente la
especificación EMS, pero de forma nativa, ya que los mecanismos están
incluidos en el procesador. Como la política de Intel ha sido mantener
compatibilidad con los micros anteriores, el 80286 podía trabajar en modo real,
imitando el funcionamiento del 8088 , mientras que la nueva forma se
denominó modo protegido.

El modo protegido utiliza los registros de segmento como punteros a unos


nuevos registros de dirección de 24 bits denominados tablas de descripción
("Descriptor tables"), que permiten acceder a un máximo de 224 (16 MBytes) de
memoria física, de forma que los registros de segmento son selectores que
marcan el inicio de una dirección de 24 bits. La memoria que se hacía
accesible mediante este sistema se denominó memoria extendida, para
distinguirla de la antigua EMS [3]. La posterior introducción del 80386, con
registros de 32 bits, permitió direccionar hasta 232 (4 GBytes) de memoria
externa.

Los nuevos micros incluyeron otras mejoras que permitían al Sistema


Operativo un funcionamiento más cómodo y seguro de las aplicaciones cuando
operaba en modo protegido. Los mecanismos pertinentes estaban incluidos
en el hardware o al menos este proporcionaba recursos al SO para realizarlos
cómodamente, aunque desde luego, para sacar provecho de estas mejoras el
Sistema debía estar preparado ex profeso. El DOS no podía utilizarlas, sí en
cambio los sistemas más avanzados del momento, como OS/2, Unix o
Windows. Básicamente estas mejoras se referían a dos cuestiones:
• Manejo de memoria virtual
• Soporte nativo para multiprogramación

§7.1 Memoria virtual

Esta técnica consiste en hacer creer al programa que dispone de más memoria
que la físicamente disponible en RAM. Este artificio tiene sentido porque en
ese momento (y actualmente), la memoria extendida era mayor que la
físicamente disponible en muchos sistemas, además el disco duro era estándar
en todos los equipos.
Esta RAM ficticia se conoce como memoria virtual; una simulación conocida
de antiguo en el mundo de los mainframes, que fue introducida en la
informática personal a partir del 80286; este procesador ya disponía de un
controlador hardware para este menester, de forma que su manejo no
significaba una gran sobrecarga para el Sistema. Su funcionamiento se basa
en que cuando una aplicación necesita más espacio y la memoria física está
agotada, el controlador de memoria virtual proporciona espacio auxiliar
utilizando un fichero de intercambio ("Swap file") situado en memoria externa
(disco duro generalmente H2), donde se almacena la información que no
cabe en la RAM.

Además de facilitar la apariencia de más RAM que la físicamente disponible,


este mecanismo permite que diversas aplicaciones compartan la misma
memoria física, aunque para ello se requieran constantes maniobras de carga y
descarga ("swapping") de trozos del fichero de intercambio a memoria, por lo
que el rendimiento global del sistema se resiente si la desproporción entre el
fichero de intercambio y la RAM es muy notable [4].

Nota: En el caso de los sistemas operativos de Microsoft, la memoria


virtual fue introducida de forma más o menos perfeccionada desde la
aparición del primer Windows 3.1 en 1.987. En Windows 95, el Sistema
comienza a funcionar directamente en modo protegido de 32 bits,
proporcionando a cualquier aplicación un espacio de memoria de hasta 4
GB. (siempre que esté disponible el adecuado espacio en disco). En este
Sistema, el fichero de intercambio puede crecer a medida de las
necesidades hasta ocupar todo el espacio disponible en disco.

http://www.zator.com/Hardware/H5_1.htm
El modo protegido utiliza los registros de segmento como punteros a unos nuevos
registros de dirección de 24 bits denominados tablas de descripción ("Descriptor
tables"), que permiten acceder a un máximo de 224 (16 MBytes) de memoria física,
de forma que los registros de segmento son selectores que marcan el inicio de una
dirección de 24 bits. La memoria que se hacía accesible mediante este sistema se
denominó memoria extendida, para distinguirla de la antigua EMS [3]. La posterior
introducción del 80386, con registros de 32 bits, permitió direccionar hasta 232 (4
GBytes) de memoria externa.

Los nuevos micros incluyeron otras mejoras que permitían al Sistema Operativo un
funcionamiento más cómodo y seguro de las aplicaciones cuando operaba en modo
protegido. Los mecanismos pertinentes estaban incluidos en el hardware o al
menos este proporcionaba recursos al SO para realizarlos cómodamente, aunque
desde luego, para sacar provecho de estas mejoras el Sistema debía estar
preparado ex profeso. El DOS no podía utilizarlas, sí en cambio los sistemas más
avanzados del momento, como OS/2, Unix o Windows. Básicamente estas mejoras
se referían a dos cuestiones:

Manejo de memoria virtual


Soporte nativo para multiprogramación

http://personales.com/colombia/bucaramanga/koll/Modo%20protegido%20y
%20memoria%20virtual.htm
2.7.3 Modo real virtual.
El 80386 (DX)

El procesador 80386 significó un cambio total en el mundo de las Pcs. El 386DX


cambió radicalmente varios de los aspectos de los procesadores anteriores y estableció
una gran diferencia con los demás: Por primera vez, los programas requerían de un
procesador por sus características para poder correr y no por su velocidad, lo que generó
una especie de incompatibilidad hacia atrás: los programas desarrollados para
aprovechar sus características no podían funcionar en cualquier otro procesador
anterior.

Fue el primer procesador de 32 bits, el 386DX tiene un bus de datos e instrucciones de


32 bits tanto interno como externo; por lo tanto duplica el ancho del bus con respecto al
de su predecesor: el 80286.

El bus de direcciones también fue ampliado a 32 bits, por lo tanto el chip puede
direccionar un máximo de 4096 Mb de memoria ( 4 Gb ). Sus velocidades de reloj
comenzaron con 16 Mhz y se llegaron a desarrollar chips de hasta 33 y 40 Mhz.
También se le agregó una memoria caché externa para aumentar el rendimiento y
solucionar el problema de la lentitud de las memorias con respecto a la velocidad del
procesador.

Las aplicaciones desarrolladas para correr sobre los procesadores anteriores al 386DX
simplemente correrán más rápido al ser ejecutadas en un sistema con este procesador,
pero las aplicaciones que aprovechan las características avanzadas de este chip corren
muchísimo más rápido que una aplicación equivalente desarrollada para un chip
anterior, ya que el ancho del bus de direccionamiento permite direccionar memoria sin
los problemas que generaba el de los procesadores de 16 bits.

Al ser un procesador de32 bits, el 386DX tiene un nuevo conjunto de registros


extendidos de 32 bits, lo que permite un mayor rendimiento en las aplicaciones que
manejen los datos directamente en 32 bits en vez de trabajar con datos de 16 bits.
También se introduce una nueva modalidad de trabajo: el modo real virtual. Este modo
de operación permite una multitarea muchísmo más avanzado que el que provee el
80286. Cada una de las aplicaciones que se ejecute en un entorno de trabajo multitarea,
tendrán su propia CPU virtual con su memoria propia. Esto sería parecido a tener varias
computadoras personales ejecutando cada una su aplicación y que cada una esperara
para que la otra ejecute una operación para luego ejecutar la suya: se distribuyen los
tiempos, pero cada aplicación tiene su área de trabajo propia.

Esta modalidad de trabajo fue el principio de funcionamiento de los sistemas operativos


de 32 bits que surgieron bastante tiempo después que el primer 386DX: OS/2 a partir de
la versión 2.0, Windows a partir de la versión 95 y Windows NT en todas sus
aplicaciones.

También con estos procesadores aparece otro nuevo concepto: la memoria virtual.
Cualquier dispositivo de entrada y salida (como por ejemplo un disco duro) puede tener
asignado un rango de direcciones de memoria y trabajar como ésta, de manera que si se
posee memoria insuficiente, se puede recurrir al disco y utilizarlo de las misma forma
que la memoria, aunque no se tendrán las mismas velocidades. Esta capacidad es propia
de los procesadores y no del sistema operativo, como suele pensarse. Que el sistema
operativo lo aproveche o no, es otra cosa. Los procesadores que tengan un bus de
direcciones de 32 bits pueden direccionar teóricamente hasta 64 Tb de memoria virtual.

El 386DX puede procesar el doble de datos que el 80286 en la misma cantidad de


tiempo, gracias a su juego de comandos mejorados y el ancho del bus de datos.

http://personales.com/peru/lima/ensamblaje/procesador.htm

Desde que el bus de direcciones se expandió a 32 bits, el chip puede


direccionar directamente 4.294.967.296 (2 elevado a la 32) localizaciones de
memoria, o 4 gigabytes de RAM . Esto hace posible direccionar incluso 64
terabytes de forma virtual, lo que permite otro modo de operación, llamado el
modo real virtual. Con este modo de operación, es posible efectuar la
multitarea bajo MS- /PC-DOS porque cada aplicación involucrada en el proceso
de multitarea recibe una CPU virtual con 1 MB de memoria.

2.8 Temporización.
En máquinas de arquitectura Von Neumann la mayoría de las operaciones son
serializadas, esto significa que la computadora ejecuta los comandos en un orden
preestablecido. Para asegurarnos de que todas las operaciones ocurren justo en el
tiempo adecuado, las máquinas 80x86 utilizan una señal alternante llamada el reloj
del sistema.

En su forma básica, el reloj del sistema maneja toda la sincronización de un


sistema de cómputo. El reloj del sistema es una señal eléctrica en el bus de control
que alterna entre los valores de cero y uno a una tasa dada. La frecuencia en la
cual el reloj del sistema alterna entre cero y uno es llamada frecuencia del reloj de
sistema. El timepo que toma para cambiar de cero a uno y luego volver a cero se le
llama periodo de reloj, también llamado ciclo de reloj. La frecuencia del reloj es
simplemente el número de ciclos de reloj que ocurren en un segundo, en sistemas
actuales, éste valor excede los 200 ciclos por segundo, siendo ya común
frecuencias del orden de los 366 Mhz. (MegaHertz, que equivale a un millón de
ciclos por segundo). Observe que el periodo de reloj es el valor inverso de la
frecuencia, por lo tanto, para un sistema de 200 Mhz el periodo es igual a 5
nanosegundos. Para asegurar la sincronización, el CPU inicia una operación ya sea
en el flanco ascendente (cuando la señal cambia de cero a uno) ó en el
descendente (cuando la señal cambia de uno a cero). Como todas las operaciones
de un CPU están sincronizadas en torno a su reloj, un CPU no puede ejecutar
operaciones más rápido que la velocidad del reloj.

http://www.modelo.edu.mx/univ/virtech/prograc/cbyn03.htm

EL TEMPORIZADOR 8253 U 8254.

El 8253/4 es un chip temporizador que puede ser empleado como reloj de tiempo
real, contador de sucesos, generador de ritmo programable, generador de onda cuadrada,
etc. En este capítulo, la información vertida estará relacionada con el 8254 que equipa a
los AT, algo más potente que el 8253 de los PC/XT; sin embargo,
las pocas diferencias serán comentadas cuando llegue el caso.

12.3.1 - DESCRIPCIÓN DEL INTEGRADO.

Este circuito integrado posee 3 contadores totalmente


independientes, que pueden ser programados de 6 formas diferentes.

D7..D0: BUS de datos bidireccional de 3 estados.


CLK 0: CLOCK 0, entrada de reloj al contador 0.
OUT 0: Salida del contador 0.
GATE 0: Puerta de entrada al contador 0.
CLK 1: CLOCK 1, entrada de reloj al contador 1.
OUT 1: Salida del contador 1.
GATE 1: Puerta de entrada al contador 1.
CLK 2: CLOCK 2, entrada de reloj al contador 2.
OUT 2: Salida del contador 2.
GATE 2: Puerta de entrada al contador 2.
Líneas de dirección para seleccionar uno de los tres contadores o el registro de la palabra de
A0..A1:
control.
-CS: Habilita la comunicación con la CPU.
-WR: Permite al 8254 aceptar datos de la CPU.
-RD: Permite al 8254 enviar datos a la CPU.

DESCRIPCIÓN FUNCIONAL

El diagrama funcional del 8254, con la estructura interna de las diversas partes que
lo componen, se muestra a la izquierda. A la derecha, diagrama de los bloques internos
de un contador:

El buffer del bus de datos, de 8 bits y tres estados, comunica el 8254 con la CPU.
La lógica de lectura y escritura acepta entradas del bus y genera señales de control
para las partes funcionales del 8254. Las líneas A0..A2 seleccionan uno de los tres
contadores o el registro de la palabra de control, para poder leerlos o escribirlos. El
registro de la palabra de control es seleccionado cuando A0=A1=1, este registro sólo
puede ser escrito (se puede obtener información de estado, como se verá más adelante,
con el comando read-back del 8254, no disponible en el 8253). Los contadores 1, 2 y 3
son idénticos en su funcionamiento, por lo que sólo se describirá uno; son totalmente
independientes y cada uno de ellos puede ser programado en una modalidad diferente.
Si se observa el esquema de un contador, a la derecha, se verá el registro de la palabra
de control: aunque no es parte del contador propiamente dicho, afecta a su modo de
funcionamiento. El registro de estado, cuando es transferido al correspondiente latch,
contiene el valor en curso del registro de la palabra de control y alguna información
adicional (como se verá después en el comando read-back). El contador propiamente
dicho está representado en la figura por CE (Counting Element) y es un contador
descendente síncrono de 16 bits que puede ser inicializado. OLM y OLL son dos latch de
8 bits (OL significa Output Latch; los subíndices M y L están relacionados con el más y
el menos significativo byte, respectivamente); ambos son referenciados normalmente
como un conjunto denominado OL a secas. Estos latches siguen normalmente la cuenta
descendente de CE, pero la CPU puede enviar un comando para congelarlos y poder
leerlos; tras la lectura continuarán siguiendo a CE. La lógica de control del contador se
encarga de que un sólo latch esté activo a un tiempo, ya que el bus interno del 8254 es
de 8 bits. CE no puede ser nunca leído directamente (lo que se lee es OL). De manera
análoga, existen un par de registros CRM y CRL (CR significa Count Register) que
almacenan la cuenta del contador y se la transmiten convenientemente a CE. Los
valores de cuenta se escriben siempre sobre CR (y no directamente sobre CE). La lógica
de control gestiona la conexión con el exterior a través de las líneas CLK, GATE y
OUT.

DESCRIPCIÓN OPERACIONAL

Tras el encendido del ordenador, el 8254 está en un estado indefinido; con un modo,
valor de cuenta y estado de salida aleatorios. Es entonces cuando hay que programar los
contadores que se vayan a emplear; el resto, no importa dejarlos de cualquier manera.

Programación del 8254.

Para programar un contador del 8254 hay que enviar primero una palabra de control
y, después, un valor de cuenta inicial. Los contadores se seleccionan con las líneas A0 y
A1; el valor A0=A1=1 selecciona la escritura de la palabra de control (en la que se
identifica el contador implicado). Por tanto, el 8254 ocupa normalmente 4 direcciones
de E/S consecutivas ligadas a los contadores 0, 1, 2 y al registro de la palabra de
control. Para enviar la cuenta inicial se utiliza simplemente el puerto E/S ligado al
contador que se trate. El formato de la palabra de control es:

Operaciones de escritura.

El 8254 es muy flexible a la hora de ser programado. Basta con tener en cuenta dos
cosas: por un lado, escribir siempre primero la palabra de control, antes de enviar la
cuenta inicial al contador. Por otro, dicha cuenta inicial debe seguir exactamente el
formato seleccionado en la palabra de control (enviar sólo byte bajo, enviar sólo byte
alto, o bien enviar ambos consecutivamente). Teniendo en cuenta que cada contador
tiene su propio puerto y que la palabra de control indica el contador al que está
asociada, no hay que seguir un orden especial a la hora de programar los contadores.
Esto significa que, por ejemplo, se puede enviar la palabra de control de cada contador
seguida de su cuenta inicial, o bien enviar todas las palabras de control para los 3
contadores y después las 3 cuentas iniciales; también es válida cualquier combinación
intermedia de estas secuencias (por ejemplo: enviar la palabra de control para el
contador 0, después la palabra de control para el contador 1, después la parte baja de la
cuenta para el contador 0, luego la parte baja de la cuenta para el contador 1, la parte
alta de la cuenta para el contador 0, etc...).

Un nuevo valor de cuenta inicial puede ser almacenado en un contador en cualquier


momento, sin que ello afecte al modo en que ha sido programado (el resultado de esta
operación dependerá del modo, como se verá más adelante). Si se programa el contador
para leer/escribir la cuenta como dos bytes consecutivos (bajo y alto), el sentido común
indica que entre ambos envíos/recepciones no conviene transferir el control a una
subrutina que utilice ese mismo contador para evitar un resultado incorrecto.

Operaciones de lectura.

Existen tres posibles métodos para leer el valor de un contador en el 8254. El


primero es el comando Read-Back, sólo disponible en el 8254 (y no en el 8253), como
luego veremos. El segundo consiste en leer simplemente el contador accediendo a su
puerto correspondiente: este método requiere inhibir la entrada CLK al contador (por
ejemplo, a través de la línea GATE o utilizando circuitería exterior de apoyo) con objeto
de evitar leer la cuenta en medio de un proceso de actualización de la misma, lo que
daría un resultado incorrecto. El tercer método consiste en el comando de
enclavamiento.

Comando de enclavamiento (Counter Latch Command).

Este comando se envía cual si de una palabra de control se tratara (A1=A0=1): para
diferenciarlo de ellas los bits 5 y 4 están a cero. En los bits 7 y 6 se indica el contador
afectado. Los demás bits deben estar a cero para compatibilizar con futuras versiones
del chip. Cuando se envía el comando, el OL del contador seleccionado queda
congelado hasta que la CPU lo lee, momento en el que se descongela y pasa de nuevo a
seguir a CE. Esto permite leer los contadores al vuelo sin afectar la cuenta en curso. Se
pueden enviar varios de estos comandos a los diversos contadores, cuyos OL's quedarán
enclavados hasta ser leídos. Si se envían varios comandos de enclavamiento al mismo
contador, separados por un cierto intervalo de tiempo, sólo se considerará el primero
(por tanto, la cuenta leída corresponderá al valor del contador cuando fue enclavado por
vez primera).

Por supuesto, el contador debe ser leído utilizando el formato que se definió al enviar
la palabra de control; aunque en el caso de leer 16 bits, las dos operaciones no han de
ser necesariamente consecutivas (se pueden insertar en el medio otras acciones
relacionadas con otros contadores).

Otra característica interesante (¿disponible tal vez sólo en el 8254?) consiste en la


posibilidad de mezclar lecturas y escrituras del mismo contador. Por ejemplo, si ha sido
programado para cuentas de 16 bits, es válido hacer lo siguiente: 1) leer el byte menos
significativo, 2) escribir el nuevo byte menos significativo, 3) leer el byte más
significativo, 4) escribir el nuevo byte más significativo.

Comando Read-Back.
Sólo está disponible en el 8254, no en el 8253. Este comando permite leer el valor
actual de la cuenta, así como averiguar también el modo programado para un contador y
el estado actual de la patilla OUT, además de verificar el banderín de cuenta nula (Null
Count) de los contadores que se indiquen. El formato del comando Read-Back es el
siguiente:

El comando Read-Back permite enclavar la cuenta en varios OL's de múltiples


contadores de una sola vez, sin requerir múltiples comandos de enclavamiento,
poniendo el bit 5 a cero. Todo funciona a partir de aquí como cabría esperar (los
contadores permanecen enclavados hasta ser leídos, los que no son leídos permanecen
enclavados, si el comando se reitera sólo actúa la primera vez reteniendo la primera
cuenta...). También es posible enviar información de estado al latch OL, enclavándola
para que puede ser leída con comodidad por el puerto que corresponda a ese contador.
La palabra de estado tiene el siguiente formato:

En D0..D5 se devuelve justo la misma información que se envió en la última palabra


de control; en el bit D7 se entrega el estado actual de la patilla OUT del 8254, lo que
permite monitorizar por software las salidas del temporizador economizando hardware
en ciertas aplicaciones. El bit NULL COUNT (D6) indica cuándo la última cuenta
escrita en CR ha sido transferida a CE: el momento exacto depende del modo de
funcionamiento del contador. Desde que se programa un nuevo valor de cuenta, pasa un
cierto tiempo hasta que éste valor pasa de CR a CE: leer el contador antes de que se
haya producido dicha transferencia implica leer un valor no relacionado con la nueva
cuenta. Por ello, según las aplicaciones, puede llegar a ser necesario esperar a que
NULL COUNT alcance el valor 0 antes de leer. El funcionamiento es el siguiente:

Operación Consecuencias
A -Escribir al registro de la palabra de control (1) NULL COUNT = 1
B -Escribir al registro contador (CR) (2) NULL COUNT = 1
C -Nueva cuenta cargada en CE (CR ->CE) NULL COUNT = 0
Notas:
(1) Sólo el contador especificado por la palabra de control tiene su
NULL COUNT a 1; los demás contadores, lógicamente, 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 después de enviar el segundo byte.

Si se enclava varias veces seguidas la palabra de estado, todas serán ignoradas menos
la primera, por lo que el estado leído será el correspondiente al contador en el momento
en que se enclavó por vez primera la palabra de estado.

Se pueden enclavar simultáneamente 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 quién de los dos hubiera sido
enclavado primero, la primera lectura realizada devolverá la palabra de estado y la
segunda la cuenta enclavada (que automáticamente quedará de nuevo desenclavada).

MODOS DE OPERACIÓN DEL 8254

MODO 0: Interrupt On Terminal Count (Interrupción al final de la cuenta).


Es empleado típicamente 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 próximo 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 próximo pulso del
reloj y el contador comenzará a decrementarse; si se envía 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 próximo 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 próximo pulso del reloj, comenzando el pulso One-Shot de N ciclos de reloj de
duración; 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, lógicamente, que se produzca un nuevo flanco de subida de
GATE: en ese caso, el contador sería 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 típicamente
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, repitiéndose el proceso. Este modo es, por
tanto, periódico, 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
(después, como cabría 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
próximo pulso del reloj: OUT bajará N pulsos de reloj después, lo que permite también
una sincronización 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 período el contador se recargará con ese nuevo valor de cuenta inicial tras el
próximo 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 generación de una señal 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 también periódico:
la onda resultante para una cuenta inicial N tiene un período 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 ningún 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
próximo pulso del reloj: también 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-período el contador se recargará con ese nuevo valor de cuenta inicial tras el
próximo 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 duración a nivel alto de OUT será un período de
reloj mayor que la duración 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 próximo
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 próximo 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 envíe 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 señal GATE, el
contador comienza a decrementar la cuenta. Cuando llega a cero, OUT baja durante un
pulso CLK y luego vuelve a subir.
Después 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 después de que expire la cuenta actual, el contador será
cargado con la nueva cuenta en el próximo 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 versátil; los PS/2 más avanzados tienen un
temporizador con un cuarto contador ligado a la interrupción 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 dirección 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 través de los puertos 40h, 41h y
42h; la palabra de control se envía al puerto 43h.

La señal GATE de los contadores 0 y 1 está siempre a 1; en el contador 2 es


seleccionable el nivel de la línea GATE a través 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 precisión 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 especificación: 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 máquinas, su


valor normal para el divisor es 18; aumentándolo 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,
acelerándose en ocasiones hasta casi un 10% la velocidad de proceso del equipo. En los
AT la ganancia de velocidad es mucho menor y además este es un punto demasiado
sensible que conviene no tocar para no correr riesgos, aunque se podría bajar hasta un
valor 2-17 para ralentizar el sistema. Sin embargo, no es conveniente alterar esta
especificación porque, como se verá más adelante, hay un método para realizar retardos
(empleado por la BIOS y algunas aplicaciones) que se vería 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 - TEMPORIZACIÓN.

Los contadores 0 y 1, especialmente este último, ya están ocupados por el sistema;


en la práctica el único disponible es el 2. Este contador ha sido conectado con el doble
propósito de temporizar y de generar sonido. Para emplearlo en las temporizaciones, es
preciso habilitar la puerta GATE activando el bit 0 del puerto 61h; también hay que
asegurarse de que la salida del contador no está conectada al altavoz (a menos que se
desee música mientras se cronometra) poniendo a 0 el bit 1 del mismo puerto (61h):

IN AL,61h
AND AL,11111101b ; borrar bit 1 (conexión
contador 2 con el altavoz)
OR AL,00000001b ; activar bit 0 (línea GATE del
contador 2)
JMP SHORT $+2 ; estado de espera para E/S
OUT 61h,AL

El siguiente programa de ejemplo, CRONOS.ASM, incluye dos subrutinas para


hacer retardos de alta precisión. 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 precisión. *
; * *
; * INIT_RETARDO: llamarla al principio del todo. *
; * RETARDO: Entregar en AX el nº de 1193180-avos de *
; * segundo que dura el retardo (máximo 65400). *
; * *
; ********************************************************************
programa SEGMENT
ASSUME CS:programa, DS:programa

ORG 100h
inicio:

CALL inic_retardo
MOV CX,20 ; 20 retardos
MOV AX,59659 ; de 50 milisegundos
retard: CALL retardo
LOOP retard
INT 20h

inic_retardo PROC
PUSH AX
IN AL,61h
AND AL,11111101b
OR AL,1
JMP SHORT $+2
OUT 61h,AL
MOV AL,10110100b ; contador 2, modo 2, binario
JMP SHORT $+2
OUT 43h,AL
POP AX
RET
inic_retardo ENDP
retardo PROC
PUSH AX
PUSH BX
CLI
OUT 42h,AL ; parte baja de la cuenta
MOV AL,AH
JMP SHORT $+2
OUT 42h,AL ; parte alta
JMP SHORT $+2
IN AL,61h
XOR AL,1 ; bajar GATE
JMP SHORT $+2
OUT 61h,AL
XOR AL,1 ; subir GATE
JMP SHORT $+2
OUT 61h,AL
STI
JMP SHORT $+2
MOV BX,0FFFFh
retardando: MOV AL,10000000b
OUT 43h,AL ; enclavamiento
JMP SHORT $+2
IN AL,42h ; leer contador
MOV AH,AL
JMP SHORT $+2
IN AL,42h
XCHG AH,AL ; AX = valor del contador
CMP AX,BX
MOV BX,AX
JBE retardando
POP BX
POP AX
RET
retardo ENDP

programa ENDS
END inicio

El procedimiento inic_retardo programa el contador 2 en el modo 2, con datos en


binario y dejándolo 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 línea) evitan que las máquinas
AT más antiguas fallen en dos operaciones de E/S consecutivas demasiado rápidas. El
procedimiento retardo envía el nuevo valor de cuenta. A continuación baja y vuelve a
subir la señal GATE, con objeto de provocar un flanco de subida en esta línea, lo cual
provoca que el contador se cargue con el valor recién enviado de manera inmediata (de
lo contrario, no se recargaría hasta acabar la cuenta anterior). Finalmente, entramos en
un bucle donde se enclava continuamente la cuenta y se espera hasta que acabe. Lo más
intuitivo sería comprobar si la cuenta es cero, pero esto es realmente difícil ya que
cambia nada menos que ¡más de 1 millón 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
máquina más 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, están diseñadas para hacer pequeños retardos:
llamándolas repetidamente, el bucle que hay que hacer (y las interrupciones que se
producen durante el proceso) provoca que retarden más de la cuenta. Por ejemplo, en el
programa principal, poniendo 1200 en CX en lugar de 20, el retardo debería ser de 60
segundos; sin embargo, comparando este dato con el contador de hora de la BIOS (en
una versión ligeramente modificada del programa) resulta ser de casi 60,2 segundos. La
segunda consideración está relacionada con las interrupciones: de la manera que está el
listado, se puede producir una interrupción en la que algún 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 sólo las más molestas), aunque anular la interrupción del temporizador, la más
peligrosa, provocaría un retraso de la hora del ordenador.

Para hacer retardos o temporizaciones de más de 50 milisegundos, es más


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 también 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 algún 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 más rápida -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 AL,00110110b ; contador 0, operación 11b,


datos binarios
OUT 43h,AL
MOV BX,6553 ; valor de cuenta
MOV AL,BL
JMP SHORT $+2
OUT 40h,AL ; enviar byte bajo
MOV AL,BH
JMP SHORT $+2
OUT 40h,AL ; enviar byte alto
Un método genial para hacer retardos y controlar timeouts en AT.

Aunque ausente en todos los manuales de referencia técnica y en todos los libros
relacionados con la programación de PC, existe un método muy fácil 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 versión 5.0 del
sistema) lo utiliza en todos los AT, sin importar el modelo. Por ello, cabe suponer que
seguramente los futuros equipos mantendrán 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 través de un flip-flop) la generación de una onda
cuadrada de unos 33 KHz que puede leerse a través 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 función en ensamblador retardo_asm() del programa de ejemplo lo
ilustra. Este método es especialmente interesante en los programas residentes que
precisen retardos de precisión, para sonido u otras tareas, tales como limitar la duración
máxima de una comprobación en un bit de estado a unos milisegundos o microsegundos
(control de timeouts); la principal ventaja es que no se modifica en absoluto la
configuración de ningún chip que pueda estar empleando el programa principal,
empezando por el 8254. Además, no requiere preparación previa alguna. Para los más
curiosos, decir que el bit 5 del puerto 61h es la salida OUT del contador 2 del 8254 (la
línea OUT del contador 2 del 8253 de los PC/XT también puede consultarse a través del
bit 5, pero del puerto 62h).

El único inconveniente del método es la alta frecuencia con que cambia el bit: esta
misma rutina escrita en C podría no ser suficientemente ágil para detectar todas las
transiciones en las máquinas AT más 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 código compilado sea lo bastante rápido: utilizar las dos
variables registro que realmente soportan los compiladores y huir de la aritmética de 32
bits, como puede observarse en la función retardo_c() del programa de ejemplo. Una
mala codificación o compilador podrían hacer inservible el método incluso en una
máquina a 16 ó 20 MHz. Para no tener problemas, es mejor emplear la versión en
ensamblador, escrita en un C no mucho menos estándar. La macro MICRO() ayuda a
seleccionar con más comodidad el retardo, indicándolo en mus, aunque implica una
operación en coma flotante que por sí sola añade unos 100 mus de retardo adicionales
en un 386-25 sin coprocesador y con las librerías de Borland.

Anécdota: Para los más curiosos, decir que los programadores de Microsoft emplean este
método 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 duración
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 sólo es ejecutada en AT; en el
segundo, veréis 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 vacío en las demás máquinas). Esta nueva técnica ha
permitido eliminar respecto a anteriores versiones del programa algunos test sobre tipos de
ordenadores, cuya finalidad más común era ajustar las constantes de retardo. Son válidos tanto el
KEYB del MS-DOS 5.0 castellano como el del MS-DOS 6.0 en inglés o castellano
indistintamente (¡las direcciones indicadas coinciden!). También en las BIOS modernas suele
haber ejemplos de esta técnica, aunque las direcciones ya no coinciden...

/********************************************************************/
/* */
/* Programa de demostración del método de retardo basado en la */
/* monitorización de los ciclos de refresco de memoria del AT. */
/* */
/********************************************************************/

#include <dos.h>

#define MICRO(microseg) ((long)(microseg/15.08573727))

void retardo_asm(), retardo_c();

void main()
{
/* cuatro formas de hacer un mismo retardo de precisión */

retardo_asm (66267L); /* un segundo */


retardo_asm (MICRO(1000000L)); /* otro segundo (¡más claro!) */
retardo_c (66267L); /* ahora en C */
retardo_c (MICRO(1000000L)); /* la otra alternativa */
}

void retardo_asm (long cuenta) /* método 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) /* método en C no recomendado */


{
register a, b;
unsigned cuenta_h, cuenta_l;

cuenta_h=cuenta >> 16; cuenta_l=cuenta & 0xFFFF;

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

12.3.4 - SÍNTESIS DE SONIDO.

La producción de sonido es uno de los puntos más débiles de los ordenadores compatibles, que sólo
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 programación del
altavoz. En todos los PCs existen dos métodos diferentes para generar sonido, con la utilización del 8254
o sin él, que veremos por separado.

Control directo del altavoz.

El altavoz del ordenador está ligado en todas las máquinas al bit 1 del puerto E/S 61h. Si se hace
cambiar este bit (manteniéndolo durante cierto tiempo alto y durante cierto tiempo bajo, repitiendo el
proceso a gran velocidad) se puede generar una onda cuadrada de sonido. Cuanto más 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 más musical de forma involuntaria. No existe, en cualquier caso,
control sobre el volumen, que dada la calidad del altavoz también está en función de la frecuencia. Este
método de producción 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 más o menos ligada a la
capacidad de proceso del ordenador: esto significa que el sonido es más grave en máquinas lentas y más
agudo en las rápidas. 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 máquina 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 método 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
producción de sonido, sin poder realizar otras tareas mientras tanto.

Antes de comenzar a producir el sonido con este método hay que bajar la línea GATE del 8254, ya que
cuando está en alto y se activa también el bit 1 del puerto E/S 61h, el temporizador es el encargado de
producir el sonido (este es el segundo método, como veremos). Por tanto, es preciso poner primero a cero
el bit 0 del mismo puerto (61h):
CLI ; evitar posible INT 8, entre
otras
IN AL,61h
AND AL,11111110b
JMP SHORT $+2 ; estado de espera para E/S
OUT 61h,AL ; bajar GATE del contador 2
del 8254
MOV CX,100h ; 256 vueltas
otro_ciclo: PUSH CX
IN AL,61h
XOR AL,2 ; invertir bit 1
JMP SHORT $+2
OUT 61h,AL
MOV CX,300 ; constante de retardo
retardo: LOOP retardo
POP CX
LOOP otro_ciclo
STI
Control del altavoz por el temporizador.

El otro método posible consiste en emplear el contador 2 del temporizador conectado al altavoz; así,
enviando el período 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 idénticos en todos los ordenadores.
Existe el pequeño problema de que la duración del sonido ha de ser múltiplo de 1/18,2 segundos si se
desea utilizar el reloj del sistema para determinarla (un bucle de retardo sería, una vez más, dependiente
de la máquina) ya que el contador 2 está ahora ocupado en la producción de sonido y no se puede usar
para temporizar (al menos, no sin hacer malabarismos). Alternativamente, se podría evaluar la velocidad
de la CPU para ajustar las constantes de retardo o aumentar la velocidad de la interrupción periódica.

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 ; contador 2, modo 3,


operación 11b, datos binarios
OUT 43h,AL ; programar contador 2
MOV AX,2711 ; 1.193.180 / 440 Hz (nota
LA) = 2711
JMP SHORT $+2
OUT 42h,AL
MOV AL,AH
JMP SHORT $+2
OUT 42h,AL ; frecuencia programada
JMP SHORT $+2
IN AL,61h
OR AL,00000011b
JMP SHORT $+2
OUT 61h,AL ; altavoz sonando
MOV CX,0
demora: LOOP demora ; esperar un cierto tiempo
por el peor método
IN AL,61h
AND AL,11111100b
JMP SHORT $+2
OUT 61h,AL ; altavoz callado

Las frecuencias en Hz de las distintas notas musicales están oficialmente definidas y los músicos
suelen tenerlas en cuenta a la hora de afinar los instrumentos. La escala cromática 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 fórmula de abajo permite obtener las
frecuencias de las notas asignándolas un número (a partir de 6 y hasta 88; el LA de 440 Hz es la nota 49)
con una precisión razonable, máxime teniendo en cuenta que van a ir a parar al altavoz del PC. Tal
curiosa relación se verifica debido a que la respuesta del oído humano es logarítmica, lo que ha permitido
reducir a simples matemáticas el viejo saber milenario de los músicos.

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

2.8.1 Reloj de sistema.


Acceso a memoria y el reloj del sistema

El acceso a memoria es probablemente la actividad más común de un CPU, se


trata en definitiva de una operación sincronizada al reloj del sistema, esto es, la
lectura o escritura no puede ser más rápida 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 número de ciclos de reloj que el sistema necesita para
acceder a una ubicación de memoria, este es un valor importante ya que a mayor
número de ciclos menor desempeño. El tiempo de acceso a memoria es la cantidad
de tiempo que transcurre desde que se solicita una operación (sea de lectura ó
escritura) y el tiempo en que la memoria completa dicha operación. 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 más rápido que en el caso del procesador
80x86 porque éste último consume más ciclos de reloj para el acceso a memoria
además del incremento en la velocidad de reloj.

Los dispositivos de memoria presentan varias características pero las principales


son su capacidad de almacenamiento y el tiempo de acceso. Una memoria de
acceso aleatorio (RAM) típica tiene una capacidad de 16 ó más megabytes y un
tiempo de acceso de 70 nanosegundos ó menos, con estos datos seguramente se
estará preguntando cómo es posible que éstas memorias relativamente lentas
trabajan en procesadores mucho más rápidos. La respuesta son los estados de
espera. Un estado de espera es una señal 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 más estados de espera tiene el mismo
efecto que reducir proporcionalmente la velocidad de reloj, obviamente introducir
estados de espera no es una opción deseable por la reducción en el desempeño del
sistema. Los diseñadores 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, físicamente se encuentra entre el CPU y los
módulos de memoria RAM, su función es evitar la generación de estados de espera
por parte de los módulos de memoria RAM y así aprovechar al máximo 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 módulos de memoria RAM y por lo tanto
generando estados de espera, cuando ocurre éste fenómeno se le llama pérdida
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 pérdida en
memoria cache está entre 85 y 90%. Este rendimiento disminuye al aumentar la
cantidad de memoria cache y por esta razón la memoria cache es relativamente
pequeña, 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 sincronización de procesos, en la calendarización de
trabajos por lote y para la asignación de turnos de ejecución 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 periódica. El reloj de mayor frecuencia sirve para controlar el tiempo de
ejecución de los procesos, para despertar los procesos que están '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 duración que almacena estos datos y que se programan de fábrica
por primera vez. Así, aunque se suspenda la energía la fecha permanece. Para lanzar
procesos (chequeo de tiempo ocioso de un dispositivo, terminación 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 ejecución, 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 ejecución de su programa. La
llegada de una interrupción provoca que la CPU suspenda la ejecución de un programa
e inicie la de otro (rutina de servicio de interrupción). Como las interrupciones pueden
producirse en cualquier momento, es muy probable que se altere la secuencia de sucesos
que el programador había previsto inicialmente. Es por ello que las interrupciones deber
controlarse cuidadosamente.
De esta forma, podemos resumir todas las etapas seguidas ante una interrupción en un
sistema dotado de vectorización. Estos pasos son los siguientes:

1.- El dispositivo envía la solicitud de interrupción mediante la línea INTR.

2.- El procesador termina la ejecución de la instrucción en curso y analiza la línea de


petición de interrupción, INTR. Si esta línea no está activada continuará normalmente
con la ejecución de la siguiente instrucción, en caso contrario se pasa a la etapa
siguiente.

3.- La CPU reconoce la interrupción, para informar al dispositivo de ello, activa la línea
de reconocimiento de interrupción, INTA.

4.- El dispositivo que reciba la señal INTA envía el código de interrupción por el bus de
datos.

5.- La CPU calcula la dirección de memoria donde se encuentra la rutina de servicio de


interrupción (vector de interrupción).

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 dirección de la rutina de servicio de interrupción se carga en el contador de


programa, con lo que se pasa el control a la citada rutina.

8.- La ejecución continúa hasta que el procesador encuentre la instrucción de retorno de


interrupción.

9.- Cuando se encuentre la instrucción de retorno de interrupción se restaura el estado


del procesador, en especial el contador de programa, y se devuelve el control al
programa interrumpido.

Normalmente la primera instrucción 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 volverán a habilitar si es necesario.

http://www.mailxmail.com/curso/informatica/arquitecturaordenadores/ca
pitulo17.htm
Hay cuatro categorías principales de interrupciones:
1) En primer lugar, hay interrupciones generadas por la circuitería del ordenador en
respuesta a algún acontecimiento, tal como la pulsación de una tecla. Estas
interrupciones están manejadas por el chip controlador de interrupciones (el 8259,
también conocido como PIC), que l as prioriza antes de enviarlas a la CPU para que
actúe. A estas interrupciones se les suele llamar interrupciones hardware.
2) En segundo lugar, hay interrupciones que son generadas por la CPU como resultado
de algún suceso inusual producido por el programa como, por ejemplo, una división 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 también un tipo especial de interrupción, llamada interrupción no
enmascarable (NMI), que se utiliza para solicitar la atención inmediata de la CPU. A
menudo indica que se ha producido una emergencia, como, por ejemplo, una caída de
voltaje, o un error de paridad de memoria. Cuando se envía 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 razón, también se las llama enmascarables; el resto de
las interrupciones que interceptan errores especiales, como la división por cero, no se
pueden enmascarar. Se pueden aducir dos razones para desactivar las interrupciones
hardware:
a) Cuando se necesita ejecutar un fragmento de código especialmente crítico antes de
que suceda ninguna otra tarea en el ordenador, interesa que todas las interrupciones
queden bloqueadas. Por ejemplo, cuando se quiere hacer algún cambio en la tabla de
vectores de interrupción.
b) A veces interesa enmascarar ciertas interrupciones hardware cuando éstas pueden
interferir en alguna actividad cuya dependencia temporal sea crítica. Por ejemplo, si se
está ejecutando una rut ina de E/S cuya temporización tiene que estar exquisitamente
controlada, uno no puede permitirse el lujo de esperar "aparcado" mientras se ejecuta
una lenta interrupción de disco.
En el primer caso, se ha de tener en cuenta que en último término, la ejecución de todas
las interrupciones descansa sobre el flag de interrupción (bit 9) del registro de estado
(flags de estado) del procesador. Cuando este bit toma el valor 0, acepta cualquier
solicitud de interrupción que permita el registro de máscaras de int errupción.
Cuando es uno, no se permiten interrupciones hardware. Para hacer que este flag tome
el valor cero, desactivando así las interrupciones, se utiliza la instrucción CLI. Para
volver a poner el flag a uno, autorizando de nuevo las interrupciones, se utiliza la
instrucción 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 más de una solicitud de interrupción simultáneamente, por lo que el chip
establece una jerarquía de prioridades. Existen ocho niveles de prioridad, excepto en el
AT, que tiene dieciséis, 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 interrupción
(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 contraposición 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 interrupción a los


distintos periféricos:
¡Error! Marcador no definido.
El 8259 posee tres registros de un byte que controlan y gestionan las ocho (o dieciséis)
líneas de interrupción hardware, pero a nosotros sólo nos interesa el registro de máscara
de interrupciones (IMR). El 8259 emplea este registro para averiguar si una interrupción
de un determinado nivel está permitida en cualquier momento. Para desactivar
interrupciones hardware concretas, se envía un patrón de bits al puerto 21h
(INT_CTLMASK), que es la dirección del registro de máscaras de interrupción (IMR).
El registro de máscara del segundo chip 8259 del AT se sitúa en el puerto A1h
(INT2_CTLMASK). En este patrón de bits, se ponen a uno los bits que corresponden a
los números de interrupción que se desea enmascarar.

2.9.1 Enmascarable.
Interrupción enmascarable:
La solicitud de interrupción enmascarable se realiza a través de la entrada
INTR (Interrupt Request). INTR solicita una interrupción de “tipo” variable
que se determina en el ciclo de reconocimiento.
INTR, es una entrada activa por nivel alto, que se muestrea durante el
último ciclo de reloj de cada instrucción (hay instrucciones especiales en
que esto no se cumple, ver nota). En ese momento se determina si el micro
debe continuar ejecutando la próxima instrucción o debe ingresar en el ciclo
de reconocimiento de interrupción.
Para que el pedido sea reconocido, INTR debe permanecer en alto (al
menos) durante el último ciclo de reloj de la ejecución de la instrucción en
curso. Luego INTR puede bajar en cualquier momento después del flanco
descendente del primer pulso de INTA, dentro de la secuencia de
reconocimiento.
Esta línea puede “enmascararse” a través de un bit interno del micro (IF:
interrupt enable flag bit) que se ubica en el Flag Register. Si la máscara se
encuentra activada (IF=0) la línea es ignorada. Si por el contrario IF=1, el
pedido es aceptado y se dará inicio al ciclo de INTA.
La máscara permite condicionar la atención de las solicitudes de
interrupción que ingresan a través de INTR. Esto es fundamental para
permitir o no el anidamiento de rutinas de atención de interrupciones de
esta clase.
Es importante ver que, cuando comienza la ejecución de la rutina de
atención de la interrupción, IF debe pasar a 0 al menos hasta que la línea
INTR pase a bajo. Si esto no fuera así, solo llegaría a ejecutarse la primera
instrucción de esta rutina y el micro comenzaría nuevamente con otro ciclo
de reconocimiento.
Conceptualmente: las interrupciones activas por nivel deben ser
enmascarables.

Nota: Una excepción es la instrucción WAIT que espera un nivel bajo en la


entrada TEST para continuar con el programa. Esta instrucción muestrea
continuamente la entrada de interrupciones “durante” su ejecución,
permitiendo la atención de interrupciones en el interior de la “espera”.
Cuando finaliza la rutina de atención, el micro retorna a ejecutar la
instrucción WAIT.

Interrupción enmascarable significa que, bajo control del software, el


procesador puede aceptar o ignorar (enmascarar) la señal de interrupción.
Para ello se envía una señal a la patilla INTR , y el procesador la atiende o la
ignora en función del contenido de un bit (IF) en un registro (FLAGS) que
puede estar habilitado o deshabilitado ( H3.2). En el primer caso, cuando se
recibe la señal, el procesador concluye la instrucción que estuviese en proceso
y a continuación responde con una combinación de señales en algunas de sus
patillas componiendo una sucesión de dos señales INTA ("Interrupt
Acknowledge" H3.2.1).

La primera señal es simplemente un aviso; la segunda es una petición para que


el PIC coloque en el bus de datos un Byte con el número de interrupción, de
forma que el procesador pueda localizar el servicio solicitado.

El valor recibido (0-255) es multiplicado por 4 para calcular la dirección del


vector correspondiente en la tabla de vectores de interrupción, lo que se realiza
mediante un desplazamiento binario de dos posiciones a la izquierda (
4.9.3). A continuación, el procesador salva en la pila los valores del registro de
estado ( H3.2), del contador de programa (PC) y del segmento de código
(CS); deshabilita el bit IF del registro de estado, para que la interrupción no
pueda ser molestada con una nueva interrupción enmascarable hasta que sea
específicamente permitido, y finalmente ejecuta el servicio.

La penúltima secuencia de la rutina de servicio es enviar una señal de que la


interrupción ha terminado (EOI) para que el PIC pueda seguir enviando
interrupciones. A continuación debe restaurar los registros a su estado inicial
(existente antes de que se produjera la interrupción).

La señal de terminación del servicio de la interrupción EOI ("End of


interrupt") es la siguiente secuencia:
MOV DX, PIC0
MOV AL, EOI
OUT DX, AL

La primera instrucción mueve el contenido PIC0 al registro DX


(PIC0 es el nemónico de la dirección más baja de puerto A0 = 0).

La segunda mueve el valor EOI (nemónico del valor 20h) al registro


AL.

La tercera es una sentencia de escritura a puerto; escribe el


contenido del registro AL (el valor EOI puesto en la sentencia
anterior) en el puerto señalado por el contenido del registro DX
(establecido en la primera instrucción).

Para facilitar el manejo de interrupciones, el 8088 y sucesores disponen de


algunas instrucciones específicas:
• IRET Retorno de interrupción ("Interrupt Return"). Recupera de la pila
el contador de programa PC; el segmento de código CS (lo que supone
devolver el programa al punto de ejecución original), y el registro de
estado FLAGS (lo que supone devolver las interrupciones
enmascarables al estado inicial).
• CLI Limpiar la interrupción ("Clear Interrupt"); pone a cero el registro
IF, deshabilitando las interrupciones enmascarables.
• STI Es la instrucción opuesta ("Set Interrupt") pone a 1 el registro IF
habilitando las interrupciones enmascarables.

La idea importante a resaltar aquí, es que el PIC asocia un número entre 0


y 255 a cada petición. Este número, que se conoce como número de
interrupción, no debe ser confundido con el número de línea IRQ's que
realizó la solicitud. El número de interrupción sirve para identificar el servicio
mediante la tabla IDT . Una vez ejecutado el servicio, deben dejarse las
cosas como estaban para que el programa original pueda continuar su
ejecución.
http://www.zator.com/Hardware/H2_4.htm

2.9.2 No-enmascarable.
Interrupción no enmascarable
La solicitud de interrupción no enmascarable se realiza a través de la
entrada NMI (Non maskable Interrupt). NMI solicita una interrupción de
“tipo” fijo igual a 2, por lo tanto no es necesario que se realice un ciclo de
INTA.
NMI es una entrada asincrónica activa por flanco ascendente. El flanco
ascendente en la entrada de NMI, se lachea en el interior del micro hasta
que la instrucción en curso finaliza.
No es enmascarable por lo que su atención es inevitable. Esto hace que,
independiente de la estructura que se monte para las interrupciones
enmascarables, puede pensarse que, NMI es siempre la interrupción más
prioritaria ya que puede interrumpir la ejecución de cualquier servicio
generado por INTR.
Para que el pedido se haga efectivo, la entrada debe permanecer en alto, al
menos dos ciclos de reloj, hasta que el micro la reconozca. La línea puede
bajar antes, durante o después del servicio de NMI.
Para que el micro vuelva a reconocer otro pedido, la línea debe haber
permanecido en bajo al menos dos ciclos de reloj después de haber bajado.
Debe tenerse especial cuidado en que no haya flancos espurios en el
circuito de NMI que puedan generar interrupciones indeseables.
NMI, se usa para situaciones graves que requieran atención incondicional
del micro. Un uso típico de NMI, es la ejecución de la rutina para caídas de
alimentación del sistema o sistemas de watch - dog.
Es importante ver que, como NMI es no enmascarable, no podría ser activa
por nivel, ya que sería imposible impedir que se repita el comienzo de la
atención cuando se ejecuta la primera instrucción de la rutina de servicio.
Conceptualmente: las interrupciones no enmascarables deben ser activas
por flanco.

Interrupción no enmascarable significa que la interrupción no puede ser


deshabilitada por software. Este tipo de interrupciones ocurren cuando se
recibe una señal en la patilla NMI ("Nonmaskable Interrupt" §5 ) del
procesador. Se reservan para casos en que es crítica la respuesta, por
ejemplo que se detecte un error de paridad en la memoria. Además son de
prioridad más alta que las enmascarables.
Nota: La única forma de enmascarar estas interrupciones es a
través de circuitos externos al procesador, por ejemplo a nivel del
PIC.

Cuando el procesador recibe una de estas instrucciones no se genera ningún


ciclo de reconocimiento de la instrucción (INTA), y el procesador le asigna un 2
como número de excepción.
http://www.zator.com/Hardware/H2_4.htm

Ciclo de reconocimiento de interrupción:


Este ciclo, también llamado ciclo de INTA, se utiliza para detectar el “tipo”
de interrupción que desea ejecutarse como resultado de la solicitud que
ingresa por INTR.
Esta secuencia de reconocimiento se genera solo como respuesta a una
interrupción proveniente de INTR.
En realidad el ciclo de reconocimiento está formado por dos ciclos de INTA,
cada uno de ellos es muy similar a un ciclo de lectura. En el segundo ciclo
de INTA, se lee un byte del bus de datos que identifica el “tipo” de la
interrupción.
Por tanto, INTA (Interrupt Aknowledge) es la salida de reconocimiento de
interrupción y se usa como pulso de lectura del “tipo” en el ciclo de INTA. Es
activa en bajo y pasa a este valor durante T2, T3 (y Tw) de los ciclos de
reconocimiento de interrupción. Su objetivo es avisar al dispositivo
solicitante que su pedido de interrupción ha sido aceptado y que debe
notificar al micro cuál es el “tipo” de interrupción que pide.
Segundo ciclo de INTA detallado:

Nota: Durante el ambos ciclos de INTA, el bus AD está flotante.

Atención de Interrupción:
Previo al comienzo de la ejecución de la rutina de servicio de interrupción, y
como parte de la respuesta a cualquier interrupción (o pseudo interrupción)
el micro realiza una serie de tareas que forman parte de la secuencia de
ejecución de una interrupción.
En los casos en donde exista (INTR), la secuencia de ejecución se realiza
luego de la de reconocimiento.
Las acciones que forman esta secuencia son:
PUSH del registro de banderas, el CS y el IP en la pila.
 Reset de los bits de trampa y de máscara para que , al menos por
default, la rutina de ejecución de interrupción no sea ejecutada en modo
paso a paso, ni sea interrumpida por interrupciones enmascarables (ver
nota).
 Carga de los nuevos CS e IP (provenientes de la IVT).
Luego de estas acciones, se ejecuta la primera instrucción de la rutina de
atención.
Nota: Estos dos bits pueden se re habilitados en el interior de la rutina de
servicio de la
interrupción, permitiendo la ejecución paso a paso de esa rutina (ojo no se
puede hacer en la ejecución de la rutina de atención de paso a paso) o
permitir que otra interrupción enmascarable sea atendida durante la
ejecución de una interrupción dada (anidamiento).
En resumen:
Cada vez que el micro finaliza la ejecución de una instrucción, comprueba
(en este orden):
Si está activa la trampa (TF=1)
 Si hubo pedido NMI
 Si hay overflow en el segmento del coprocesador
 Si hay INTR
 Si la próxima es una instrucción INT
Si se da alguna de estas condiciones, entonces se produce la siguiente
secuencia:
 Si hay un INTR, se realiza la secuencia de reconocimiento de interrupción.
 Se salva el contenido del registro de banderas en pila
 Se desactivan la máscara de interrupción IF y el TF
 Se salva el contenido del CS en la pila
 Se salva el contenido del IP en la pila
 Se recupera el contenido del vector de interrupción y se carga el CS y el
IP en con su contenido de manera que el micro continúe ejecutando donde
ellos indiquen.
Tanto en la INTR como en la NMI, los tiempos de demora entre la activación
del pedido y la ejecución de la primera instrucción de la rutina de servicio,
dependen de la instrucción que se esté ejecutando en el momento de esa
activación.
Los tiempos que si pueden determinarse en forma exacta son los de demora
entre el final de la instrucción en curso y el comienzo de la primera
instrucción de la rutina de servicio.
Por ejemplo, en el caso de una INTR, el retardo desde el final de la
instrucción durante la cual ocurrió la interrupción, hasta el comienzo de la
ejecución de la primera instrucción de la rutina de atención, es de 61 ciclos
de reloj.
En las interrupciones generadas por soft no hay ciclos de INTA. Esto reduce
el

2.10 Acceso Directo a memoria.


Acceso Directo a Memoria (DMA)
El acceso directo a memoria se inventó con el propósito de liberar al CPU de la carga de
atender a algunos controladores de dispositivos. Para comprender su funcionamiento
vale la pena revisar cómo trabaja un controlador sin DMA. Cuando un proceso requiere
algunos bloques de un dispositivo, se envia una señal al controlador con la dirección del
bloque deseado. El controlador lo recibe a través del 'bus' y el proceso puede estar
esperando la respuesta (trabajo síncrono) o puede estar haciendo otra cosa (trabajo
asíncrono). El controlador recibe la señal y lee la dirección del bus. Envía a su vez una o
varias señales al dispositivo mecánico (si es que lo hay) y espera los datos. Cuando los
recibe los escribe en un buffer local y envía una señal al CPU indicándole que los datos
están listos. El CPU recibe esta interrupción y comienza a leer byte por byte o palabra
por palabra los datos del buffer del controlador (a través del device driver) hasta
terminar la operación.

Como se ve, el CPU gasta varios ciclos en leer los datos deseados. El DMA soluciona
ese problema de la manera siguiente. Cuando un proceso requiere uno o varios bloques
de datos, el CPU envía al controlador la petición junto con el número de bytes deseados
y la dirección de en dónde quiere que se almacenen de regreso. El DMA actuará como
un 'cpu secundario' [Stal92] en cuanto a que tiene el poder de tomar el control del 'bus' e
indicarle al verdadero CPU que espere. Cuando el controlador tiene listos los datos, el
DMA 'escucha' si el 'bus' está libre aprovechando esos ciclos para ir leyendo los datos
del buffer del controlador e ir escribiéndolos en el área de memoria que el CPU le
indicó. Cuando todos los datos fueron escritos, se le envía una interrupción al CPU para
que use los datos. El ahorro con el DMA es que el CPU ya no es interrumpido (aunque
sí puede ser retardado por el DMA) salvando así el 'cambio de contexto' y además el
DMA aprovechará aquellos ciclos en que el 'bus' no fue usado por el CPU.

El hecho de que los controladores necesiten buffers internos se debe a que conforme
ellos reciban datos de los dispositivos que controlan, los deben poder almacenar
temporalmente, ya que el CPU no está listo en todo momento para leerlos.

http://www.tau.org.ar/base/lara.pue.udlap.mx/sistoper/capitulo6.html

Acceso Directo a Memoria (DMA)

Muchos controladores, especialmente los correspondientes a dispositivos de bloque,


permiten el DMA.

Si se lee el disco sin DMA:

• El controlador lee en serie el bloque (uno o más sectores) de la unidad:


o La lectura es bit por bit.
o Los bits del bloque se graban en el buffer interno del controlador.
• Se calcula la suma de verificación para corroborar que no existen errores de
lectura.
• El controlador provoca una interrupción.
• El S. O. lee el bloque del disco por medio del buffer del controlador:
o La lectura es por byte o palabra a la vez.
o En cada iteración de este ciclo se lee un byte o una palabra del registro
del controlador y se almacena en memoria.
• Se desperdicia tiempo de la cpu.

DMA se ideó para liberar a la cpu de este trabajo de bajo nivel.

La cpu le proporciona al controlador:

• La dirección del bloque en el disco.


• La dirección en memoria adonde debe ir el bloque.
• El número de bytes por transferir.

Luego de que el controlador leyó todo el bloque del dispositivo a su buffer y de que
corroboró la suma de verificación:

• Copia el primer byte o palabra a la memoria principal.


• Lo hace en la dirección especificada por medio de la dirección de memoria de
DMA.
• Incrementa la dirección DMA y decrementa el contador DMA en el número de
bytes que acaba de transferir.
• Se repite este proceso hasta que el contador se anula y por lo tanto el controlador
provoca una interrupción.
• Al iniciar su ejecución el S. O. luego de la interrupción provocada, no debe
copiar el bloque en la memoria, porque ya se encuentra ahí (ver Figura 5.1 [23,
Tanenbaum]).

El controlador necesita un buffer interno porque una vez iniciada una transferencia del
disco:

• Los bits siguen llegando del disco constantemente.


• No interesa si el controlador está listo o no para recibirlos.
• Si el controlador intentara escribir los datos en la memoria directamente:
o Tendría que recurrir al bus del sistema para c / u de las palabras (o bytes)
transferidas.
o El bus podría estar ocupado por otro dispositivo y el controlador debería
esperar.
o Si la siguiente palabra llegara antes de que la anterior hubiera sido
almacenada, el controlador la tendría que almacenar en alguna parte.

Si el bloque se guarda en un buffer interno:

• El bus no se necesita sino hasta que el DMA comienza.


• La transferencia DMA a la memoria ya no es un aspecto crítico del tiempo.

Los controladores simples no pueden atender la e / s simultánea:

• Mientras transfieren a la memoria, el sector que pasa debajo de la cabeza del


disco se pierde; es decir que el bloque siguiente al recién leído se pierde.
• La lectura de una pista completa se hará en dos rotaciones completas, una para
los bloques pares y otra para los impares.
• Si el tiempo necesario para una transferencia de un bloque del controlador a la
memoria por medio del bus es mayor que el tiempo necesario para leer un
bloque del disco:
o Sería necesario leer un bloque y luego saltar dos o más bloques.
o El salto de bloques:
 Se ejecuta para darle tiempo al controlador para la transferencia
de los datos a la memoria.
 Se llama separación.
 Al formatear el disco, los bloques se numeran tomando en cuenta
el factor de separación (ver Figura 5.2 [23, Tanenbaum]).
 Esto permite al S. O.:
 Leer los bloques con numeración consecutiva.
 Conservar la máxima velocidad posible del hardware.

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO5.htm

2.10.1 Sistema de video.


2.10.2 Sistema de discos.
2.10.3 Otras aplicaciones.

Unidad 3. Selección de componentes


para ensamble de equipos de
cómputo.
3.1 Chip Set.
El "chipset" es el conjunto (set) de chips que se encargan de controlar determinadas funciones
del ordenador, como la forma en que interacciona el microprocesador con la memoria o la
caché, o el control de los puertos y slots ISA, PCI, AGP, USB...

Antiguamente estas funciones eran relativamente sencillas de


realizar y el chipset apenas influía en el rendimiento del ordenador,
por lo que el chipset era el último elemento al que se concedía
importancia a la hora de comprar una placa base, si es que alguien
se molestaba siquiera en informarse sobre la naturaleza del mismo.
Pero los nuevos y muy complejos micros, junto con un muy amplio
abanico de tecnologías en materia de memorias, caché y
periféricos que aparecen y desaparecen casi de mes en mes, han
hecho que la importancia del chipset crezca enormemente.

De la calidad y características del chipset dependerán:


• Obtener o no el máximo rendimiento del microprocesador.
• Las posibilidades de actualización del ordenador.
• El uso de ciertas tecnologías más avanzadas de memorias y periféricos.

Debe destacarse el hecho de que el uso de un buen chipset no implica que la placa base
en conjunto sea de calidad. Como ejemplo, muchas placas con chipsets que darían soporte a
enormes cantidades de memoria, 512 MB o más, no incluyen zócalos de memoria para más de
128 ó 256. O bien el caso de los puertos USB, cuyo soporte está previsto en la casi totalidad de
los chipsets de los últimos dos años pero que hasta fecha reciente no han tenido los conectores
necesarios en las placas base.

Trataremos sólo los chipsets para Pentium y superior, ya que el chipset de un 486 o inferior no
es de mayor importancia (dentro de un límite razonable) por estar en general todos en un nivel
similar de prestaciones y rendimiento, además de totalmente descatalogados. Tampoco
trataremos todas las marcas, sino sólo las más conocidas o de más interés; de cualquier forma,
muchas veces se encuentran chipsets aparentemente desconocidos que no son sino chipsets
VIA, ALI o SIS bajo otra marca.

Chipsets para Pentium y Pentium MMX


De Intel (Tritones)

Fueron la primera (y muy exitosa) incursión de Intel en el mundo de los chipsets, mundo en el
cual ha pasado de no fabricar prácticamente ninguno a tener un monopolio casi total, que es la
forma en que a Intel le gusta hacer los negocios. Esto no resulta extraño, ya que nadie mejor
que Intel conoce cómo sacar partido a sus microprocesadores; además, el resto de fabricantes
dependen de la información técnica que les suministra Intel, que lo hace cuando y como quiere.

• 430 FX: el Tritón clásico, de apabullante éxito. Un chipset bastante apropiado para los
Pentium "normales" (no MMX) con memorias tipo EDO. Hoy en día desfasado y
descatalogado.
• 430 HX: el Tritón II, la opción profesional del anterior. Mucho más rápido y con soporte
para placas duales (con 2 micros). Algo anticuado pero muy bueno.
• 430 VX: ¿el Tritón III? Más bien el 2.5; algo más lento que el HX, pero con soporte para
memoria SDRAM. Se puede decir que es la revisión del FX, o bien que se sacó para
que la gente no se asustara del precio del HX...
• 430 TX: el último chipset de Intel para placas Pentium (placas socket 7). Si queremos
usar micros Intel y aplicaciones que se contenten con placas con 1 Pentium, la opción
a elegir. Soporte MMX, SDRAM, UltraDMA... Un problema: si se le pone más de 64 MB
de RAM, la caché deja de actuar; aunque más de 64 MB es mucha RAM.

Chipsets de Intel para Pentium y Pentium MMX

Concepto 430 FX 430 HX 430 VX 430 TX

Número CPUs máx. 1 2 1 1

RAM máxima 128 MB 512 MB 128 MB 256 MB

Tipos de RAM FPM, EDO FPM, EDO, SDRAM

RAM cacheable 64 MB 512 MB (según 64 MB


máxima placa, no todas)

Caché L2 máxima 512 KB

Velocidad bus máx. 66 MHz


Puertos adicionales USB UltraDMA y USB

Comentarios Desfasado No adecuados para micros no Intel de nueva generación


(no soportan AGP ni bus 100 MHz)

Lo más destacable de estos chipsets, su buen rendimiento, especialmente con micros Intel. Lo
peor, su escaso soporte para micros no Intel, que en el campo socket 7 tienen desarrollos
superiores a los de Intel, como los AMD K6 (normal y K6-2) o los Cyrix-IBM 6x86MX (M2), en
general más avanzados que los Pentium y Pentium MMX.

De VIA (Apollos)

Unos chipsets bastante buenos, se caracterizan por tener soporte para casi todo lo imaginable
(memorias SDRAM o BEDO, UltraDMA, USB...); su pelea está en la gama del HX o TX, aunque
suelen ser algo más lentos que éstos al equiparlos con micros Intel, no así con micros de AMD
o Cyrix-IBM.

Chipsets de VIA para Pentium y Pentium MMX

Concepto VP2 VPX VP3 MVP3

Número CPUs máx. 1

RAM máxima 512 MB 1 GB

Tipos de RAM FPM, EDO, BEDO, SDRAM FPM, EDO, SDRAM

RAM cacheable 512 MB (según placa, no todas) 512 MB ó 1 GB (según placa, no


máxima todas)

Caché L2 máxima 2048 KB

Velocidad bus máx. 66 MHz 75 MHz 66 MHz 100 MHz

Puertos adicionales UltraDMA y USB UltraDMA, USB y AGP

Comentarios No adecuados para micros no Intel de Sin bus a 100 Muy moderno, con
nueva generación (no soportan AGP MHz todos los avances
ni bus 100 MHz)

Lo bueno de las placas con chipsets VIA es que siguen en el mercado socket 7, por lo que
tienen soporte para todas las nuevas tecnologías como el AGP o los buses a 100 MHz, además
de que su calidad suele ser intermedia-alta. En las placas con chipsets Intel hay un abanico
muy amplio entre placas muy buenas y otras francamente malas, además de estar ya
desfasadas (ningún chipset Intel para socket 7 soporta AGP, por ejemplo).

El último chipset de VIA para socket 7, el MPV3, ofrece todas las prestaciones del BX de Intel
(excepto soporte para placas duales), configurando lo que se denomina una placa Super 7 (con
AGP y bus a 100 MHz), que con un micro como el nuevo AMD K6-2 no tiene nada que envidiar
a un equipo con Pentium II.

De ALI

Muy buenos chipsets, tienen soluciones tan avanzadas como el chipset para placas Super 7
"Aladdin V", que como el MPV3 de VIA resulta equiparable a todos los efectos al BX de Intel
para placas Pentium II (bus a 100 MHz, AGP...); una fantástica elección para micros como el
AMD K6-2.
Chipsets de ALI para Pentium y Pentium MMX

Concepto M1521/M1523 (Aladdin M1531/M15X3 (Aladdin M1541/M1543 (Aladdin


III) IV-IV+) V)

Número CPUs máx. 1

RAM máxima 1 GB

Tipos de RAM FPM, EDO, SDRAM FPM, EDO, SDRAM,


PC100

RAM cacheable 512 MB (según placa, no todas)


máxima

Caché L2 máxima 1 MB

Velocidad bus máx. 75 MHz 83,3 MHz 100 MHz

Puertos adicionales USB UltraDMA y USB UltraDMA, USB y AGP

Comentarios Apropiados para micros no Intel pero no de última Muy moderna, con todos
generación (AMD K6-2) por carecer de bus a 100 los avances
MHz

De SiS

Como los anteriores, sus capacidades son avanzadas, aunque su velocidad sea a veces algo
más reducida que en los de Intel. Resultan recomendables para su uso junto a chips
compatibles Intel como el K6 de AMD o el 6x86MX (M2) de Cyrix-IBM, aunque
desgraciadamente no soportan por ahora el bus a 100 MHz del nuevo K6-2.

Chipsets de SIS para Pentium y Pentium MMX

Concepto 5597/5598 5581/5582 5591/5592

Número CPUs máx. 1

RAM máxima 384 MB 768 MB

Tipos de RAM FPM, EDO, SDRAM

RAM cacheable máxima 128 MB 256 MB

Caché L2 máxima 512 KB 1 MB

Velocidad bus máx. 75 MHz 83 MHz

Puertos adicionales UltraDMA, USB y SVGA UltraDMA y USB UltraDMA, USB y AGP
integrada

Comentarios Apropiados para micros no Intel (especialmente Cyrix) pero no los de última
generación (AMD K6-2) por carecer de bus a 100 MHz
Chipsets para Pentium II y Celeron
De Intel

A decir verdad, aún sin competencia seria, lo que no es de extrañar teniendo el Pentium II sólo
un añito... y siendo de Intel. Son bastante avanzados, excepto el anticuado 440 FX (que no es
propiamente un chipset para Pentium II, sino más bien para el extinto Pentium Pro) y el barato
EX, basado en el LX pero con casi todas las capacidades reducidas.

Chipsets de Intel para Pentium II y Celeron

Concepto 440 FX 440 LX 440 BX 440 EX

Número CPUs máx. 2 1

RAM máxima 512 MB 1 GB EDO ó 512 1 GB 256 MB


MB SDRAM

Tipos de RAM FPM, EDO FPM, EDO, SDRAM y PC100 FPM, EDO,
SDRAM SDRAM SDRAM

RAM cacheable
máxima
No aplicable (dentro del microprocesador, tamaño fijo)
Caché L2 máxima

Velocidad bus máx. 66 MHz 100 MHz 66 MHz

Puertos adicionales UltraDMA y USB UltraDMA, USB y AGP

Comentarios Desfasado Apropiado sólo


para Celeron

De otras marcas

No son demasiados, pero los que hay tienen todas las capacidades que hacen falta en una
placa Pentium II. El problema con el que se encuentran no es su falta de eficacia, ya que
aunque los de Intel están algo más rodados, el rendimiento es muy similar; pero el hecho de
que durante un año la gente sólo haya oído hablar de FX, LX, BX y EX hace difícil que entren
en un mercado donde Intel tiene un monopolio absoluto.

Chipsets de otras marcas para Pentium II y Celeron

Concepto VIA Apollo Pro ALI Aladdin Pro II SIS 5601


M1621/M15X3

Número CPUs máx. 1 ó más dependiendo de la placa

RAM máxima 1 GB 1 GB SDRAM ó 2 GB


FPM o EDO

Tipos de RAM FPM, EDO, SDRAM, PC100 SDRAM

RAM cacheable No aplicable (dentro del microprocesador, tamaño ?


máxima fijo)

Caché L2 máxima
Velocidad bus máx. 100 MHz

Puertos adicionales UltraDMA, USB y AGP

Comentarios Muy avanzados, equivalentes al Intel BX En proyecto

Glosario de términos relacionados


Resulta muy bonito saber que el chipset soporta esto o aquello, pero si saber qué es esto o
aquello no vamos a ningún lado. Los términos más importantes a conocer son:

• AGP: un tipo de puerto o slot especializado para gráficos 3D.


• Bus (del sistema): el canal por el que se comunica el micro con la memoria y
habitualmente con la caché L2. Cuanto más ancho sea, mejor, especialmente para
micros muy rápidos.
• Caché L2: la caché secundaria o de nivel 2 (level 2). Es la memoria caché externa, que
acelera el rendimiento del ordenador; cuanta más memoria RAM tengamos, más caché
necesitaremos (por ejemplo, unos 512 KB para 32 MB de RAM).
• PC100: el tipo normalizado de memoria SDRAM de 100 MHz.
• RAM cacheable: la cantidad de RAM máxima que es capaz de manejar la caché. Si
superamos esta cifra es como si no tuviéramos memoria caché.
• UltraDMA: una tecnología para los discos duros IDE modernos que la soportan que
eleva la transferencia teórica de datos hasta 33,3 MB/s.
• USB: un tipo de puerto moderno para conectar dispositivos externos de velocidad
media-baja, con la ventaja de ser universal (el mismo para todos) y poderse conectar
en cadena unos a otros.

La elección del chipset


Chipset y placa base forman un conjunto indisoluble y de la máxima importancia, por lo que su
compra debe estar acompañada de una cierta reflexión. Lo primero es recordar que un buen
chipset sólo no hace una buena placa; si encontramos dos placas con el mismo chipset pero
una cuesta el doble que la otra, por algo será (aunque a veces ese algo es simplemente la
marca de la placa, por ejemplo las placas Intel, que en general no son tan avanzadas como las
Asus, Iwill o Gigabyte pero que cuestan lo mismo o más que éstas...)

Así mismo, una placa debe ser comprada pensando en el futuro. Por ejemplo, si vamos a
comprar una para Pentium II, merece la pena comprar una con un chipset capaz de trabajar a
100 MHz de bus (una Intel BX, Apollo Pro o Aladdin Pro II), con lo que podremos ampliarla en
el futuro a micros a 350 MHz o más, cosa que no podremos hacer si compramos una LX, por
ejemplo.

No se obsesione con el Intel Inside. No es que le tenga una manía especial a Intel, y si la
tuviera, me la aguantaría; se trata de que mucha gente prefiere dejarse llevar por el atractivo de
una marca sin informarse de las características de lo que compra. Por ejemplo, si bien el
chipset BX de Intel para Pentium II es aún el mejor de su categoría, en el campo socket 7 los
mejores desarrollos no son de Intel, que lo ha abandonado a favor del campo Pentium II. Por
ello, comprarse una placa TX ahora sería un error, no porque sea Intel sino porque ese chipset
está anticuado (aunque hace unos meses era probablemente el mejor de su categoría); y lo
mismo pasa con el EX, que es mucho peor que los Apollo Pro o Aladdin Pro II.

Y por último, estudie bien la compra. Puede ser que el chipset admita mucha memoria, pero
que la placa tenga pocos zócalos para instalarla; o que estemos comprando una placa base o
un ordenador de segunda mano, y realmente nos importe más que la memoria sea suficiente y
fácilmente ampliable (EDO mejor que FPM, con zócalos vacíos...) que el hecho de que tenga
un chipset sin AGP o sin AGP ni UltraDMA, cuando puede que no vayamos a usar uno ni otro.
http://www.conozcasuhardware.com/quees/chipset.htm

3.1.1 CPU.
3.1.2 Controlador del Bus.
Controlador del bus
Es una especie de controlador de tráfico. En el PC XT es el chip 8288 y en el
AT es el 82288. El procesador necesita del concurso de este chip para generar
el juego completo de señales del bus de control.

Control del bus asíncrono.


Una de las características principales del µP MC68000 es que la transferencias entre
el µP y los dipspositivos externos ( incluída la memoria ) se realizan de forma
asíncrona. Es decir, la velocidad de transferencia no viene dada por la frecuencia del
reloj del sistema. De echo, en un sistema basado en el MC68000 cada dispositivo puede
funcionar con una frecuencia de reloj distinta. De esta manera los datos se transfieren a
la máxima velocidad admisible por los distintos dispositivos . Por ejemplo, si en un
sistema determinado la memoria ROM tiene un tiempo de acceso de 500 ns., y el de la
memoria RAM es de 250 ns., el MC68000 podrá transferir los datos a la memoria RAM
al doble de la velocidad con que los transfiere a la memoria ROM. El control del bus
asíncrono requiere unas señales que realizan el protocolo entre el microprocesador y los
dispositivos externos:

Address Strobe ( AS ). Esta señal indica que hay una dirección válida en el bus de
direcciones.

Read/Writee ( R/W ). Esta señal define la dirección de la transferencia por el bus de


datos . A nivel alto indica que el µP desea realizar una lectura desde el dispositivo
externo, y viceversa. Normalmente está a nivel alto.

Upper Data Strobe ( UDS ) y Lower Data Strobe ( LDS ). Estas señales indican qué
parte del bus de datos va a ser usada durante la transferencia del dato. Si la señal UDS
está activa, ello significa que el µP desea leer o escribir ( según el estado de R/W ) un
dato de 8 bits por la parte alta del bus de datos ( D8-D15 ). Si la señal LDS está cativa,
está indicando que el µP desea transferir

http://www.ii.uam.es/~fjgomez/68000/tutorial/cap5.html#cap5-1-1

3.1.3 Puertos de E/S.


La comunicación entre un programa y el hardware, es decir los chips de soporte y las
tarjetas de ampliación, se efectuará mediante los llamados puertos. Como puerto uno
tiene que imaginarse una entrada o salida de datos de 8 o 16 bits de ancho, que se
identificará por su dirección entre 0 y 65535. Éste autoriza el acceso a los diferentes
registros de la correspondiente unidad de hardware y por regla general un grupo de
puertos queda cubierto por un dispositivo.
Para la comunicación con los puertos, la CPU utiliza el bus de datos y el bus de
direcciones y se comporta de forma muy similar que en el acceso a la memoria.
- En primer lugar ésta manda una señal mediante una conexión especial de bus, para que
todas las unidades que estén recibiendo el bus sepan que ahora no se va a dirigir a un
punto de memoria sino a un puerto.
- Seguidamente coloca la dirección del puerto en los 16 bits inferiores del bus de
direcciones y espera que uno de los “escuchas” del bus declare su competencia.
- Una vez esto ha sucedido, la CPU manda los datos que deben transmitirse por medio
del bus de datos.
En dirección contraria , el puerto actuará de la misma forma al leer los datos, el único
requisito es que el contenido del puerto lo mande la tarjeta de ampliación a la CPU.
Pero sólo mandará los datos en caso de que le sea requerido y no cuando la tarjeta crea
que tiene algo importante para mandar.
Una última cosa por comentar es que hoy en día las direcciones de puerto de los
elementos más importantes del PC están estandarizadas, es decir en todos los
ordenadores dichas direcciones son idénticas.

Puertos Entrada/Salida

Nota: Para tener una visión de conjunto, antes de adentrarse en este


apartado, dedicado a los puertos de E/S, es recomendable leer el
epígrafe en que se tratan las Entradas/Salidas de forma genérica (
H2.1)

§1 Sinopsis

Cualquier dispositivo (distinto de la memoria RAM) que intercambie datos con


el sistema lo hace a través de un "puerto", por esto se denominan también
puertos de E/S ("I/O ports"). Desde el punto de vista del software, un puerto
es una interfaz con ciertas características; se trata por tanto de una abstracción
(no nos referimos al enchufe con el que se conecta físicamente un dispositivo
al sistema), aunque desde el punto de vista del hardware, esta abstracción se
corresponde con un dispositivo físico capaz de intercambiar información (E/S)
con el bus.

Como los dispositivos E/S tienen algún tipo de conexión con el bus externo (
H2), deben tener una dirección (o conjunto de ellas) que los identifique; los
hemos comparado con un teléfono, un dispositivo con el que se puede
enviar/recibir información mediante una dirección. Hablar de un puerto E/S es
casi siempre sinónimo de una dirección, y es costumbre informática referirse a
estas direcciones en hexadecimal ( 2.2.4b), de modo que, por ejemplo, un
puerto puede ser 0x21 en un fuente o 21h en un texto informático.

Nota: Al tratar de las E/S ( H2.1) hemos indicado que puerto es


sinónimo de periférico, un dispositivo externo que comunica con el
sistema a través de una dirección. Sin embargo no todos son
dispositivos externos a la placa-base, de hecho algunos dispositivos
Agunas direcciones (hex) de
puertos en el PC XT/AT
Dispositivo Dirección
Controlador DMAC#1 000-00F
primario 8237A
hardware incluidos en ella tienen la
característica de "Puertos". Por Controlador de 020-021
ejemplo, durante mucho tiempo interrupciones PIC#1
algunos PC's disponían de un botón 8259A
frontal señalado "Turbo", con el que Temporizador 040-043
se podía cambiar la velocidad de programable PIT 8253
funcionamiento. Este cambio de la y 8254
velocidad del reloj también puede Controlador periféricos 060-063
realizarse por software. Basta para PPI 8255 (XT)
ello cambiar un par de bits en un 060-064
"Puerto" instalado en la propia Controlador 8742 (AT)
placa-base (generalmente en el
rango 62-6Fh). 061-061
Altavoz del sistema
070-071
§2 Direcciones de puertos CMOS RAM & NMI
Mask Reg (AT)
El modelo de direccionamiento del PC ha
adoptado dos modelos, según la 081-08F
naturaleza del dispositivo a conectar: Registros de página
Direccionamiento dedicado para DMA
dispositivos de media/baja velocidad. Por Controlador de 0A0-0A1
ejemplo, puertos serie y paralelo interrupciones PIC#2
(impresora), teclado, Etc. y (AT)
direccionamiento mapeado en memoria
para dispositivos rápidos (típicamente los 0A2-0AF
NMI Mask register (XT)
adaptadores gráficos). En el apartado
dedicado a E/S se explican las diferencias Controlador DMAC#2 0C0-0DF
entre ambas modalidades ( H2.1) secundario (AT)
Clear / Reset del 0F0-0F1
coprocesador
§2.1 Respecto a los dispositivos de
matemático
direccionamiento dedicado, desde la
introducción del IBM-PC, es costumbre Coprocesador 0F8-0FF
que determinados dispositivos muy matemático 80287
comunes se conecten mediante puertos Controlador de disco 1F0-1FF
de direcciones determinadas. duro (AT)
200-20F
En la tabla adjunta se muestran algunas Puerto de juegos
de estas direcciones típicas para
dispositivos de E/S [3]. Las referencias a 210-21F
Unidad de expansión
los chips se refieren a los utilizados en los
(XT)
primeros PCs; actualmente han sido
sustituidos por uno o dos integrados 238-23B
(Chipset) que realizan todas las funciones. Ratón (conectado al
bus)
Puede observarse que para un mismo
periférico se tienen varias direcciones (un 23C-23F
Ratón de bus
"rango"). La razón es que estos
alternativo
dispositivos tienen varios registros y/o son
programables, para lo que disponen de Puerto paralelo (LPT2) 278-27F
2B0-2BF
EGA (Enhanced
Graphic Adapter)
2C0-2CF
EGA
registros especiales (cada registro de un Byte tiene una dirección, y estas son
correlativas). Por ejemplo, el controlador de puerto serie de los primeros PCs
era un circuito integrado 8250 de National Semiconductor; que dispone de 8
registros, aunque los datos se reciben y transmiten por uno de ellos, el resto
sirve para programar y controlar el funcionamiento del chip.

Nota: Los usuarios de Windows 98 pueden comprobar la asignación de


puertos del sistema mediante el programa C:\Archivos de
programa\Archivos comunes\Microsoft
Shared\MSINFO\MSINFO32.EXE. En Linux pueden consultarse en el
fichero /proc/ioports ( Ejemplo).

§2.1a Respecto a las asignaciones "Estandar" de algunos puertos, es


pertinente hacer algunas observaciones:

En realidad IBM definió de forma distinta las direcciones de puerto de las


interfaces de impresora en los PC monocromo y en los de color. Las
asignaciones fueron las siguientes:
Puerto Monocromo Color
LPT1 3BC-3BFh 378-37Fh
LPT2 378-37Fh 278-27Fh
LPT3 278-27Fh ---

En lo referente a los puertos serie, durante la secuencia inicial de identificación


del hardware ( 4.2), la BIOS realiza una búsqueda de dispositivos de E/S por
direcciones en un orden determinado, y les asigna un nombre lógico según el
orden de aparición. En el caso de los puertos serie el orden suele ser el
siguiente:
Puerto Dirección
COM1 3F8-3FFh
COM2 2F8-2FFh
COM3 3E8-3EFh
COM4 2E8-2EFh

§2.2 Las direcciones mapeadas en memoria se eligieron para algunos


dispositivos como los adaptadores gráficos, que requerían mover grandes
cantidades de datos muy rápidamente.

Con objeto de no causar conflictos con la RAM general, algunas de estas


direcciones fueron mapeadas desde el principio por los diseñadores de IBM,
fuera de la denominada memoria convencional ( H5.1). Es decir, fuera del
espacio de los 640 KB que podían utilizarse en los primeros PC's para Sistema
y programas de aplicación. Por ejemplo, el adaptador de video utiliza un área
de memoria de 128 KB mapeada entre las direcciones A0000-BFFFFh.

Sin embargo, los decodificadores de direcciones de periféricos de los primitivos


PC's solo podían utilizar direcciones de 10 bits para tales accesos, por lo que
las direcciones de puertos estaban constreñidas a 210 (1 KB 0000-0400h). En
realidad el espacio era aún más pequeño, puesto que los primeros 256 Bytes
estaban copados por algunos dispositivos de la placa-base, resultando que los
dispositivos E/S debían ser mapeados en 768 Bytes. Generalmente se
utilizaron fragmentos de 256 Bytes en la forma xxF0-xxFFh, organizados de
forma bastante desordenada.

La introducción del AT amplió estas direcciones a 16 [2]. Sin embargo, incluso


los 64 KB resultantes eran un espacio pequeño y de organización caótica, dado
que los nuevos dispositivos se construían de forma que fueran compatibles con
las antiguas placas ISA que solo reconocían direcciones de 10 bits. Incluso las
placas para buses posteriores que fueron desarrollados pensando en 64 KB
porque debían ser compatibles hacia atrás con las antiguas placas ISA (que
coexistían en las nuevas). El resultado de todo esto es que, incluso los
sistemas actuales con muchos MB. de RAM, deben seguir lidiando con los
puertos a través de pequeñas ventanas de memoria con localizaciones
absurdas.

§3 Comunicar con los puertos

Nos detendremos brevemente en analizar los aspectos involucrados en las


operaciones E/S con los puertos desde una doble vertiente: Lógica y física;
esta última relativa a los mecanismos involucrados en el intercambio.

§3.1 Aspectos lógicos

El software utilizado depende de la modalidad de direccionamiento (dedicado


o mapeado) que se elija. En el segundo caso, se dispone un amplio repertorio
de recursos para mover datos entre los registros y la memoria (la mayoría de
las instrucciones del procesador operan de esta forma), así como de los
mecanismos auxiliares de transferencia, como el acceso directo a memoria
DMA.

El panorama es distinto cuando se trata de puertos de direccionamiento


dedicado. En este caso, para realizar las operaciones E/S en los procesadores
8088 y descendientes, solo se dispone de dos instrucciones específicas: IN y
OUT. La primera lee un byte del registro de salida del puerto y lo sitúa en un
registro del procesador; la segunda escribe el contenido de un registro del
procesador en un registro del puerto. Ambas instrucciones permiten dos
variaciones sintácticas:
IN acumulador-destino, direccion-de-puerto-origen
IN acumulador-destino, acumulador-origen
OUT dirección-de-puerto-destino, acumulador-origen
OUT acumulador-destino, acumulador-origen

Las dos primeras sitúan el dato contenido en el puerto origen en el


acumulador-destino, que puede ser AX o AL. Observe que el puerto
puede ser expresado directamente mediante una dirección (hexadecimal) o
mediante un acumulador-origen, que debe ser DX; en este caso, su
contenido se toma como dirección del puerto que se lee.

Las instrucciones OUT sitúan el valor contenido en el acumulador-origen,


que puede ser AX o AL, en el puerto destino, que puede ser identificado
directamente mediante su dirección hexadecimal, o por el valor señalado por el
acumulador-destino, que debe ser DX.

En el IBM-PC, las direcciones-de-puerto utilizadas en estas instrucciones


estan en el rango 00-FFh, aunque en la práctica solo 00-F7h, porque Intel
reserva las direcciones F8-FFh para el coprocesador metemático ( 0.3.2). En
cambio, si se utiliza la dirección contenida en el registro DX el rango de
direcciones puede moverse en el rango 0000-FFFFh.

Por supuesto, cualquier programa que quiera utilizar puertos deberá emplear
directa o indirectamente estas dos instrucciones ensamblador, aunque en
muchos casos no es imprescindible enredarse en demasiados detalles.

Los usuarios de DOS pueden utilizar servicios del Sistema;


concretamente la interrupción 21h que realiza operaciones de E/S
con puertos (utilizando IN y OUT por supuesto). Por ejemplo, las
instrucciones:
MOV DL,7
MOV AH,2
INT 21

provocan un pitido en el sistema bajo DOS. La explicación es la


siguiente: La última instrucción invoca una interrupción software (
H2.4) número 33 (21h) que, como hemos indicado, corresponde a
los servicios del DOS. Cuando esto ocurre, se comprueba el
contenido del registro AH ( H3.2), que en este caso es 2 (valor
previamente establecido en la segunda instrucción), lo que indica
que debe escribirse un carácter en pantalla (un dispositivo de
salida); en este caso, el carácter que se envía al puerto es el
contenido del registro DL, que previamente se ha establecido en el
valor 7 con la primera instrucción. El 7 es el valor BELL ASCII (
2.2.1a); cuando se intenta mostrar este carácter, se produce un
pitido en el altavoz del sistema.

Los demás Sistemas disponen de utilidades análogas. Por ejemplo,


los sistemas Windows disponen de una DLL específica para este
tipo de servicios.

§3.2 Aspectos físicos

El procedimiento que se sigue el procesador para las E/S hacia puertos, es


siempre el mismo: Poner el dato en el bus de datos y la dirección en el de
direcciones. Como indicamos a continuación, el sistema sabe que se trata de
una dirección de memoria (real o de puerto mapeado) o de un puerto de
dirección dedicada, y cual es la acción esperada (lectura o escritura) porque se
dispone de 4 líneas específicas en el bus de control ( H2):
• IOR Orden de lectura para dispositivo E/S conectado al bus, que
debe colocar un dato en el bus de datos.
• IOW Orden de escritura para dispositivo E/S, que debe leer el dato
situado en el bus.
• MEMR Esta señal indica a los dispositivos de memoria que deben
colocar un dato en el bus de datos.
• MEMW Señal que indica a los dispositivos de memoria que deben
almacenar el dato colocado en el bus de datos.

Una cuestión adicional es que cuando la comunicación debe establecerse


desde el lado del puerto (es el puerto el que desea establecer comunicación
con el sistema), primero debe anunciarlo al procesador, para lo que se utiliza
un sistema de interrupciones cuyo mecanismo de funcionamiento se ha
detallado en el capítulo correspondiente ( H2.4). La consecuencia es que la
mayoría de los puertos disponen de líneas IRQ asignadas para este menester.
http://www.zator.com/Hardware/H2_5.htm

3.1.4 Controlador de Interrupciones.


Controlador de interrupciones

Las interrupciones del PC, a las que nos referimos más detenidamente en el
epígrafe correspondiente ( H2.4), son manejadas por un chip conocido como
PIC ("Programmable Interrupt Controller").

Originariamente era un 8259A, que puede manejar 8 peticiones de interrupción,


pero pronto se hizo evidente que eran un número excesivamente corto, por lo
que en 1984, IBM añadió un segundo controlador en el modelo AT. Este
diseño, con dos controladores, ha permanecido invariable hasta nuestros días
en lo que se refiere a su funcionalidad. Recientemente ha sido sustituido por el
denominado APIC ("Advanced Programmable Interrupt Controller") en las
máquinas Pentium y sucesoras, que está basado en un chip 82489DX.

3.1.5 Controlador de DMA.


Controlador DMA

DMA es el acrónimo de "Direct Memory Access"; se trata de un mecanismo


incluido en la arquitectura del PC, que permite intercambios de datos entre la
memoria y ciertos dispositivos sin intervención del procesador (por esta razón
se denomina precisamente acceso directo a memoria); está controlado por un
chip específico, el DMAC ("DMA Controller"). En los XT estaba integrado en un
chip 8237A que proporcionaba 4 canales. Posteriormente en los AT se
instalaron dos, ampliándose a 8 el número de canales. En el epígrafe dedicado
al Acceso directo a memoria ( H2.3), se expone con más detalle su
funcionamiento.

Controlador programable 8237 DMA

El controlador de DMA 8237 suministra a la memoria y al E/S señales de


control e información y direccionamiento a la memoria durante la transferencia
de DMA. El 8237 es, en realidad, un microprocesador de propósito especial
cuya labor es la transferencia de datos a alta velocidad entre la memoria y el
espacio de E/S. Aunque este controlador quizá no aparezca como componente
discreto en sistemas modernos basados en microprocesador, se emplea en los
conjuntos de controladores integrados (chip-set) que hay en los sistemas más
nuevos.

El 8237 tiene cuatro canales y es compatible con los microprocesadores 8086 y


8088. El 8237 puede expandirse para incluir cualquier número de entradas de
canal de DMA, aunque parece ser que cuatro canales son adecuados para
muchos sistemas pequeños. El 8237 puede efectuar transferencias de DMA a
velocidades de hasta 1.6 Mbytes por segundo. Cada una puede direccionar a
una sección completa de 64 Kbytes de la memoria y puede transferir hasta 64
Kbytes con una sola programación.

http://www.monografias.com/trabajos5/tempori/tempori.shtml#con

3.1.6 Circuitos de temporización y control.


Elementos de temporización

Los ordenadores son máquinas síncronas, lo que significa que todas sus partes
funcionan de forma acompasada. Es frecuente poner el ejemplo de los
remeros en las películas de galeras, donde cada remero no va por su cuenta,
todos siguen el ritmo del gordo del tambor. En el PC ocurre otro tanto, aquí el
ritmo no lo marca un tambor, sino un metrónomo (reloj) que genera una señal
(señal de reloj), que marca el ritmo de la "música" que es capaz de ejecutar el
sistema. Esta señal está presente en el bus de control , la línea CLK.

El corazón del reloj es un oscilador controlado por un cristal de cuarzo que


actúa de patrón (es un elemento fácilmente identificable con aspecto de
almohadilla plateada). En los PC originales la frecuencia del cristal es de
14.31818 MHz. Esta señal está también presente en el bus de control, línea
OSC, y la denominaremos frecuencia del oscilador. En los primitivos PCs la
señal del reloj era de 4.77 MHz es decir, un tercio de la frecuencia del oscilador
[3].

La señal CLK es importantísima, ya que sin ella sería imposible un


funcionamiento armónico de los distintos elementos (incluyendo el procesador,
una de cuyas patillas conecta directamente con ella). Todos los sucesos
internos tienen lugar al compás de este tic-tac electrónico [6].
Nota: Hemos señalado , que a partir de la introducción del 80486
algunos elementos del ordenador no pueden funcionar al ritmo endiablado
del reloj, que resulta demasiado rápido para el resto de chips instalados en
la placa, por lo que en esta se utilizan frecuencias inferiores. Esto se
consigue utilizando solo uno de cada tres, cuatro o cinco pulsos de CLK.

En este sentido es particularmente significativa la denominada velocidad


del bus externo. Que es la que se utiliza en dicho bus. Por ejemplo, un
procesador que esté trabajando a 200 MHz, puede que esté utilizando una
frecuencia de 66 MHz en sus comunicaciones con el bus externo.
Exactamente la misma que un procesador de "solo" 66 MHz de reloj que
utilice también 66 MHz para el bus externo. La situación actual es que las
velocidades típicas de las placas-base son de 60- 66- 100- 133 MHz
mientras que los procesadores funcionan a frecuencias múltiplos de
aquellas; típicamente de 1x hasta 10x, es decir, desde 60 a 1330 MHz (lo
que se denomina velocidad del núcleo).

Chip del reloj

En el PC original, el oscilador antes mencionado está montado en un chip


8284A (88284 en el AT), que se conoce como generador de reloj (no
confundir con el reloj programable ). La fecha y hora, que había que
introducir en la puesta en marcha del sistema, se perdía cada vez que se
apagaba el equipo. Durante el funcionamiento, el sistema de fecha y hora era
mantenido por una interrupción de alta prioridad ( H2.4) que ocurría unas 18
veces cada segundo.

A partir de la introducción del PC AT, se instaló en la placa base el denominado


chip del reloj, abreviadamente RTC ("Real Time Clock"). Es un auténtico reloj
que suministra la fecha y hora al sistema. Como este reloj debía continuar su
funcionamiento incluso estando el equipo desconectado, se le dotó de una
pequeña pila o batería.

Aprovechando que este circuito disponía de su propia fuente de energía, se


utilizó para añadirle cierta cantidad de memoria CMOS ("Complementary Metal-
Oxide Semiconductor") de bajo consumo, la
denominada ROM del sistema, que se utiliza para
guardar información relativa a la configuración del
equipo. Estos datos son accesibles pulsando una
combinación de teclas en los momentos iniciales de
arranque, lo que inicia un programa de configuración
grabado en la BIOS conocido generalmente como
Set-up.

Nota: La batería de backup de la placa base, es


un elemento fácilmente identificable; tiene forma
de pila de botón reemplazable, o de elementos
soldados recubiertos de una funda plástica. Este
último es el caso mostrado en la fig. 2. La
batería es el elemento azul; por encima está el
conector del teclado y sobre éste, junto al letrero Fig. 2
BATTERY, se distinguen tres de los 4 pines del conector para la batería
auxiliar [7].

Esta batería se agota con el tiempo, especialmente si el equipo


permanece mucho tiempo apagado, en cuyo caso se pierde la fecha y (lo
que es más importante) los datos de configuración establecidos con el
programa de Set-up. Aunque la mayoría de equipos funcionan bien con
la configuración por defecto, en caso de sustituir la batería es posible que
sea necesario reconfigurar el Set-up.

Tradicionalmente este circuito CMOS/RTC era un Motorola MC146818. En los


modelos iniciales esta memoria era de 128 bytes. Actualmente es de 256 KB, y
junto con algunos otros elementos están incluidos en un chipset de solo dos
circuitos integrados. A su vez el programa de configuración es cada vez más
sofisticado, de forma que simplifica la configuración del sistema. Por ejemplo,
dispone de un sistema de protección ("Password") de acceso y de
autodetección del tipo de disco instalado; algo que en los modelos antiguos
debía hacerse manualmente.

Temporizador programable

Junto con el anterior se encuentra un circuito que recibe varios nombres: PIT
("Programmable Interval Timer") temporizador programable, reloj programable,
temporizador ("timer"), Etc. Constituido por un chip 8253 (8254 en el AT y
máquinas con bus EISA/MCA) que dispone de tres temporizadores
programables independientes numerados del 0 al 2.

En realidad son divisores de frecuencia que obtienen la señal del generador de


reloj. Tienen cuatro modos de funcionamiento programables que pueden
generar diversas señales:
• Pulsos de anchura variable.
• Generar una interrupción al final de la cuenta de una serie de pulsos de reloj,
para lo que dispone de tres contadores independientes de 16 bits.
• Ondas cuadradas que sean una fracción de la frecuencia de entrada (reloj). Por
ejemplo, podemos conseguir que generen una señal por cada 1000 señales de la
frecuencia del reloj RTC, con lo que en un PC XT obtendríamos una frecuencia
de 4.77 KHz.
• Medir el intervalo entre sucesos.

Estas capacidades se utilizan para cuestiones tales como producir señales de


sincronización para refresco de la RAM, o tonos audibles de diversas
frecuencias en el altavoz del PC. La distribución de tareas es como sigue:

• Canal 0: Produce una interrupción cada 54.94 ms en IRQ0, que activa la rutina
de actualización del reloj de tiempo real RTC .
• Canal 1: Produce una interrupción cada 15.12 microsegundos que marca el
comienzo del ciclo de refresco de las memorias RAM dinámicas ( 5.3.2).
• Canal 2: Este canal se destina a generar tonos para el altavoz del sistema.
http://www.zator.com/Hardware/H2.htm#Controlador DMA

3.1.7 Controladores de video.


¿Qué es la tarjeta de video?

La tarjeta de video, (también llamada controlador de video, ver figura 2),es un componente
electrónico requerido para generar una señal de video que semanda a una pantalla de video
por medio de un cable. La tarjeta de video seencuentra normalmente en la placa de sistema de
la computadora o en una placa deexpansión. La tarjeta gráfica reúne toda la información que
debevisualizarse en pantalla y actúa como interfaz entre el procesador y elmonitor; la
información es enviada a éste por la placa luego de haberlarecibido a través del sistema de
buses. Una tarjeta gráfica se compone, básicamente,de un controlador de video, de la memoria
de pantalla o RAM video, y elgenerador de caracteres, y en la actualidad también poseen un
acelerador de gráficos.El controlador de video va leyendo a intervalos la información
almacenada en laRAM video y la transfiere al monitor en forma de señal de video; el número
deveces por segundo que el contenido de la RAM video es leído y transmitido almonitor en
forma de señal de video se conoce como frecuencia de refresco de lapantalla. Entonces, como
ya dijimos antes, la frecuencia depende en gran medidade la calidad de la placa de video.

Tipos de tarjeta de video


Tarjeta gráfica Hércules
Con ésta tarjeta se podía visualizar gráficos y textos simultáneamente. Enmodo texto,
soportaba una resolución de 80x25 puntos. En tanto que en los gráficoslo hacía con 720x350
puntos, dicha tarjeta servía sólo para gráficos de unsolo color. La tarjeta Hércules tenía una
capacidad total de 64k de memoriavideo RAM. Poseía una frecuencia de refresco de la pantalla
de 50HZ.

Color Graphics Adapter (CGA)


La CGA utiliza el mismo chip que la Hércules y aporta resoluciones y coloresdistintos. Los tres
colores primarios se combinan digitalmente formando un máximode ocho colores distintos. La
resolución varía considerablemente según elmodo de gráficos que se esté utilizando, como se
ve en la siguiente lista:
* 160 X 100 PUNTOS CON 16 COLORES
* 320 X 200 PUNTOS CON 4 COLORES
* 640 X 200 PUNTOS CON 2 COLORES

La tarjeta EGA
Enchanced Graphics Adapter (EGA). Se trata de una tarjeta gráfica superiora la CGA. En el
modo texto ofrece una resolución de 14x18 puntos y en el modográfico dos resoluciones
diferentes de 640x200 y 640x350 a 4 bits, lo que dacomo resultado una paleta de 16 colores,
siempre y cuando la tarjeta estéequipada con 256KB de memoria de video RAM.

La tarjeta VGA
La Video Graphics Adapter (VGA) significó la aparición de un nuevo estándardel mercado. Esta
tarjeta ofrece una paleta de 256 colores, dando como resultadoimágenes de colores mucho
más vivos. Las primeras VGA contaban con 256KB dememoria y solo podían alcanzar una
resolución de 320x200 puntos con lacantidad de colores mencionados anteriormente. Primero
la cantidad de memoriavideo RAM se amplió a 512KB, y más tarde a 1024KB, gracias a ésta
ampliaciónes posible conseguir una resolución de, por ejemplo, 1024x768 píxeles con 8bits de
color. En el modo texto la VGA tiene una resolución de 720x400 pixeles,además posee un
refresco de pantalla de 60HZ, y con 16 colores soporta hasta640X480 puntos.

La tarjeta SVGA
La tarjeta SVGA (Super Video Graphics Adapter) contiene conjuntos de chips deuso especial, y
más memoria, lo que aumenta la cantidad de colores y laresolución.
http://www.ilustrados.com/publicaciones/EpypkAEEypZqhjZKbE.php

Controladores de periféricos

En la placa-base existen diversos chips destinados específicamente al control


de periféricos serie y paralelo. A continuación reseñaremos brevemente
algunos de los más conocidos.

El PPI ("Programmable peripheral interface"), también conocido como PIO


("Programmable Input/Output") era originariamente un 8255. Se trata de un
chip de 24 patillas que pueden ser programadas individualmente en dos grupos
de 12, de las cuales 8 son de datos y 4 bits auxiliares incluyen señales de
control (STROBE; ACKNOWLEDGE; BUFFER FULL, Etc.) Este chip tiene
gran variedad de aplicaciones, entre ellas almacenar información sobre el
estado de configuración de la placa-base y controlar otros chips, como el
temporizador programable y la interfaz del teclado, pero su uso característico
es como interfase paralelo bidireccional para periféricos que utilizan este tipo
de comunicación (por ejemplo impresoras, escáneres, Etc.) El altavoz del
sistema está conectado a dos patillas de este integrado.

Desde el punto de vista lógico este dispositivo responde a las direcciones


060h-063h, que son sus números de puerto y dispone de tres registros de 1
byte conocidos como A, B y C, cuyas direcciones respectivas son 060h, 061h y
062h. La dirección 063h se utiliza para configurar el dispositivo.

Nota: Como hemos señalado anteriormente, a partir del AT, el estado de


configuración de la placa-base se almacena en un integrado alimentado
con batería que contiene también el reloj de tiempo real. En realidad el
AT no tiene un 8255 como tal, pero emula su comportamiento. En este
caso el controlador es un 8742 responde a las direcciones 060h-064h, y
realiza otras funciones no directamente relacionadas con el teclado,
como resetear la UCP, controlar la puerta A20 y manejar el ratón [9].

El 8250 ACE ("Asynchronous communication equipment"), es una interfaz entre


el bus paralelo del sistema y los periféricos que utilizan comunicación serie,
como módems y ratones. Puede generar las señales de control de la popular
interfaz RS-232 [8]; dispone de un generador de velocidad de transmisión que
permite generar cualquiera de las más frecuentes. Puede funcionar bajo
control de programa o mediante interrupciones ( H2a) y dispone de una cierta
capacidad de comprobación y corrección de los errores típicos de las
comunicaciones serie.

El PD765, que controlaba el disquete en los XT, más conocido como FDC
("Floppy Disc Controller"). Fue sustituido por el 82072A en el AT y por el
82077A en el PS/2.

3.2 Aplicaciones.
3.2.1 Entrada/ Salida.
3.2.2 Almacenamiento.
3.2.3 Fuente de alimentación.
Es un transformador rectificador a 220 V. Transformador porque pasa de 220 V
a 5 y 12 V, y rectificador porque transforma corriente alterna (AC) en continua
(DC).

Es una caja grande de la que salen cables. Tiene un refrigerador que refrigera
la unidad central.

La fuente de alimentación es el dispositivo que se encarga de distribuir la


energía a todos los componentes internos de la computadora. Tiene un
ventilador propio que la mantiene fresca a ella misma como a todas demás
partes de la computadora. Además, la fuente puede operar un ventilador
auxiliar ubicado en cualquier otra parte de la computadora.

Las fuentes están clasificadas por su potencia en watts, que hablando fácil se
trata de la cantidad de energía eléctrica que pueden entregar a todo el sistema.
Cuanto mas alta sea la potencia, mejor, porque la fuente se encontrara en
mejores condiciones de enfrentarse con las necesidades de la computadora,
alejando la probabilidad de fallas.

Las fuentes generalmente vienen en capacidades que oscilan entre los 95 a


300 watts. Todas son aproximadamente del mismo tamaño, ya que están
diseñadas siguiendo un estándar para las ATs.

http://www.monografias.com/trabajos/acmother/acmother.shtml

3.3 Ambientes de servicios.


3.3.1 Negocios.
3.3.2 Industria.
3.3.3 Comercio electrónico.
DEFINICIONES

Pondremos a continuación tres definiciones que nos parecen apropiadas al


término

Comercio Electrónico:

• "Es la aplicación de la avanzada tecnología de información para incrementar la eficacia


de las relaciones empresariales entre socios comerciales". (Automotive Action Group in
North America)
• "La disponibilidad de una visión empresarial apoyada por la avanzada tecnología de
información para mejorar la eficiencia y la eficacia dentro del proceso comercial." (EC
Innovation Centre)
• "Es el uso de las tecnologías computacional y de telecomunicaciones que se realiza
entre empresas o bien entre vendedores y compradores, para apoyar el comercio de
bienes y servicios."

Conjugando estas definiciones podemos decir que el comercio electrónico es


una metodología moderna para hacer negocios que detecta la necesidad de las
empresas, comerciantes y consumidores de reducir costos, así como mejorar la
calidad de los bienes y servicios, además de mejorar el tiempo de entrega de
los bienes o servicios. Por lo tanto no debe seguirse contemplando el comercio
electrónico como una tecnología, sino que es el uso de la tecnología para
mejorar la forma de llevar a cabo las actividades empresariales. Ahora bien, el
comercio electrónico se puede entender como cualquier forma de transacción
comercial en la cual las partes involucradas interactúan de manera electrónica
en lugar de hacerlo de la manera tradicional con intercambios físicos o trato
físico directo. Actualmente la manera de comerciar se caracteriza por el
mejoramiento constante en los procesos de abastecimiento, y como respuesta
a ello los negocios a nivel mundial están cambiando tanto su organización
como sus operaciones. El comercio electrónico es el medio de llevar a cabo
dichos cambios dentro de una escala global, permitiendo a las compañías ser
más eficientes y flexibles en sus operaciones internas, para así trabajar de una
manera más cercana con sus proveedores y estar más pendiente de las
necesidades y expectativas de sus clientes. Además permiten seleccionar a los
mejores proveedores sin importar su localización geográfica para que de esa
forma se pueda vender a un mercado global.

2. ORIGEN Y EVOLUCION HISTORICA

El comercio, actividad ancestral del ser humano, ha evolucionado de muchas


maneras. Pero su significado y su fin en siempre el mismo. Según el diccionario
consultor de economía, el Comercio es "el proceso y los mecanismos
utilizados, necesarios para colocar las mercancías, que son elaboradas en las
unidades de producción, en los centros de consumo en donde se aprovisionan
los consumidores, último eslabón de la cadena de comercialización. Es
comunicación y trato".

En líneas generales, y con un sentido amplio, el comercio implica la


investigación de mercado con el fin de interpretar los deseos del consumidor, la
publicidad que anuncia la existencia del producto, la posibilidad de adquirirlo, y
en que lugar, a la vez que se utilizan los métodos de persuasión, la venta al por
menor y finalmente, la adquisición por parte del público.

Según lo expuesto, a través de los años han aparecido diferentes formas o


tipos de comercio. A principio de los años 1920 en Los Estados Unidos
apareció la venta por catálogo, impulsado por las grandes tiendas de mayoreo.
Este sistema de venta, revolucionario para la época, consiste en un catálogo
con fotos ilustrativas de los productos a vender. Este permite tener mejor
llegada a las personas, ya que no hay necesidad de tener que atraer a los
clientes hasta los locales de venta. Esto posibilitó a las tiendas poder llegar a
tener clientes en zonas rurales, que para la época que se desarrollo dicha
modalidad existía una gran masa de personas afectadas al campo. Además,
otro punto importante de esto es que los potenciales compradores pueden
escoger los productos en la tranquilidad de sus hogares, sin la asistencia o
presión, según sea el caso, de un vendedor. La venta por catálogo tomó mayor
impulso con la aparición de las tarjetas de crédito; además de determinar un
tipo de relación de mayor anonimato entre el cliente y el vendedor.

A mediados de 1980, con la ayuda de la televisión, surgió una nueva forma de


venta por catálogo, también llamada venta directa. De esta manera, los
productos son mostrados con mayor realismo, y con la dinámica de que
pueden ser exhibidos resaltando sus características. La venta directa es
concretada mediante un teléfono y usualmente con pagos de tarjetas de
crédito.

A principio de los años 1970, aparecieron las primeras relaciones comerciales


que utilizaban una computadora para transmitir datos. Este tipo de intercambio
de información, sin ningún tipo de estándar, trajo aparejado mejoras de los
procesos de fabricación en el ámbito privado, entre empresas de un mismo
sector. Es por eso que se trataron de fijar estándares para realizar este
intercambio, el cual era distinto con relación a cada industria. Un ejemplo
conocido de esto es el caso del Supermercado mayorista Amigazo. A mediados
de los años 1980 esta empresa desarrolló un sistema para procesar ordenes
de pedido electrónicas, por el cual los clientes de esta empresa emitían
ordenes de pedido desde sus empresas y esta era enviada en forma
electrónica. Esta implementación trajo importantes beneficios a Amigazo, ya
que se eliminaron gran parte de errores de entregas y se redujeron los tiempos
de procesamiento de dichas ordenes. El beneficio fue suficiente como para que
la empresa Amigazo, instale un equipo a sus clientes habituales.

Por otra parte, en el sector publico el uso de estas tecnologías para el


intercambio de datos tuvo su origen en las actividades militares. A fines de los
años 1970 el Ministerio de Defensa de Estados Unidos inicio un programa de
investigación destinado a desarrollar técnicas y tecnologías que permitiesen
intercambiar de manera transparente paquetes de información entre diferentes
redes de computadoras, el proyecto encargado de diseñar esos protocolos de
comunicación se llamo "Internetting project" (de este proyecto de investigación
proviene el nombre del popular sistema de redes), del que surgieron el TCP/IP
(Transmission Control Protocol)/(Internet Protocol) que fueron desarrollados
conjuntamente por Vinton Cerf y Robert Kahn y son los que actualmente se
emplean en Internet. A través de este proyecto se logró estandarizar las
comunicaciones entre computadoras y en 1989 aparece un nuevo servicio, la
WWW (World Wide Web, Telaraña Global), cuando un grupo de investigadores
en Ginebra, Suiza, ideo un método a través del cual empleando la tecnología
de Internet enlazaban documentos científicos provenientes de diferentes
computadoras, a los que podían integrarse recursos multimedia (texto, gráficos,
música, entre otros). Lo más importante de la WWW es su alto nivel de
accesibilidad, que se traduce en los escasos conocimientos de informática que
exige de sus usuarios.

El desarrollo de estas tecnologías y de las telecomunicaciones ha hecho que


los intercambios de datos crezcan a niveles extraordinarios, simplificándose
cada vez mas y creando nuevas formas de comercio, y en este marco se
desarrolla el Comercio Electrónico.

3. VENTAJAS

Ventajas para los Clientes

Permite el acceso a más información. La naturaleza interactiva del Web y su


entorno hipertexto permiten búsquedas profundas no lineales que son iniciadas
y controladas por los clientes, por lo tanto las actividades de mercadeo
mediante el Web están más impulsadas por los clientes que aquellas
proporcionadas por los medios tradicionales.

Facilita la investigación y comparación de mercados. La capacidad del Web


para acumular, analizar y controlar grandes cantidades de datos especializados
permite la compra por comparación y acelera el proceso de encontrar los
artículos.

Abarata los costos y precios. Conforme aumenta la capacidad de los


proveedores para competir en un mercado electrónico abierto se produce una
baja en los costos y precios, de hecho tal incremento en la competencia mejora
la calidad y variedad de los productos y servicios.

Ventajas para las empresas

Mejoras en la distribución. El Web ofrece a ciertos tipos de proveedores


(industria del libro, servicios de información, productos digitales) la posibilidad
de participar en un mercado interactivo, en el que los costos de distribución o
ventas tienden a cero. Por poner un ejemplo, los productos digitales (software)
pueden entregarse de inmediato, dando fin de manera progresiva al
intermediarismo. También compradores y vendedores se contactan entre sí de
manera directa, eliminando así restricciones que se presentan en tales
interacciones. De alguna forma esta situación puede llegar a reducir los
canales de comercialización, permitiendo que la distribución sea eficiente al
reducir sobrecosto derivado de la uniformidad, automatización e integración a
gran escala de sus procesos de administración. De igual forma se puede
disminuir el tiempo que se tardan en realizar las transacciones comerciales,
incrementando la eficiencia de las empresas.

Comunicaciones de mercadeo. Actualmente, la mayoría de las empresas utiliza


el Web para informar a los clientes sobre la compañía, a parte de sus
productos o servicios, tanto mediante comunicaciones internas como con otras
empresas y clientes. Sin embargo, la naturaleza interactiva del Web ofrece otro
tipo de beneficios conducentes a desarrollar las relaciones con los clientes.
Este potencial para la interacción facilita las relaciones de mercadeo así como
el soporte al cliente, hasta un punto que nunca hubiera sido posible con los
medios tradicionales. Un sitio Web se encuentra disponible las 24 horas del día
bajo demanda de los clientes. Las personas que realizan el mercadeo pueden
usar el Web para retener a los clientes mediante un diálogo asincrónico que
sucede a la conveniencia de ambas partes. Esta capacidad ofrece
oportunidades sin precedentes para ajustar con precisión las comunicaciones a
los clientes individuales, facilitando que éstos soliciten tanta información como
deseen. Además, esto permite que los responsables del área de mercadeo
obtengan información relevante de los clientes con el propósito de servirles de
manera eficaz en las futuras relaciones comerciales. Los sitios Web más
sencillos involucran a los clientes mediante botones para enviar mensajes de
correo electrónico a la empresa. En otros centros más sofisticados, los clientes
rellenan formularios, con el objeto de que desarrollen una relación continua con
la compañía, cuyo fin es informar tanto sobre los productos y servicios como
obtener información sobre las necesidades que los clientes tienen sobre los
mismos. De esta manera, se obtiene publicidad, promoción y servicio al cliente
a la medida. El Web también ofrece la oportunidad de competir sobre la base
de la especialidad, en lugar de hacerlo mediante el precio, ya que desde el
punto de vista del mercadeo, rara vez es deseable competir tan sólo en función
del precio. El mercadeo intenta satisfacer las necesidades de los clientes en
base a los beneficios que buscan, lo que quiere decir que el precio depende de
la valorización del cliente, y no de los costos; tales oportunidades surgen
cuando lo ofrecido se diferencia por elementos de mercadeo distintos al precio,
lo cual produce beneficios cargados de valor, como por ejemplo, la comodidad
producida por el reparto directo mediante la distribución electrónica de
software.

Beneficios operacionales. El uso empresarial del Web reduce errores, tiempo y


sobrecostos en el tratamiento de la información. Los proveedores disminuyen
sus costos al acceder de manera interactiva a las bases de datos de
oportunidades de ofertas, enviar éstas por el mismo medio, y por último, revisar
de igual forma las concesiones; además, se facilita la creación de mercados y
segmentos nuevos, el incremento en la generación de ventajas en las ventas,
la mayor facilidad para entrar en mercados nuevos, especialmente en los
geográficamente remotos, y alcanzarlos con mayor rapidez. Todo esto se debe
a la capacidad de contactar de manera sencilla y a un costo menor a los
clientes potenciales, eliminando demoras entre las diferentes etapas de los
subprocesos empresariales.

4. CATEGORIAS

El comercio electrónico puede subdividirse en cuatro categorías:

La categoría compañía - compañía, se refiere a una compañía que hace uso de


una red para hacer ordenes de compra a sus proveedores, recibir facturas y
realizar los pagos correspondientes. Esta categoría ha sido utilizada por
muchos años, particularmente haciendo uso de EDI ("Electronic Data
Interchange") sobre redes privadas o redes de valor agregado ("Value added
Networks-VAN").

La categoría compañía - cliente, se puede comparar con la venta al detalle de


manera electrónica. Esta categoría ha tenido gran aceptación y se ha ampliado
sobre manera gracias al WWW, ya que existen diversos centros comerciales
(del Inglés malls) por todo Internet ofreciendo toda clase de bienes de
consumo, que van desde pasteles y vinos hasta computadoras.
La categoría compañía - administración, se refiere a todas las transacciones
llevadas a cabo entre las compañías y las diferentes organizaciones de
gobierno. Por ejemplo en Estados Unidos cuando se dan a conocer los detalles
de los requerimientos de la nueva administración a través de Internet, las
compañías pueden responder de manera electrónica. Se puede decir que por
el momento esta categoría esta en sus inicios pero que conforme el gobierno
empiece a hacer uso de sus propias operaciones, para dar auge al Comercio
Electrónico, está alcanzará su mayor potencial. Cabe hacer mención que
también se ofrecerán servicios de intercambio electrónico para realizar
transacciones como el regreso del IVA y el pago de impuestos corporativos.

La categoría cliente - administración, aún no ha nacido, sin embargo después


del nacimiento de las categorías compañía - cliente y compañía -
administración, el gobierno hará una extensión para efectuar interacciones
electrónicas como serían pagos de asistencia social y regreso de pago de
impuestos.

5. RIESGOS

Como medio comercial el Web presenta las siguientes deficiencias, derivadas


tanto de su tecnología como de su naturaleza interactiva:

Entorno empresarial y tecnológico cambiante. Empresas y clientes desean


tener flexibilidad para cambiar, según su voluntad, de socios comerciales,
plataformas y redes. No es posible evaluar el costo de esto, pues depende del
nivel tecnológico de cada empresa, así como del grado deseado de
participación en el comercio electrónico. Como mínimo una empresa necesitará
una computadora personal con sistema operativo Windows o Machintosh, un
módem, una suscripción a un proveedor de servicios de Internet, una línea
telefónica. Una compañía que desee involucrarse más, deberá prepararse para
introducir el comercio electrónico en sus sistemas de compras, financieros y
contables, lo cual implicará el uso de un sistema para el intercambio electrónico
de datos (EDI) con sus proveedores y/o una intranet con sus diversas sedes.

Privacidad y seguridad. La mayoría de los usuarios no confía en el Web como


canal de pago. En la actualidad, las compras se realizan utilizando el número
de la tarjeta de crédito, pero aún no es seguro introducirlo en Internet sin
conocimiento alguno. Cualquiera que transfiera datos de una tarjeta de crédito
mediante el Web, no puede estar seguro de la identidad del vendedor.
Análogamente, éste no lo está sobre la del comprador. Quien paga no puede
asegurarse de que su número de tarjeta de crédito no sea recogido y sea
utilizado para algún propósito malicioso; por otra parte, el vendedor no puede
asegurar que el dueño de la tarjeta de crédito rechace la adquisición. Resulta
irónico que ya existan y funcionen correctamente los sistemas de pago
electrónico para las grandes operaciones comerciales, mientras que los
problemas se centren en las operaciones pequeñas, que son mucho más
frecuentes.

Cuestiones legales, políticas y sociales. Existen algunos aspectos abiertos en


torno al comercio electrónico: validez de la firma electrónica, no repudio,
legalidad de un contrato electrónico, violaciones de marcas y derechos de
autor, pérdida de derechos sobre las marcas, pérdida de derechos sobre
secretos comerciales y responsabilidades. Por otra parte, deben considerarse
las leyes, políticas económicas y censura gubernamentales.

6. USOS

El comercio electrónico puede utilizarse en cualquier entorno en el que se


intercambien documentos entre empresas: compras o adquisiciones, finanzas,
industria, transporte, salud, legislación y recolección de ingresos o impuestos.
Ya existen compañías que utilizan el comercio electrónico para desarrollar los
aspectos siguientes:

• Creación de canales nuevos de mercadeo y ventas.


• Acceso interactivo a catálogos de productos, listas de precios y folletos publicitarios.
• Venta directa e interactiva de productos a los clientes.
• Soporte técnico ininterrumpido, permitiendo que los clientes encuentren por sí mismos,
y fácilmente, respuestas a sus problemas mediante la obtención de los archivos y
programas necesarios para resolverlos.

Mediante el comercio electrónico se intercambian los documentos de las actividades


empresariales entre socios comerciales. Los beneficios que se obtienen en ello son: reducción
del trabajo administrativo, transacciones comerciales más rápidas y precisas, acceso más fácil
y rápido a la información, y reducción de la necesidad de reescribir la información en las
computadoras. Los tipos de actividad empresarial que podrían beneficiarse mayormente de la
incorporación del comercio electrónico, son:

• Sistemas de reservas. Centenares de agencias dispersas utilizan una base de datos


compartida para acordar transacciones.
• Existencias comerciales. Aceleración a nivel mundial de los contactos entre
mercados de existencias.
• Elaboración de pedidos. Posibilidad de referencia a distancia o verificación por parte
de una entidad neutral.
• Seguros. Facilita la captura de datos.
• Empresas que suministran a fabricantes. Ahorro de grandes cantidades de tiempo al
comunicar y presentar inmediatamente la información que intercambian.

7. TECNOLOGIAS QUE EMPLEA

El comercio electrónico utiliza un amplio rango de tecnologías como son:

• Intercambio Electrónico de Datos (EDI-Electronic Data Interchange)


• Correo Electrónico (E-mail o Electronic Mail)
• Transferencia Electrónica de Fondos (EFT- Electronic Funds Transfer)
• Aplicaciones Internet: Web, News, Gopher, Archie
• Aplicaciones de Voz: Buzones, Servidores
• Transferencia de Archivos
• Diseño y Fabricación por Computadora (CAD/CAM)
• Multimedia
• Tableros Electrónicos de Publicidad
• Videoconferencia

8. TIPOS DE RELACIONES QUE PUEDEN PRESENTARSE


El comercio electrónico es un método contemporáneo para la transacción
empresarial que enfoca la necesidad percibida, tanto por las empresas como
por sus clientes, de disminuir los costos de los bienes y servicios, manteniendo
la cantidad e incrementando la velocidad de entrega. Las actividades de
manejo de la información que se realizan en el comercio electrónico mediante
transacciones empresariales pueden clasificarse en las siguientes categorías:

• Transacciones entre una empresa y sus clientes mediante una red pública de
telecomunicaciones (teléfono+módem) con el propósito de realizar compras desde el
hogar ("home shopping"), o el banco en su casa ("home banking") utilizando técnicas
de cifrado para manejar los aspectos de seguridad y dinero electrónico.
• Transacciones con socios comerciales usando EDI.
• Transacciones para la obtención de información: investigación de mercados utilizando
exploradores de códigos de barras, tratamiento de información para la toma de
decisiones directivas o la solución de problemas organizativos, y la manipulación de
información para la organización de operaciones, como la administración de la cadena
de proveedores de una empresa.
• Transacciones para la distribución de información con clientes potenciales, tales como
mercadeo, publicidad, y ventas interactivas.

La conectividad entre los participantes es una cuestión esencial para la viabilidad del comercio
electrónico, e Internet lo consigue a un costo bajo.

9. CAMBIOS EN LAS EMPRESAS

El continuo avance en el mejoramiento de la infraestructura de las


telecomunicaciones ha proporcionado los medios para el intercambio casi
instantáneo de los datos. El comercio electrónico hace uso de estos flujos de
datos de una forma eficaz. El intercambio eficiente de la información determina
el éxito de una empresa; cuando se logra asegurar que el personal de una
compañía consume más tiempo en la producción o venta de productos y
servicios, en lugar de reprocesar innecesariamente los datos, podemos decir
que ha iniciado la optimización de su potencial. Internet ha demostrado que
estamos viviendo en una comunidad global, esto quiere decir que no importa
las diferencias de horario, ni la ubicación geográfica, lo que implica que la
actividad empresarial puede realizarse con cualquier persona y en cualquier
parte del mundo de manera instantánea. Esto significa que las empresas deben
replantear sus estrategias empresariales, sean cuales fueran sus objetivos:
ampliación del mercado, obtención de bienes por parte de proveedores nuevos,
externalización de servicios ("outsourcing"), o búsquedas de nuevas alianzas.El
comercio electrónico se introduce en las empresas en tres fases:

• Sustitución de las operaciones manuales basadas en papel por alternativas


electrónicas.
• Replanteamiento y simplificación de los flujos de información.
• Uso novedoso y dinámico de los flujos de información.

La sustitución de los sistemas basados en papel, tanto dentro de una empresa,


como entre ellas, produce pocos beneficios reales. Es cierto que reduce los
costos administrativos y mejora el nivel de precisión en el intercambio de datos,
pero no aborda las cuestiones relacionadas con que las actividades
comerciales se hagan eficientemente a la primera. Las aplicaciones del
comercio electrónico ayudan a reformar las maneras de realizar las actividades
comerciales, y con frecuencia, actúan como un catalizador para que las
empresas utilicen la reingeniería de procesos empresariales.

10. EFECTOS

A continuación se mencionan algunas consecuencias derivadas del desarrollo


del comercio electrónico:

• Empresas virtuales. Es la oportunidad para utilizar socios comerciales externos sin una
ubicación física, pues se establece una relación basada en transacciones electrónicas.
• Los vendedores pequeños acceden al mercado global. Tradicionalmente estos
mercados que tan sólo han estado abiertos para las multinacionales, se vuelven
accesibles a las compañías más pequeñas debido a la escasa cantidad de recursos
necesarios para funcionar en el extranjero.
• Transformación de tiendas de venta al menudeo. El crecimiento de las compras desde
el hogar y de la venta directa por parte de los fabricantes provocará una disminución en
los precios, y en consecuencia, una reducción de las comisiones.
• Presión sobre el servicio al cliente, el ciclo de desarrollo y los costos. Aumentará la
necesidad de la entrega rápida y directa. La cadena de valor será cada vez menos
tolerante con la necesidad de inventarios y almacenamiento. Será inevitable el
incremento de la competencia, así como de la necesidad de dinero electrónico.

11. LOS INTERMEDIARIOS

El advenimiento de infraestructuras ubicuas de información ha provocado


predicciones respecto a que uno de los efectos de los mercados será la
eliminación de los intermediarios, basándose en la capacidad de las redes de
telecomunicaciones. Sin embargo, la realidad puede ser bien distinta puesto
que las tecnologías de la información no sólo reforzarán la posición de los
intermediarios tradicionales, sino que además promoverán la aparición de
nuevas generaciones de intermediarios. En un mercado tradicional puede
considerarse que los intermediarios proporcionan un servicio de coordinación,
sin embargo, es necesario definir con mayor precisión esta actividad para
identificar como afectará Internet a esta tarea:

Búsqueda y evaluación. Un cliente que elige una tienda especializada sobre


unos grandes almacenes escoge implícitamente entre dos alternativas de
búsqueda y criterios de evaluación. En cualquier caso el cliente delega una
parte del proceso de búsqueda del producto en el intermediario, quien también
suministra un control de calidad y evaluación del producto.

Valoración de necesidades y emparejamiento de necesidades. En muchos


casos no es razonable asumir que los clientes posean el conocimiento
individual necesario para evaluar fidedignamente sus necesidades e identificar
los productos que las cumplirán eficazmente. Por lo tanto los intermediarios
pueden suministrar un servicio valioso ayudando a sus clientes a determinar
sus necesidades. Proporcionando información no sólo del producto, sino sobre
su utilidad, e incluso proporcionando la asistencia explícita de un experto para
identificar las necesidades de los clientes, los intermediarios proporcionan a los
clientes servicios sobre la evaluación de los productos.
Manejo de los riesgos del cliente. Los clientes no siempre tienen la
información perfecta y por tanto pueden comprar productos que no satisfagan
sus necesidades, en consecuencia en cualquier transacción al detalle el cliente
se enfrenta con ciertos riesgos. Estos pueden ser el resultado de una
incertidumbre en las necesidades del cliente, un fallo en la comunicación con
respecto a las características, o un fallo intencionado o accidental del fabricante
al proporcionar un producto adecuado. Otro servicio que proporcionan muchos
intermediarios está relacionado con el manejo de este riesgo, suministrando a
los clientes la opción de devolver los productos defectuosos o proporcionando
garantías adicionales, los intermediarios reducen la exposición de los clientes a
los riesgos asociados con los errores de los fabricantes. Si el cliente tiene la
opción de devolver los productos por cualquier motivo, el intermediario reduce
más la exposición del cliente a los riesgos asociados con los fallos de los
clientes para valorar las necesidades con precisión y compararlas con las
características del producto. Por lo tanto, eligiendo un intermediario que
proporciona estos servicios, los clientes están comprando implícitamente al
intermediario un seguro.

Distribución de productos. Muchos intermediarios juegan un papel


importante en la producción, envasado y distribución de bienes. La distribución
es un factor crítico en la determinación del valor de la mayoría de los bienes de
consumo. Por ejemplo un litro de gasolina a mil Km del hogar de un cliente
frente al que está a un Km es significativamente diferente, debido
principalmente a los servicios de distribución proporcionados.

Difusión de información sobre productos. Se trata de que el intermediario


informe a los clientes sobre la existencia y las características de los productos.
Los fabricantes confían en una variedad de intermediarios, incluyendo a las
tiendas de venta al menudeo, casas de ventas por correo/catálogo, agencias
de publicidad y puntos de venta para informar a los clientes.

Influencia sobre las compras. A fin de cuentas, a los fabricantes no sólo les
interesa proporcionar información a los clientes, sino vender productos.
Además de los servicios de información, los fabricantes también valoran los
servicios relacionados con la influencia en las elecciones de compra de los
clientes: la colocación de los productos por parte de los intermediarios puede
influir en la elección de los mismos, como poder asesorarse explícitamente
mediante un vendedor. Esquemas para la compensación de comisiones, pagos
por el espacio en estanterías y descuentos especiales son formas en las que
los fabricantes ofrecen servicios de asesorías de compras a los intermediarios.

Suministro de información. Esta información que es recogida por


intermediarios especializados como empresas de investigación de mercados,
es utilizada por los fabricantes para evaluar nuevos productos y planificar la
producción de los existentes.

Manejo de los riesgos del fabricante. El fraude y robo realizado por los
clientes es un problema que tradicionalmente ha sido tratado por los detallistas
e intermediarios crediticios. En el pasado, estos intermediarios han
proporcionado sistemas y políticas para limitar este riesgo. Cuando no podía
eliminarse, eran los intermediarios quienes afrontaban la exposición a este
riesgo.

Integración de las necesidades de los clientes y de los fabricantes. Los


intermediarios deben ocuparse de problemas que surgen cuando las
necesidades de los clientes chocan con las de los fabricantes. En un entorno
competitivo, un intermediario satisfactoriamente integrado proporciona un haz
de servicios que equilibra las necesidades de los clientes y de los fabricantes
de una forma aceptable para ambos.

11.1 TIPOS

A continuación se identifican diversos tipos de intermediarios basados en


Internet:

1. Directorios. Ayudan a los clientes a encontrar productos clasificando instalaciones


Web y proporcionando menús estructurados para facilitar la navegación. En la
actualidad son gratuitos, pero en el futuro podrían ser de pago. Existen tres tipos de
directorios:

o Generales. Como por ejemplo, Yahoo que proporciona un catálogo general de


una gran variedad de diferentes sitios Web. Habitualmente existe un esquema
para organizar y elegir los sitios que serán incluidos. Estas instalaciones suelen
soportar "browsing" así como búsqueda del catálogo mediante palabras clave.
o Comerciales. Como El Indice que se centra en proporcionar catálogos de sitios
comerciales. No proporcionan infraestructura o servicios de desarrollo para los
fabricantes, sino que tan sólo actúan como un directorio de instalaciones
existentes. También pueden suministrar información sobre una área comercial
específica, con frecuencia a empresas que no tienen Web. Estos
intermediarios son equivalentes a los editores de guías en papel.
o Especializados. Están orientados a temas, y son incluso tan sencillos como
una página creada por una persona interesada en un tema. Estas páginas
pueden suministrar al cliente información sobre un bien o fabricante en
particular.

1. Servicios de búsqueda. Similares a AltaVista, proporcionan a los usuarios


capacidades para realizar búsquedas basadas en palabras clave sobre grandes bases
de datos de páginas o instalaciones Web.
2. Centros comerciales. Son instalaciones que proporcionan una infraestructura al
fabricante o al detallista a cambio de una cuota. Pueden estar compuestos de una gran
variedad de tiendas que venden múltiples productos.
3. Editoriales. Son generadores de tráfico que ofrecen contenidos de interés para los
clientes, que parecen periódicos o revistas interactivas. Las editoriales se convierten en
intermediarios cuando ofrecen vínculos con los fabricantes a través de publicidad o
listas de productos relacionadas con sus contenidos.
4. Revendedores virtuales. Estos intermediarios existen para vender a los clientes
centrándose en productos especializados que obtienen directamente de los fabricantes,
quienes pueden dudar en dirigirse directamente a los clientes por temor a alejar a los
detallistas de los que dependen.
5. Evaluadores de los sitios Web. Los clientes pueden dirigirse a un fabricante a través
de un sitio que ofrece alguna forma de evaluación, lo que puede ayudar a reducir su
riesgo. Algunas veces las evaluaciones se basan en la frecuencia de acceso, mientras
que en otros casos son una revisión explícita de las instalaciones.
6. Auditores. Tienen funciones similares a las de los servicios de medición de audiencia
en medios tradicionales. El comercio electrónico requiere de los mismos servicios
adicionales que facilitan el comercio tradicional. Los anunciantes requieren información
sobre las tasas de uso asociadas con la publicidad en el Web, así como información
fidedigna sobre las características de los clientes.
7. Foros, clubes de aficionados y grupos de usuarios. Estos tipos de instalaciones no
son necesariamente intermediarios directos, pero pueden jugar un gran papel al facilitar
la retroalimentación entre clientes y fabricantes, así como soportar la investigación de
mercados. Los mejores ejemplos de estos grupos son las listas relacionadas con
productos que conectan al fabricante con los clientes.
8. Intermediarios financieros. Cualquier forma de comercio electrónico debe permitir
alguna manera de realizar o autorizar pagos del comprador hacia el vendedor. Los
sistemas de pago podrán ser desde autorización de crédito, cheques electrónicos,
pago en efectivo y envío de correo electrónico seguro para autorizar un pago.
9. Redes de trueque. Es posible que las personas cambien un bien o un servicio por
otro, en vez de pagarlo con dinero. Aparecerán intermediarios similares a las casas de
subastas y bolsas de mercancías para capitalizar estas oportunidades.
10. Agentes Inteligentes. Son programas que mediante un criterio preliminar de búsqueda
proporcionado por el usuario, facilitan la localización de recursos a través de Internet,
aprendiendo de los comportamientos pasados para optimizar las búsquedas. Esto
puede convertirse en un nuevo servicio de intermediación que los clientes adquieren
cuando necesitan cierto bien o servicio.

12. CONTRATACION INFORMATICA

Bajo la definición de contratación informática, se encuentra la contratación de


bienes o servicios informáticos. De esta manera entendemos por contratación
informática, aquella cuyo objeto sea un bien o un servicio informático -o ambos-
o que una de las prestaciones de las partes tenga por objeto ese bien o servicio
informático.

Bienes informáticos son todos aquellos elementos que forman el sistema


(ordenador) en cuanto al hardware, ya sea la unidad central de proceso o sus
periféricos, así como todos los equipos que tienen una relación directa de uso
con respecto a ellos y que, en conjunto, conforman el soporte físico del
elemento informático. Asimismo, se consideran bienes informáticos los bienes
inmateriales que proporcionan las ordenes, datos, procedimientos e
instrucciones, en el tratamiento automático de la información y que, en su
conjunto, conforman el soporte lógico del elemento informático.

Como Servicios informáticos se entiende todos aquellos servicios que sirven de


apoyo y complemento a la actividad informática en una relación de afinidad
directa con ella.
12.1 PARTES DE UN CONTRATO INFORMATICO

En la contratación informática se ven involucrados varios elementos, a los que


podemos denominar complementarios, que se interrelacionan entre sí.

Así, distinguiremos entre: contratantes, parte expositiva, cláusulas o pactos y


anexos, que se analizan a continuación.

12.1.1 LOS CONTRATANTES


No es lo mismo la contratación informática realizada entre profesionales de la
informática, que la contratación informática realizada entre un profesional de la
informática y un tercero.

Por ello, la identificación y situación profesional de los intervinientes reviste


gran importancia, debiendo fijar, no solamente quien adquiere cada
responsabilidad proveniente de la contratación y a quien representa, sino
también que conocimientos o formación profesional, o empresarial, relacionada
con el tema objeto del contrato, tiene cada uno debido a la obligación existente,
desde la óptica de una buena fe contractual, de informar correctamente a la
otra parte y de proporcionar claridad a las cláusulas y obligaciones del contrato.

La formación de la voluntad y las responsabilidades de cada una de las partes,


tienen una relación con la identificación personal y profesional de las mismas,
que la convierten en dato de gran importancia en este tipo de contratos.

12.1.2 PARTE EXPOSITIVA

En esta parte se expone, de forma clara y concreta, el por qué y el para qué del
contrato. Es importante señalar que dentro de los contratos informáticos es
imprescindible fijar de forma sencilla, por que se realiza el contrato y cuales
han sido los condicionantes o circunstancias que han movido a las partes a
unirse mediante esta relación contractual.

Para ello, se fijaran los intereses de cada cual, especificando las necesidades
de uno y la oferta del otro; dejando bien claro que es lo que ofrece una parte y
que es lo que acepta la otra y debiendo existir una coincidencia real sobre el
objeto, o concepto que de el y de su utilidad respecto al fin perseguido, tienen
cada una de las partes.

Por otro lado es de especial interés establecer claramente el negocio jurídico


en el cual luego, de acuerdo con la teoría general para ese negocio en el
ordenamiento, se pueda subsumir el caso e interpretar el contrato.

12.1.3 CLAUSULAS O PACTOS

Partiremos del principio de buena fe y, estableceremos una "obligación" de


colaboración en ambos sentidos; el suministrador debe colaborar con el usuario
y, lo que es igual de importante, el usuario debe colaborar con el suministrador.

Además, el usuario debe respetar y seguir las directrices que, respecto al bien
contratado y su implementación en el circuito de información, le indique el
suministrador y, consecuentemente, utilizar el equipo informático o los
programas, siguiendo las instrucciones que, para su optima utilización, le
señale. El suministrador, por su parte, se exonera de responsabilidad en el
caso en que exista una anomalía consecuencia del incumplimiento por parte
del usuario de estas instrucciones de funcionamiento o manejo.

Estas cláusulas o pactos han de cumplir los siguientes requisitos, aunque son
orientativos:
• Obligaciones de las partes, claras y concisas.
• El deber de asesoramiento.
• El cumplimiento del plazo.
• La formación del usuario.
• Prohibición de subarrendar.
• Sustitución del equipo.
• Definición de términos o conceptos oscuros.
• El mantenimiento preventivo.
• Cláusulas de garantía.

12.1.4 LOS ANEXOS

Es fundamental que los contratos informáticos vayan acompañados de unos


Anexos que incorporados a ellos y con la misma fuerza de obligar, contengan
diferentes desarrollos de elementos que forman parte sustancial del contrato.

Entre los Anexos tipo, que ayudan a describir el objeto y que siempre deben
figurar, en un contrato informático destacan:

Especificaciones del sistema a contratar.

Especificaciones de los programas a desarrollar.

Pruebas de aceptación.

Resultados a obtener y que, en algún caso, formaran el propio objeto del


contrato.

Análisis.

12.2 TIPOS DE CONTRATOS INFORMATICOS

Ante la gran diversidad de contratos informáticos que existen en la actualidad,


dividiremos su estudio en dos grupos diferenciados. El primero, respecto al
objeto, debido a las características especiales de los distintos objetos sobre los
que pueden versar estos contratos -ya sea hardware, software, servicios de
mantenimiento y formación, o llave en mano- que llevan a la necesidad de su
estudio y tratamiento individualizado.

El segundo, respecto al negocio jurídico, debido a que los contratos


informáticos, más comúnmente realizados, se han llevado a cabo bajo el
paraguas protector de una determinada figura jurídica en la que han
encontrado acomodo, pero casi todos los casos, ha sido necesario adecuar el
objeto del contrato al negocio jurídico realizado.

A - POR EL OBJETO

Por el objeto del contrato distinguiremos contratos de hardware, contratos de


software, contratos de instalación llave en mano y contratos de servicios
auxiliares.
Contratos de Hardware. En los que hay que conceptuar como hardware todo
aquello que, físicamente, forme parte del equipo, considerando como tal,
también, a los equipos de comunicaciones u otros elementos auxiliares para el
funcionamiento del sistema que se va a implementar.

Contratos de Software. Hay que diferenciar en el momento de analizar una


contratación de software, si se trata de un software de base o de sistema, o se
trata de u software de utilidad, o de aplicación o usuario, ya que este ultimo,
debe responder a unas necesidades particulares, las del propio usuario, el que
encarga la aplicación, y que, por tanto, tendrán que quedar claramente
especificadas en el contrato; sin embargo, el software de base o sistema y el
software de utilidad responden a unas características generales que son las del
propio sistema o las de la utilidad a la que sirven y es un producto ya
conformado de antemano que no se somete a peticiones o particularidades del
usuario.

Contratos de instalación llave en mano. En los que irán incluidos tanto el


hardware como el software, así como determinados servicios de mantenimiento
y de formación del usuario.

Contratos de servicios auxiliares. Como pueden ser, el mantenimiento de


equipos y programas o la formación de las personas que van a utilizar la
aplicación respecto a equipos, sistema o aplicaciones.

B - POR EL NEGOCIO JURIDICO

De acuerdo con el negocio jurídico del contrato, existirán tantos tipos de


contratos como negocios jurídicos se realicen sobre este objeto. Así, algunos
de los mas utilizados en el campo de la informática son los llamados de venta,
de arrendamiento financiero, de alquiler, de opción de compra, de
mantenimiento, de prestación de servicios, de arrendamiento de obra, de
préstamo, de deposito.

De venta. Cuando sea un contrato en el que el suministrador, o vendedor en


este caso, se obliga a entregar una cosa determinada, un bien informático, y la
otra parte, comprador, a pagar por él a un precio cierto (art. 1445 CC). La venta
también puede ser de servicios.

De arrendamiento financiero. Mediante el que se requiera que participen tres


partes, el suministrador, vendedor, del equipo informático, una entidad o
intermediario financiero que compra el bien, para un tercero que es el usuario,
y el usuario del bien que lo poseerá, pero lo tendrá en régimen de
arrendamiento financiero hasta que haya cumplido con unas determinadas
características o requisitos.

De alquiler. El arrendamiento sobre bienes informáticos es un arrendamiento


tipo de los regulados en el Código Civil, art. 1543 y ss., caracterizado porque el
suministrador se obliga a dar al usuario el goce o uso de un bien informático
durante un tiempo determinado y por un precio cierto.
De opción de compra. Aunque la opción de compra no esta definida en nuestro
ordenamiento y solamente se recoge para bienes inmuebles en la legislación
hipotecaria (art.14), nuestra doctrina y jurisprudencia la tienen bien delimitada
exigiendo que para que exista este tipo de contrato, tienen que darse tres
requisitos principales:

Respecto al optante, que le debe conceder la decisión unilateral de la


realización de la opción de compra.

Precio de compraventa, que debe quedar perfectamente señalado para el caso


de que el optante decida acceder a dicha compraventa.

Plazo del ejercicio de la opción de compra, que debe quedar determinado con
claridad en el acuerdo de las partes.

De mantenimiento. Puede ser tanto de equipos como de programas, o incluso,


mantenimiento integral en el que se puede incluir un servicio de formación,
asesoramiento y consulta.

De prestación de servicios. En los que incluiríamos análisis, especificaciones,


horas maquina, tiempo compartido, programas, etc., que los podíamos calificar
como unos contratos de arrendamientos de servicios. El arrendamiento de
servicios se da cuando una parte se obliga con la otra a prestarle unos
determinados servicios, con independencia del resultado que se obtenga
mediante la prestación.

De ejecución de obra, consistente en el compromiso de una de las partes, en


nuestro caso el suministrador del bien o servicio informático, a ejecutar una
obra, y de la otra parte realizar una contraprestación en pago por la obra
llevada a cabo.

De préstamo, caracterizado porque una parte entrega a otra el bien informático


para que use de él durante un tiempo determinado y le devuelva una vez
cumplido ese tiempo y de Comodato, consistente en un tipo de contrato de
préstamo en el que el suministrador transfiere el uso del bien informático
prestado. El Código Civil (art. 1740), se refiere al comodato como un contrato
de préstamo, en el que una de las partes entrega a la otra alguna cosa no
fungible para que use de ella por cierto tiempo y se la devuelva, indicando que
es esencialmente gratuito. En el caso de que se acuerde entre las partes una
retribución, deja de ser comodato para pasar a ser un arrendamiento de cosas.

De depósito, que se constituye, de acuerdo con lo establecido en el Código


Civil (art. 1758), desde que una persona recibe una cosa ajena con la
obligación de guardarla y restituirla, siendo un contrato gratuito, salvo pacto
contrario (art.1760), pero que en el caso de cumplirse los requisitos
establecidos en el Código de Comercio (art.303), se trata de un deposito
mercantil, en el que el depositario tendrá derecho a exigir retribución por el
deposito, salvo pacto contrario (art.304), con las obligaciones para el
depositario de conservación de la cosa, en este caso, del bien informático, de
acuerdo con lo establecido en los arts.306 y concordantes del mismo cuerpo
legal.

La contratación de bienes y la prestación de servicios informáticos no tiene una


calificación uniforme que la pueda situar, en cada caso, en un modelo o tipo de
contrato de los que figuran en nuestro ordenamiento.

Los contratos informáticos están formados por elementos dispares que exigen
la mezcla o unión de dos o más tipo de contratos para poder configurar sus
características, siendo su objeto múltiple y diversificado, pudiendo darse
multitud de figuras que desequilibrarían cualquier relación tipo que se pueda
pensar. Todo ello debido a la pluralidad de las partes que intervienen y la
dispersión de intereses entre ellas, así como a la particularidad de
determinadas cláusulas que forman parte de este tipo de contratos.

Asimismo el desconocimiento por el usuario, en términos generales, de las


posibilidades y limites de la informática, hace que no todo en el contrato pueda
estar basado en el ya mencionado principio de la autonomía de la voluntad de
los contratantes.

En muchas ocasiones, son contratos de adhesión, en los que una de las partes
fija las cláusulas del contrato y lo otra se adhiere a las mismas, sin tener
posibilidad de modificar ninguna de ellas. Estos contratos de adhesión son
producto de la contratación en masa que, frecuentemente, violan los derechos
de los consumidores de bienes y servicios informáticos por el gran desequilibrio
que se produce al faltar la emisión libre de voluntad por una de las partes en la
fijación de las cláusulas del contrato.

En algunos casos, como el de las conocidas contrataciones llave en mano,


seria adecuada la aplicación de la teoría del resultado en le contratación
informática, en un claro arrendamiento de obra. Ahora bien, ello implica que los
resultados se especifiquen en el contrato definiendo cuales son, dentro de unos
limites razonables, o dicho de ora forma, cuando la función básica de
tratamiento de la información sea cumplida aunque se puedan dar algunos
comportamientos de la misma que, sin tener gran carga sobre la aplicación, no
sean los adecuados o adolezcan de algunos errores o fallos.

En definitiva la contratación informática, en general, adolece de determinadas


características que la hacen extremadamente complicada en la redacción de
los contratos y en la fijación de los derechos y obligaciones de las partes. A ello
hay que añadir a inexistencia de una normativa adecuada a los mismo y la
dificultad en la fijación del objeto cuando son contratos complejos. Es por ello,
que se deben redactar teniendo en cuenta un equilibrio de prestaciones y evitar
en lo posible la existencia de cláusulas oscuras.

A continuación adjuntamos un ejemplo de los contratos informáticos más


extendidos y utilizados en la actualidad.

CONTRATO "LLAVE EN MANO" DE CESION DE USO DE PRODUCTOS


INFORMATICOS
Entre:

Domicilio:

CIF:
A continuación denominado el USUARIO

Y EMPRESA a continuación denominado el FABRICANTE, con CIF X-999999.


Y domicilio social en: La calle de la empresa, Zaragoza.

Se convienen las CLAUSULAS que a continuación se mencionan:

PRIMERA. OBJETO DEL CONTRATO

El FABRICANTE concede al USUARIO una licencia de uso de productos


informáticos (en adelante denominado el PRODUCTO), descrito en el ANEXO I
que forma parte de este contrato; esta licencia de uso no tiene el carácter de
exclusiva y será intransferible. El PRODUCTO será instalado en una sola
unidad central, propiedad del Usuario.

El FABRICANTE se compromete a prestar al USUARIO los siguientes


servicios, tal y como se definen en las cláusulas de este contrato:

Instalación del producto y soporte correspondiente.

Documentación del producto.

Soporte del producto.

SEGUNDA. USO DEL PRODUCTO

El producto que se define en el ANEXO correspondiente, esta diseñado para


funcionar como se describe en la documentación entregada con el mismo.

El inicio del uso del PRODUCTO sea considerado desde la fecha de su


recepción por el USUARIO. Esta fecha se denominara en adelante FECHA DE
INICIO.

TERCERA. INSTALACION Y SOPORTE

Se entiende por INSTALACION las acciones realizadas por el FABRICANTE


para que el PRODUCTO pueda ser utilizado por el USUARIO en el Hardware
designado.

En el momento de la INSTALACION se entregara al usuario la documentación


correspondiente del PRODUCTO en igual cantidad al numero de licencias
contratadas.
Para cada subsistema se recibirá formación técnica y asesoría en las
cuestiones relacionadas con el producto, también de adaptación paramétrica.

CUARTA. COPIAS ADICIONALES

Se entiende por LICENCIA ADICIONAL cualquier nueva instalación de los


PRODUCTOS. El USUARIO que necesite una LICENCIA ADICIONAL deberá
requerirlo por escrito al FABRICANTE.

Las LICENCIAS ADICIONALES se especifican en sucesivos ANEXOS al


presente contrato.

Para las siguientes licencias de uso se establece un descuento del 25% sobre
el precio de la primera.

QUINTA. GARANTIA

El PRODUCTO goza de una garantía de 60 días, contados a partir de la


FECHA DE INICIO. Esta fecha resultante, se denominara FECHA EFECTIVA
para el SOPORTE. Caso de la instalación de varios subsistemas en distintas
fechas se establecerá una garantía por subsistema a partir de la cual se iniciara
el SOPORTE, que deberá contratarse aparte.

Durante el periodo de GARANTIA, el USUARIO contara con un soporte


telefónico que de forma razonable cubrirá las incidencias presentadas. El
interlocutor del USUARIO debe tener información suficiente de operatoria del
PRODUCTO.

La GARANTIA asegura el cumplimiento de las especificaciones del


PRODUCTO. Si así no ocurriese y siempre que los fallos no se deban al mal
uso o negligencia del USUARIO se procederá a su corrección o reemplazo.
Dentro de la garantía no quedan incluidos los gastos que puedan originarse
como consecuencia del envío de material, de desplazamientos al domicilio del
usuario y demás gastos suplidos, que serán siempre por cuenta del usuario.

Una vez transcurrido el periodo de garantía, el USUARIO se responsabiliza de


la verificación de la idoneidad de los productos con licencias contratados para
alcanzar los resultados adecuados.

Cualquier modificación, alteración o ampliación de cuantas especificaciones se


contemplan en este contrato y sus correspondientes ANEXOS, se entenderán
excluidas de los mismos, y, consiguientemente, en caso de que por acuerdo
mutuo sean considerados cambios o modificaciones necesarios para la
viabilidad de los extremos pactados en este documento, deberán ser
contemplados en otro aparte que será ampliación del presente contrato.

SEXTA. CONFIDENCIALIDAD

A causa de la naturaleza confidencial del PRODUCTO el USUARIO queda


obligado a no vender, alquilar o poner a disposición de terceros el PRODUCTO
o cualquier información confidencial relacionada con el PRODUCTO. El
USUARIO reconoce y declara que el PRODUCTO suministrado por el
FABRICANTE y cualquier copia del mismo son y seguirán siendo propiedad del
FABRICANTE o de la firma representada por el FABRICANTE, declarando
expresamente esta propiedad en cualquier copia, total o parcial, realizada por
el USUARIO en desarrollo y conformidad con lo acordado en este contrato.

El FABRICANTE por su parte se obliga a no divulgar o utilizar, sin


consentimiento previo, información perteneciente al USUARIO considerada
como confidencial.

SEPTIMA. TRANSMISION DE OBLIGACIONES, NULIDAD DE CLAUSULAS.

Las obligaciones del USUARIO y del FABRICANTE, contraídas por el presente


contrato, se transmitirán a los respectivos sucesores o apoderados y a
cualquier otra entidad en la que cualquiera de las partes pueda incorporarse o
fusionarse de manera permanente o accidental.

Los contratantes declaran que consideran las cláusulas del presente contrato
independientes, por lo que la nulidad de una de ellas no origina la nulidad ni de
la totalidad del presente contrato, ni de las demás acordadas.

OCTAVA. RESPONSABILIDADES E INDEMNIZACIONES.

El FABRICANTE no será responsable de los retrasos en la ejecución de las


obligaciones derivadas de este contrato o interrupción del servicio, cuando
estos sucedan por causas ajenas a su voluntad y no le sean imputables.

El FABRICANTE no se hace responsable de las perdidas o daños sufridos por


el USUARIO, sus empleados o clientes, directamente o indirectamente
originados por errores en los programas, su documentación, la operación de los
programas o el uso de un hardware no autorizado por el FABRICANTE.

En el caso de que el FABRICANTE se disolviera por el motivo que fuera, se


compromete a depositar las fuentes del PRODUCTO ante un Notario ejerciente
de los de su ciudad para que el USUARIO, pueda cubrir sus necesidades
relativas a ellos, según las tarifas vigentes en esas fechas.

NOVENA. ARBITRAJE.

Para cualquier divergencia del presente contrato, ambas parte se someten


expresamente, y con renuncia a su fuero propio, a la decisión del asunto o
litigio planteado, mediante el arbitraje institucional de ARBITEC, Asociación
Española de Arbitraje Tecnológico, a la cual encomiendan la administraron del
arbitraje y la designación de los árbitros.

El arbitraje se realizara conforme al procedimiento establecido en el


Reglamento Arbitral de ARBITEC y en la Ley de Arbitraje, de 5 de diciembre de
1988.
El laudo arbitral deberá dictarse durante los noventa días siguientes a la
aceptación del cargo por parte de los árbitros designados, obligándose ambas
partes a aceptar y cumplir la decisión contenida en él.

Para el caso en que arbitraje no legara a realizarse por mutuo acuerdo o fuese
declarado nulo, ambas partes se someten a los Juzgados y Tribunales de
Zaragoza con renuncia a u propio fuero si este fuese otro.

DECIMA. ACTUALIZACION.

En el caso de que alguna o algunas de las cláusulas del contrato pasen a ser
invalidas, ilegales o inejecutables en virtud de alguna norma jurídica, se
consideraran ineficaces en la medida que corresponda, pero en lo demás, este
contrato conservara su validez.

Las partes contratantes acuerdan sustituir la cláusula o cláusulas afectadas por


otra u otras que tengan los efectos económicos más semejantes a los de las
sustituidas.

Este contrato y sus correspondientes anexos reemplazan a cualquier otro


compromiso o anexo establecido anteriormente sea verbalmente o por escrito,
que se refiera al mismo producto que en ellos se mencionan.

Y para que así conste, y en prueba de conformidad y aceptación al contenido


de este escrito, ambas partes lo firman por duplicado y a un solo efecto en la
fecha y lugar indicados en el encabezamiento.
EMPRESA EL USUARIO

Por: Por:

Cargo: Cargo:

Firma: Firma:

Fecha:Fecha:
ANEXO CONTRATO "LLAVE EN MANO" DE CESION DE USO DE
PRODUCTOS INFORMATICOS.

ANEXO I

DESCRIPCION
NUMERO DE
PRODUCTOS / IMPORTE HORAS INST. SOP.
LICENCIAS
MODULOS

TOTAL
(IVA no incluido)
Este Anexo forma parte del CONTRATO DE CESION DE USO DE
PRODUCTOS INFORMATICOS Núm. XXX/xcxxxxxx y esta sujeto a los
términos que en el mismo figuran.

CONDICIONES DE PAGO

COMERCIAL, PRIMAS Y PRODUCCION

30% a la aceptación del pedido.

40% a la aceptación de cada modulo.

30% a la aceptación de la instalación de todos los módulos.

GESTION DE PERSONAL Y AREA ECONOMICO-FINANIERA

30% a la aceptación del pedido.

70% a la puesta en marcha de cada modulo.

DOMICILIACION BANCARIA.

Las facturas de EMPRESA, serán presentadas al cobro. El USUARIO se


compromete a atenderlas a través de:

BANCO:

SUCURSAL:

DIRECCION:

NÚM. CTA.:

EMPRESA EL USUARIO

Por: Por:

Cargo: Cargo:

Firma: Firma:

13. EL PAGO POR INTERNET

No cabe duda que uno de los elementos fundamentales en el comercio en


general y en el comercio electrónico en particular, es la realización del pago
correspondiente a los bienes o servicios adquiridos. En este ámbito el comercio
electrónico presenta una problemática semejante a la que plantea en otros
sistemas de compra no presencial, es decir, en aquella en la que las partes no
se reúnen físicamente para realizar la transacción, como por ejemplo en la
compra por catálogo o telefónica:
• El comprador debe tener garantía sobre calidad, cantidad y características de los
bienes que adquiere.
• El vendedor debe tener garantía del pago.
• La transacción debe tener un aceptable nivel de confidencialidad.

En ocasiones, se entiende que para garantizar estos hechos, comprador y


vendedor deben acreditar su identidad, pero realmente sólo necesitan
demostrar su capacidad y compromiso respecto a la transacción. De esta
manera cada vez más sistemas de pago intentan garantizar la compra
"anónima". En el comercio electrónico se añade otro requerimiento que
generalmente no se considera en otros sistemas de venta no presencial, aún
cuando existe:

• El comprador debe tener garantía de que nadie pueda, como consecuencia de la


transacción que efectúa, suplantar en un futuro su personalidad efectuando otras
compras en su nombre y a su cargo.

Se observa que al tratar los medios de pago en el comercio electrónico, se


abordan fundamentalmente los temas de seguridad, garantía y acreditación.
Aún queda un requerimiento respecto a los medios de pago de cualquier tipo
de comercio:

• El costo por utilizar un determinado medio de pago debe ser aceptable para el
comprador y el vendedor.

Al igual que cuando se utiliza una tarjeta de crédito para pagar en una tienda, el
comerciante acepta el pago de un porcentaje sobre el importe de la compra a
cambio del mayor número de ventas que espera realizar aceptando este medio
de pago; los medios de pago asociados al comercio electrónico suelen
conllevar un costo que los puede hacer inapropiados o incluso inaceptables
para importes pequeños, los denominados micropagos. Para realizar estos
micropagos los sistemas suelen ser de uno de estos dos tipos:

1. El comprador adquiere dinero anticipadamente (prepago) para poder gastarlo


en pequeños pagos.
2. El comprador mantiene una cuenta que se liquida periódicamente y no
transacción a transacción. Este sistema se utiliza frecuentemente para el
acceso a pequeñas piezas de información de pago, como por ejemplo,
artículos de la prensa económica.

En el comercio electrónico pueden distinguirse dos tipos de medios de pago:

Medios de pago tradicionales, utilizados en cualquier tipo de transacción


comercial, electrónica o no. Por ejemplo:

Contrarrembolso. Es el único medio de pago utilizado en el comercio


electrónico que implica la utilización de dinero en efectivo. Hoy día es uno de
los medios de pago preferidos por el consumidor en general, pues garantiza la
entrega de los bienes antes del pago. Desde el punto de vista del vendedor
este medio de pago conlleva dos inconvenientes fundamentales: el retraso del
pago y la necesidad de recolectar físicamente el dinero por parte de quien
realiza la entrega.
Cargos en cuenta (domiciliación). Suele emplearse para cargos periódicos o
suscripciones, por ejemplo, el Boletín Oficial del Estado.

Tarjeta de débito y de crédito. Son el medio más popular y tradicionalmente


usado en el comercio electrónico. Para el comprador supone el pago al
momento de realizar la transacción (débito) o a posteriori, con o sin devengo de
intereses (crédito). Para el vendedor, suponen un cobro rápido, a cambio de
una comisión que le descuenta el banco.

Medios de pago específicos, para el nuevo entorno del comercio electrónico,


especialmente Internet. Por ejemplo:

Tarjeta de crédito o débito, sólo utilizable para el comercio electrónico. Su uso


es escaso.

Intermediarios electrónicos para sistemas basados en tarjetas de crédito


tradicionales:

CyberCash.

First Virtual.

Moneda electrónica

En cualquiera de los casos, los medios de pago utilizados pueden ser de pago
anticipado (prepago o "pay before"), inmediato ("pay now") o posterior ("pay
after").

Tarjetas de crédito y débito

Ampliamente usadas hoy en día como medio de pago en el comercio


electrónico, las tarjetas de crédito y débito tradicionales han permitido la
realización de transacciones comerciales en el nuevo medio a través de la
utilización de los procedimientos de liquidación y pago preestablecidos. Si se
realiza una compra en Internet utilizando una tarjeta de crédito como medio de
pago, la transacción comercial se ordena en la red, pero la validación y la
realización efectiva del pago se efectúa a través de los circuitos tradicionales
de procesamiento de operaciones con tarjeta de crédito.En el esquema más
general, intervienen en este proceso los siguientes actores:

• El comprador.
• El vendedor ("merchant").
• El banco emisor ("issuer") de la tarjeta de crédito o débito que presenta el cliente.
• El banco que en nombre del vendedor recibe la transacción ("acquirer") y en el cual
reside la cuenta en la que a éste se le va a liquidar el pago.
• La red de medios de pago ("scheme") como VISA o MasterCard.

El proceso de pago es como sigue:

1. Una vez realizado el pedido, el comprador proporciona su número de tarjeta al


vendedor a través de la red.
2. El centro servidor donde reside el vendedor envía la transacción al banco "acquirer" o
directamente a la red de medios de pago. Este envío suele producirse fuera de la red
pública y se realiza de forma análoga a como se efectuará desde una terminal punto de
venta (TPV) físico que existiese en una tienda real.
3. El banco receptor pide autorización al banco emisor a través de la red de medios de
pago.
4. Si la transacción se autoriza, la liquidación del pago (transferencia de dinero desde la
cuenta del comprador en el banco emisor hasta la cuenta del vendedor en el banco
receptor) se realiza a través de la red tradicional de medios de pago.

Como puede observarse el punto crítico de este proceso se produce cuando el comprador
envía su número de tarjeta al vendedor a través de una red pública potencialmente insegura
como Internet.El estándar que se utiliza en Internet para asegurar esta transferencia da datos
es el SSL (del Inglés, Secure Sockets Layer).Para la realización de una transacción utilizando
SSL se requiere de dos elementos:

1. Que el vendedor se haya certificado con una organización reconocida por las partes, lo
que supone un procedimiento administrativo y el pago de unas tarifas de alta, así como
la renovación de tal certificación.
2. Que el comprador utilice un visor o navegador ("browser") compatible como SSL.
3. Con el uso del SSL:
4. El comprador tiene garantía de que el vendedor es quien dice ser y que, por tanto, no
está entregando su número de tarjeta a un posible impostor.
5. La información que envía el comprador se cifra, impidiendo el acceso a la misma por
alguien distinto al vendedor.
6. Se garantiza la no-manipulación de los datos entre el comprador y el vendedor.
7. La versión 3 de SSL permite la autenticación del comprador, que debe recibir sus
claves previamente de una autoridad de certificación.

Lo que SSL no garantiza es el aspecto económico de la transacción, de tal manera que sólo
con proporcionar un número de tarjeta válido con saldo suficiente cualquier persona podría
intentar comprar electrónicamente de forma fraudulenta, sobre todo si no existe una entrega
física de los bienes en sí con una autoridad de certificación. Ante esta limitación, en 1995 se
constituyeron dos grupos de trabajo liderados respectivamente por VISA y MasterCard, que
comenzaron a definir dos estándares incompatibles para asegurar las transacciones dentro de
Internet. Afortunadamente, a principios de 1996 debido a la presión del mercado
(consumidores, vendedores, y fabricantes de tecnología) ambos grupos se fusionaron para la
definición del estándar SET (Secure Electronic Transactions) en el que participan además de
VISA y MasterCard, empresas como Microsoft, Netscape, IBM, Terisa, GTE, SAIC, VeriSign y
otras compañías tecnológicas. SET resuelve las siguientes necesidades:

1. Confidencialidad de los datos, tanto económicos, como respecto a la naturaleza de los


bienes comprados.
2. Integridad de los datos en la transacción, sin la posibilidad de modificaciones
intermedias.
3. Autenticación del comprador como legítimo usuario de un medio de pago.
4. Autenticación del comercio como poseedor de una cuenta de liquidación con un banco
vendedor.
5. Compatibilidad entre múltiples plataformas "hardware" y "software".

Antes de poder realizar una transacción SET, el cliente debe poseer un medio
de pago y recibir un certificado de la institución financiera emisora que incluye
la firma digital de esa institución y una fecha de expiración. De igual manera,
cada comercio debe también certificarse con la institución financiera donde
posee la cuenta de liquidación. Así, cada uno de los agentes (comprador,
vendedor, banco emisor, banco adquirente) de una transacción posee una
firma digital emitida por una autoridad de certificación SET.

Tarjetas chip

En pleno desarrollo, las tarjetas chip o tarjetas inteligentes son aquellas que
poseen una capacidad de almacenar información en un chip que incorporan.
Fundamentalmente esta información suele ser:

Una identificación que incluye determinadas claves cifradas.

Una cantidad de dinero disponible.

Antes de comprar es preciso cargarlas con dinero a través de un cajero


automático. Tras realizar esta operación funcionan como si contuvieran dinero
en efectivo ("cash"). Este tipo de tarjetas son ideales para realizar micropagos,
tanto en el comercio del mundo físico como en el virtual. No obstante, su
utilización en el comercio electrónico requiere de un dispositivo conectado a la
computadora personal, un módem o línea de teléfono que permita su lectura y
actualización al realizar transacciones por la red. En contrapartida, la existencia
de "inteligencia" local posibilita su utilización para múltiples aplicaciones:
cupones de descuento, aplicaciones de fidelización y almacenamiento de datos
específicos del cliente.

Cybercash

Procedente de la compañía Verifone, especializada en terminales punto de


venta, Cybercash es un sistema de realización de transacciones en Internet
mediante el uso de tarjetas de crédito. Una vez realizada la compra, el
comprador envía sus datos cifrados al vendedor. Este añade sus propios datos
que lo identifican y solicita autorización a CyberCash. A partir de aquí,
CyberCash se comunica con la red tradicional de medios de pago, y una vez
obtenida la autorización de la transacción, se la pasa al comercio.

CyberCash tiene una fortaleza basada en la emisión de más de 400,000


carteras de clientes y la conexión con el 80% de los bancos estadounidenses
pero puede verse seriamente afectada por la puesta en marcha de SET, que
reduciría sensiblemente el valor añadido de esta solución, por lo que está
intentando adaptarse al nuevo estándar.

First Virtual

First Virtual (FV) es un sistema de pagos operado por First USA y EDS, basado
en el mantenimiento de cuentas virtuales de clientes que se liquidan
periódicamente contra tarjetas de crédito.

Cada posible comprador debe darse previamente de alta, recibiendo un


número de identificación personal (NIP) sólo utilizable en transacciones por
Internet. Al hacer cada transacción, el comprador envía su NIP por correo
electrónico al vendedor, el cual lo comprueba contra FV. Una vez realizada la
operación de compra, FV solicita a través de correo electrónico la aceptación
del comprador, por lo que no se precisa ningún elemento de cifrado para
proteger los mensajes, y procede a realizar el cargo en la cuenta. FV se
convierte así en un centro de compensación independiente de los bancos
tradicionales y al liquidar las operaciones periódicamente, posibilita el uso de
este medio para micropagos.

14. ASPECTOS TRIBUTARIOS

Las autoridades deben prever que el comercio electrónico no socave la


capacidad del Gobierno para recaudar los ingresos públicos vía tributación.
Asimismo, los principios de tributación que rigen a los gobiernos en relación
con el comercio tradicional deberían adecuarse para su aplicación a esta nueva
vía de comercialización.

La relación existente entre la jurisdicción tributaria y el comercio electrónico no


es tan sencilla como se puede imaginar, dado que el término "comercio
electrónico" reúne transacciones muy diversas, tanto en sus contenidos como
en los sujetos intervinientes, incluso en la forma de su ejecución, pues la
transacción puede concluirse y realizarse a través de la propia Web "on line" o
por medio de otros medios "off line" como ser correo electrónico.

En Argentina, las operaciones de comercio electrónico se encuentran


alcanzadas por los gravámenes que integran el sistema tributario argentino,
entre ellos, el Impuesto al Valor Agregado. No obstante ello, se ha estimado
conveniente evaluar su impacto para determinar si y en qué medida la
legislación en vigor debería ser adaptada.

A mediados de 1998 se creó en el ámbito del Ministerio de Economía y Obras y


Servicios Públicos, un Grupo de Trabajo sobre Comercio Electrónico y
Comercio Exterior, en el cual participaron distintos sectores del gobierno
relacionados con el tema.

El objetivo de este Grupo fue examinar las implicancias de las distintas


modalidades del comercio electrónico en la República Argentina y los
requerimientos que ellas plantean en materia de políticas públicas, partiendo de
la premisa de que a las transacciones electrónicas deberían aplicarse los
mismos principios de imposición que rigen respecto del comercio tradicional:
(neutralidad, eficiencia, seguridad y simplicidad, eficacia e imparcialidad y
flexibilidad).

El citado Grupo se encontraba dividido en cinco subgrupos de trabajo temáticos


a saber: comercial, legal, tributario, financiero y tecnológico.

Debe destacarse que al Subgrupo de Asuntos Tributarios le correspondió la


tarea de analizar el impacto en la recaudación fiscal como consecuencia del
avance de las operaciones de comercio electrónico. En tal sentido, dicho
subgrupo se abocó, en primer término, al estudio del fenómeno de la elusión y
la evasión tributaria como factor de distorsión del comercio electrónico, así
como la situación impositiva y aduanera de los bienes intangibles y los
servicios, todo esto en el marco de la legislación vigente y de los compromisos
internacionales asumidos.

El Subgrupo de Aspectos Tributarios efectuó un análisis del comercio


electrónico y de las distintas modalidades de imposición, destacándose que
resulta sumamente importante la distinción entre comercio electrónico directo e
indirecto. Ello en virtud de que, el primero involucra bienes inmateriales que se
trasmiten por la red, mientras que el segundo, no guarda diferencia alguna con
las ventas telefónicas. En atención a ello, se consideró necesario definir
adecuadamente cada uno de los contratos involucrados a efectos de establecer
el tratamiento impositivo a dispensarles.

Bajo ese entendimiento, su informe aclara que se debe distinguir en primer


lugar si el comprador es un sujeto individual o una empresa, para
seguidamente analizar cada tipo de transacción en particular.

Así pues, en el caso de que el adquirente sea una persona física y el producto
digitalizado sea destinado a su consumo personal, se estará ante una
prestación de servicio, pudiendo presentarse en el Impuesto al Valor Agregado
las siguientes alternativas:

a) Operación efectuada con un prestador del exterior: en este caso la


transacción no se encuentra alcanzada por el impuesto.

b) Operación efectuada por un prestador local a un no residente: la operación


se encuentra gravada a tasa 0.

c) Operación efectuada con un prestador local: la misma se encuentra sujeta al


tributo.

En cuanto a las transacciones realizadas con empresas, sean éstas personas


jurídicas o empresas unipersonales, corresponderá analizar cada contrato en
particular para tipificar adecuadamente el mismo. En particular, pueden
presentarse los siguientes casos:

A) Transmisión de Software.

En este caso se debe distinguir el objeto del contrato a fin de determinar si se


está en presencia de una licencia de uso o una licencia de explotación. En el
primer caso, la operación recibirá el tratamiento de una prestación de servicios,
mientras que en el segundo caso se le dispensará el tratamiento de explotación
de derechos de autor.

Tratándose de una licencia de uso, se pueden presentar diversas alternativas


las que merecerán el siguiente tratamiento en el Impuesto al Valor Agregado:

Operación efectuada con un prestador del exterior: en este caso la transacción


está alcanzada por el impuesto, siempre que el prestatario no sea un sujeto
exento o no alcanzado por el impuesto.
Operación efectuada con un prestador local: la misma se encuentra sujeta al
impuesto.

Por el contrario, si se tratara de una licencia de explotación, dicha transacción


se encuentra fuera del objeto del Impuesto al Valor Agregado. En este caso no
resultaría aplicable la previsión contenida en el último párrafo del artículo 3º de
la ley del gravamen, por cuanto los derechos cedidos difícilmente se
relacionarían con una prestación gravada, en el sentido entendido por el
dispositivo legal.

B) Transmisión de información digitalizada (ejemplo música, libros, acceso a


base de datos, etc.).

Al igual que en el caso anterior, se deberá distinguir el destino dado al


producto. Así, en caso de uso, se estará ante una prestación de servicios,
mientras que si la transmisión está destinada a permitir la reproducción del
bien, existirá transferencia de derechos de autor, pudiendo éstos ser
acompañados o no de transferencia de marca.

C) Transferencia de información técnica (ejemplo planos, fórmulas, etc.)

En estos casos, independientemente del destino dado al intangible, se estará


ante una transferencia de tecnología, no resultando la operación alcanzada por
el Impuesto al Valor Agregado.

D) Locación de espacios publicitarios en sitios de la red.

El informe señaló que otro negocio que puede ser explotado a través de una
red es la locación de espacios publicitarios en los llamados sitios Web.

Una vez desarrollado el sitio Web, sus propietarios pueden ceder espacios
publicitarios a aquellas empresas interesadas en dar a conocer sus productos o
realizar publicidad institucional en Internet. De esta manera, se genera la
aparición de un negocio similar a la publicidad en los medios habituales de
comunicación.

A fin de establecer la imposición aplicable a los servicios de publicidad


prestados por propietarios de sitios Web, corresponde señalar que en el inciso
b de su artículo 1º de la Ley de Impuesto al Valor Agregado, se incluye dentro
del objeto del impuesto "... las prestaciones de servicios... realizadas en el
territorio de la Nación". En este sentido, la norma dispone que en el caso de las
telecomunicaciones internacionales, "... se las entenderá realizadas en el país
en la medida en que su retribución sea atribuible a la empresa ubicada en él".

Al respecto, el Grupo de Trabajo se expidió en el sentido de que dicha norma


podría ampliarse con la finalidad de incluir las prestaciones realizadas a través
de sitios Web, debiendo establecerse en qué casos debería considerarse la
existencia de exportación e importación de servicios.
A tales efectos, y de acuerdo con la ley del tributo, se deberá dilucidar si el
servicio es utilizado económicamente en el territorio nacional, por lo que se
estimó necesario incorporar como presunción legal que el servicio será
utilizado en el territorio nacional si la empresa prestataria es residente en el
país. Caso contrario, el servicio constituirá una exportación de servicio.

El informe comentado finaliza afirmando que la normativa actual del impuesto


al valor agregado en lo atinente a las definiciones de objeto y sujeto resulta
comprensiva de las transacciones efectuadas electrónicamente, sin perjuicio de
destacar la ausencia de algunos elementos constitutivos del hecho imponible.
Atento a ello, se estimó conveniente sugerir la incorporación en la Ley del
Impuesto al Valor Agregado, de disposiciones legales referidas al momento de
nacimiento de la obligación tributaria y su base de cálculo.

Asimismo, y en relación con la locación de espacios publicitarios en la red, se


estimó conveniente sugerir el dictado de los supuestos legales, relativos a la
utilización efectiva de los servicios en el impuesto al valor agregado.

Unidad 4. Microcontroladores.

Qué es un Microcontrolador

Muchos de los sistemas digitales pueden diseñarse empleando procesadores o


microcontroladores, la selección del dispositivo depende del tipo de aplicación y la
diferencia básica que existe entre estos dos dispositivos se explica a continuación:

o Los procesadores son empleados para procesar


información. A manera de ejemplo, con un procesador se podría hallar todas las
personas en Bogotá entre edades de 15 y 30 años, de sexo femenino, y
ordenados por el Apellido. Los procesadores usan un conjunto de instrucciones
útiles para procesar datos, lo cual los hace muy versátiles para manejar
información.
o Los microcontroladores son utilizados como su nombre lo
indica para controlar. Son muy utilizados para implementar controles
automáticos. Como ejemplo, un microcontrolador puede sensar la temperatura
de un proceso, compararla con un valor almacenado en memoria y tomar la
decisión de encender un equipo de calefacción si la temperatura baja de cierto
valor, y además de ello mostrar el valor en un display.

Los microcontroladores generalmente tienen instrucciones especiales que permiten


controlar procesos como el indicado anteriormente y otros más complejos; todo
depende de la habilidad del programador para generar el código para manejar el
proceso. Un microcontrolador es simplemente un procesador con memoria ROM y RAM,
puertos de E/S y otros dispositivos de propósito especial como conversores A/D,
contadores, temporizadores y puertos de comunicación, o en otras palabras es un
microcomputador con funciones especiales. En la figura 11.7.1 se indica la estructura
interna típica de un microcontrolador.
Figura 11.7.1. Estructura típica de un microcontrolador

Estos dispositivos generalmente incluyen variedad de funciones especiales que se


pueden utilizar gracias a los dispositivos internos incluidos dentro de ellos. Entre las
características mas relevantes de un microcontrolador, se pueden enunciar las
siguientes:

o La memoria de programa generalmente es una Flash


EEPROM.
o Tiene puertos de Entrada y Salida (Configurables por
software).
o Poseen contadores de propósito especial.
o Tiene incluido un reloj del sistema que permite
contabilizar tiempo.
o Algunos modelos incluyen conversores A/D.
o Tiene Memoria EEPROM para almacenar datos.
o Tiene puerto de comunicaciones.
o Manejan velocidades de operación hasta 20 MHz.
o Algunos de estos dispositivos tienen puerto de
comunicaciones serial.
o Tienen entradas para interrupción.
o La programación es rápida.
o Las herramientas de desarrollo son económicas y se
encuentran disponibles en a red, las cuales incluyen el ensamblador y simulador.

Los microcontroladores se pueden encontrar en varias aplicaciones que se relacionen


con medida, almacenamiento, control, cálculo entre otras. También se pueden
encontrar dentro de los teclados, módems, impresoras y otros periféricos. Como se
puede notar los microcontroladores son dispositivos muy versátiles que pueden ser
utilizados en muchas aplicaciones, donde todo el potencial se encuentra en la
programación.

Como seleccionar un microcontrolador

Dentro de cada familia de dispositivos, usted encontrará normalmente una selección de


varios microcontroladores dependiendo de los dispositivos internos que tenga
disponibles, y la capacidad de memoria de programa y datos.
Los microcontroladores también se especifican por la cantidad de bits que pueden
procesar por unidad de tiempo. Un número alto de bits indica que se trata de un
dispositivo rápido y de altas prestaciones. Los microcontroladores de 8 bits son muy
populares y se emplean en proyectos simples, sin embargo se encuentran arquitecturas
que manejan hasta 32 bits, para aplicaciones más complejas.

El consumo de potencia es otra especificación que se debe tener en cuenta, sobre todo
para sistemas alimentados por baterías. Los Chips normalmente son fabricados con
tecnología CMOS debido al consumo bajo que ofrece. Algunos de estos dispositivos
CMOS tienen disponible un estado de espera o modo "sleep", como el de los
compuatdores cuando se suspenden, el cual limita el consumo de corriente en unos
cuantos microamperios cuando los circuitos se encuentran inactivos. Usando este modo
de funcionamiento, el consumo de potencia puede ser reducido cuando se da espera a
la entrada de datos durante la ejecución de un programa.

Microcontroladores disponibles en el mercado

En esta sección se describen algunos microcontroladores populares que pueden ser


empleados para infinidad de aplicaciones. Lo más recomendable en la selección de un
microcontrolador es tener disponible un buen juego de herramientas de desarrollo y que
su costo no sea tan elevado, además de ello también es importante tener acceso a la
documentación del dispositivo para conocer su arquitectura y funciones. Para iniciarse
en la programación de estos dispositivos generalmente son recomendables los
microcontroladores de INTEL, MOTOROLA y MICROCHIP entre otros, de los cuales se
consiguen con facilidad sus herramientas de desarrollo y documentación. A continuación
de dará una breve descripción de los dispositivos de cada una de estas Marcas.

FAMILIA 805X, 80186 - INTEL

Los microcontroladores de la serie 8051, son la segunda generación después del 8048.
Este dispositivo es muy poderoso y fácil para programar. Tiene arquitectura Harvard, es
decir, que los la memoria de datos y programa se encuentran por separado en su
estructura. La memoria del programa es de 64K y la memoria de datos es de 128 bytes
y 256 bytes para los 8052. Hay disponible gran cantidad de software de desarrollo para
los microcontroladores de esta familia que puede ser encontrado en Internet.

La tercera generación de estos microcontroladores son los de la familia 80C196, los


cuales manejan palabras de 16 bits. Entre las principales características de estos
dispositivos se pueden enumerar las siguientes: efectúan operaciones de multiplicación
y división el hardware multiplica y divide, 6 modos de direccionamiento, Sistema de E/S
de alta velocidad, Conversor A/D, módulo de comunicación serial, 8 fuentes de
interrupción, generador de PWM, Watchdog Timer.

Existe también el microcontrolador 80386 EX, el cual tiene toda la potencialidad de un


procesador 80386 pero con dispositivos adicionales que lo convierten en un
microcontrolador muy potente y versátil. Este dispositivo tiene puerto serial, modos de
ahorro de energía, contadores y temporizadores, memoria DRAM y fuentes de
interrupción.

FAMILIA 68HC11 - MOTOROLA

El 68HC11 es un microcontrolador de 8 bits. Este microcontrolador tiene bus de


direcciones interno de 16 bits con un juego de instrucciones similar al de sus
predecesores de las familias 6801, 6805 y 6809. La arquitectura de estos
microcontroladores es Von-Newman, es decir, que las direcciones y los datos comparten
el mismo espacio en memoria. Dependiendo de la variedad, los 68HC11 tienen EEPROM
incorporada, RAM, entradas y salidas digitales, temporizadores, conversor A/D,
generador de PWM, contadores de pulsos, puerto de comunicaciones seriales sincrónicas
y asincrónicas, entre otras funciones.

PIC16C - MICROCHIP

Los microcontroladores de Microchip fueron los primeros dispositivos RISC. RISC


significa que el dispositivo tiene un número reducido de instrucciones, lo cual implica
simplicidad en su arquitectura y bajo costo. Aunque estos microcontroladores tienen
pocas instrucciones (33 para el PIC16CXX) en la actualidad son muy utilizados por su
facilidad de programación y costo reducido.

Estos dispositivos son de arquitectura Harvard, por lo cual teien buses de datos y
direcciones separados. Los beneficios que tiene este dispositivo frente a los demás es su
sencillez, lo cual permite fabricarlo en chips muy pequeños, con la ventaja adicional de
consumir muy poca energía.

Estos dispositivos son muy populares y generalmente se encuentran en aplicaciones en


revistas de electrónica e Internet. Actualmente existen varias familias de este
microcontrolador entre las cuales se pueden destacar la PIC16C5X, PIC16CXX, y la
PIC17CXX, que también se pueden conseguir con memoria Flash en las familias
PIC16FXXX

4.1 Arquitectura.
Arquitectura Von Neumann
La arquitectura tradicional de computadoras y microprocesadores
está basada en la arquitectura Von Neumann, en la cual la unidad
central de proceso (CPU), está conectada a una memoria única donde
se guardan las instrucciones del programa y los datos. El tamaño de
la unidad de datos o instrucciones está fijado por el ancho del bus que
comunica la memoria con la CPU. Así un microprocesador de 8 bits
con un bus de 8 bits, tendrá que manejar datos e instrucciones de
una o más unidades de 8 bits (bytes) de longitud. Si tiene que
acceder a una instrucción o dato de más de un byte de longitud,
tendrá que realizar más de un acceso a la memoria. Y el tener un
único bus hace que el microprocesador sea más lento en su
respuesta, ya que no puede buscar en memoria una nueva
instrucción mientras no _nalicen las transferencias de datos de la
instrucción anterior. Resumiendo todo lo anterior, las principales
limitaciones que nos encontramos con la arquitectura Von Neumann
son:
1. La limitación de la longitud de las instrucciones por el bus de datos,
que hace que el microprocesador tenga que realizar varios accesos a
memoria para buscar instrucciones complejas.
2. La limitación de la velocidad de operación a causa del bus único
para datos e instrucciones que no deja acceder simultáneamente a
unos y otras, lo cual impide superponer ambos tiempos de acceso.
Arquitectura Harvard
La arquitectura Harvard tiene la unidad central de proceso (CPU)
conectada a dos memorias (una con las instrucciones y otra con los
datos) por medio de dos buses diferentes. Una de las memorias
contiene solamente las instrucciones del programa (Memoria de
Programa), y la otra sólo almacena datos (Memoria de Datos). Ambos
buses son totalmente independientes y pueden ser de distintos
anchos. Para un procesador de Set de Instrucciones Reducido, o RISC
(Reduced Instrucción Set Computer), el set de instrucciones y el bus
de memoria de programa pueden diseñarse de tal manera que todas
las instrucciones tengan una sola posición de memoria de programa
de longitud. Además, al ser los buses independientes, la CPU puede
acceder a los datos para completar la ejecución de una instrucción, y
al mismo tiempo leer la siguiente instrucción a ejecutar. Ventajas de
esta arquitectura:
1. El tamaño de las instrucciones no esta relacionado con el de los
datos, y por lo tanto puede ser optimizado para que cualquier
instrucción ocupe una sola posición de memoria de programa,
logrando así mayor velocidad y menor longitud de programa.
2. El tiempo de acceso a las instrucciones puede superponerse con el
de los datos, logrando una mayor velocidad en cada operación.
Una pequeña desventaja de los procesadores con arquitectura
Harvard, es que deben poseer instrucciones especiales para acceder
a tablas de valores constantes que pueda ser necesario incluir en los
programas, ya que estas tablas se encontraran físicamente en la
memoria de programa (por ejemplo en la EPROM de un
microprocesador).
El microcontrolador PIC 16F84 posee arquitectura Harvard, con una
memoria de datos de 8 bits, y una memoria de programa de 14 bits.
En la Figura 5 vemos la arquitectura interna organizada en bloques
interconectados, en donde se incluye la memoria RAM, la memoria
EEPROM, los puertos de entrada y salida (I/O), etc.

El procesador
Es el elemento más importante del microcontrolador y determina sus
principales características, tanto a nivel hardware como software. Se
encarga de direccionar la memoria de instrucciones, recibir el código
OP de la instrucción en curso, su decodi_cación y la ejecución de la
operación que implica la instrucción, así como la búsqueda de los
operandos y el almacenamiento del resultado. Existen tres
orientaciones en cuanto a la arquitectura y funcionalidad de los
procesadores actuales.

CISC
Un gran número de procesadores usados en los microcontroladores
están basados en la _losofía CISC (Computadores de Juego de
Instrucciones Complejo). Disponen de más de 80 instrucciones
máquina en su repertorio, algunas de las cuales son muy so_sticadas
y potentes, requiriendo muchos ciclos para su ejecución. Una ventaja
de los procesadores CISC es que ofrecen al programador
instrucciones complejas que actúan como macros, es decir,

RISC
Tanto la industria de los computadores comerciales como la de los
microcontroladores están decantándose hacia la _losofía RISC
(Computadores de Juego de Instrucciones Reducido). En estos
procesadores el repertorio de instrucciones máquina es muy reducido
y las instrucciones son simples y, generalmente, se ejecutan en un
ciclo.

La sencillez y rapidez de las instrucciones permiten optimizar el


hardware y el software del procesador.

SISC
En los microcontroladores destinados a aplicaciones muy concretas,
el juego de instrucciones, además de ser reducido, es especí_co, o
sea, las instrucciones se adaptan a las necesidades de la aplicación
prevista. Esta filosofía se ha bautizado con el nombre de SISC
(Computadores de Juego de Instrucciones Específico).
Según la arquitectura interna de la memoria del microcontrolador se
puede distinguir entre:

• Microcontroladores con arquitectura Von Neumann.

• Microcontroladores con arquitectura Harvard.

Inicialmente, todos los microcontroladores adoptaron la arquitectura


clásica de Von Neumann. Actualmente, muchos microcontroladores
utilizan esta arquitectura, pero poco a poco se impone la arquitectura
Harvard.

La arquitectura de Von Neumann se caracteriza por disponer de una


sola memoria principal donde se almacenan datos e instrucciones de
forma indistinta. A dicha memoria se accede por un sistema de buses
único (direcciones, datos y control). Esta arquitectura presenta
algunos problemas cuando se demanda rapidez.

La arquitectura Harvard dispone de dos memorias independientes;


una, que contiene sólo instrucciones y otra, sólo datos. Ambas,
disponen de sus respectivos sistemas de buses de acceso y es posible
realizar operaciones de acceso (lectura o escritura) simultáneamente
en ambas memorias. Esta estructura no modifica nada desde el punto
de vista del usuario y la velocidad de ejecución de los programas es
impresionante.
http://html.rincondelvago.com/adquisicion-de-magnitudes-fisicas-
mediante-microcontrolador.html

 Arquitectura cerrada o abierta.

Entre los fabricantes de microcontroladores hay dos tendencias para


resolver las demandas de los usuarios.

Los microcontroladores con arquitectura cerrada poseen una


determinada UCP, cierta cantidad de memoria de datos, cierto tipo y
capacidad de memoria de instrucciones, un número de E/S y un
conjunto de recursos auxiliares muy concreto. El modelo no admite
variaciones ni ampliaciones. La aplicación a la que se destina debe
encontrar en su estructura todo lo que precisa, y en caso contrario,
hay que desecharlo.

Los microcontroladores con arquitectura abierta se caracterizan


porque, además de poseer una estructura interna determinada,
emplean sus líneas de E/S para sacar al exterior los buses de datos,
direcciones y control, con lo que se posibilita la ampliación de la
memoria y las E/S con circuitos integrados externos. Esta solución se
asemeja a la que emplean los clásicos microprocesadores.

La línea que separa unos de otros es muy delgada, pero el concepto


de microcontrolador se acerca posiblemente más a la arquitectura
cerrada.

Los microcontroladores PIC están basados en la arquitectura Harvard que posee buses y
espacios de memoria diferenciados para los datos y las instrucciones. Gracias a ella se puede
acceder de forma simultánea e independiente a la memoria de datos y a la memoria de
instrucciones, por tanto son más rápidos que los microcontroladores basados en la arquitectura
tradicional de Von Neuman.
Por otro lado, esta independencia entre datos e instrucciones permite que cada uno tenga el
tamaño más adecuado. Así, los datos tienen una longitud de 8 bits, mientras que las
instrucciones son de 14 bits (Figura 6-6).

Como se observa en la Figura 6-7 el PIC16F84 consta de un procesador con una ALU y un
Decodificador de Instrucciones, una memoria de programa tipo FLASH de 1K palabras de 14
bits, una memoria de datos SRAM con 68 posiciones de 8 bits. También existe una zona de 64
bytes de EEPROM para datos no volátiles. Finalmente dispone de interrupciones, un
temporizador, perro guardián y dos puertas A y B de entrada y salida de información digital.
http://www.dte.upct.es/docencia/temarios/tecn_electricidad_elect_dig/Tema6.PDF

4.1.1 Terminales.
4.1.2 CPU.
 Arquitectura del procesador o UCP.

Según la filosofía de la arquitectura del procesador se puede


distinguir entre:

• Microcontroladores CISC.

• Microcontroladores RISC.

• Microcontroladores SISC.

Un microcontrolador basado en la filosofía CISC (Computadores de


Juego de Instrucciones Complejo) dispone de más de 80 instrucciones
máquina en su repertorio, algunas de las cuales son muy sofisticadas
y potentes, requiriendo muchos ciclos para su ejecución.

Una ventaja de los procesadores CISC es que ofrecen al programador


instrucciones complejas que actúa como macros.

Tanto la industria de los computadores comerciales como los de los


microcontroladores están decantándose hacia la filosofía RISC
(Computadores de Juego de Instrucciones Reducido). En estos
procesadores el repertorio de instrucciones máquina es muy reducido
y las instrucciones son simples y, generalmente, se ejecuta en un solo
ciclo.

La sencillez y rapidez de las instrucciones permiten optimizar el


hardware y el software del procesador.

En los microcontroladores destinados a aplicaciones muy concretas,


el juego de instrucciones, además de ser reducido, es específico, o
sea, las instrucciones se adaptan a las necesidades de la aplicación
prevista. Esta filosofía se ha bautizado con el nombre de SISC
(Computadores de Juego de Instrucciones Específico).

http://html.rincondelvago.com/adquisicion-de-magnitudes-fisicas-
mediante-microcontrolador.html

2.1. Procesador.
Es el elemento más importante del microcontrolador tanto a nivel hardware como software.
Se encarga de direccionar la memoria de instrucciones, recibir el código OP (opcode) de la
instrucción en curso, su decodificación y la ejecución de la operación aritmética o lógica que
implica la instrucción, así como la búsqueda de los operandos y el almacenamiento del
resultado.
La necesidad de conseguir rendimientos elevados en el procesamiento de las instrucciones ha
desembocado en el empleo generalizado de procesadores de arquitectura Hardvard, frente a
los tradicionales que seguían la arquitectura de Von Neuman. Esta última se caracteriza
porque la CPU se conectaba a una memoria única donde coexistían datos e instrucciones a
través de un sistema de buses. En la arquitectura Harvard son independientes la memoria de
instrucciones y la memoria de datos y cada una dispone de su propio sistema de buses para el
acceso. Esto propicia el paralelismo (Figura 6-5).

El procesador o CPU.
El procesador responde a la arquitectura RISC, que se identifica porque el juego de
instrucciones se reduce a 35, donde la mayoría se ejecutan en un solo ciclo de reloj, excepto
las instrucciones de salto que necesitan dos ciclos.
La ALU (Arithmetic Logic Unit) ubicada dentro del procesador realiza las operaciones lógicas y
aritméticas con dos operandos, uno que recibe desde el registro W (registro de trabajo) y otro
que puede provenir de cualquier registro interno (Figura 6-7).
4.1.3 Espacio de Memoria.
Memoria
En los microcontroladores la memoria de instrucciones y datos está
integrada en el propio chip. Una parte debe ser no volátil, tipo ROM, y
se destina a contener el programa de instrucciones que gobierna la
aplicación. Otra parte de memoria será tipo RAM, volátil, y se destina
a guardar las variables y los datos.
Hay dos peculiaridades que diferencian a los microcontroladores de
los computadores personales:
• No existen sistemas de almacenamiento masivo como disco
duro o disquetes. Como el microcontrolador sólo se destina a
una tarea en la memoria ROM, sólo hay que almacenar un único
programa de trabajo.
• La RAM en estos dispositivos es de poca capacidad pues sólo
debe contener las variables y los cambios de información que
se produzcan en el transcurso del programa. Por otra parte,
como sólo existe un programa activo, no se requiere guarda r
una copia del mismo en la RAM pues se ejecuta directamente
desde la ROM.
Los usuarios de computadores personales están habituados a
manejar Megabytes de memoria, pero, los diseñadores con
microcontroladores trabajan con capacidades de ROM comprendidas
entre 512 bytes y 8 k bytes y de RAM comprendidas entre 20 y 512
bytes.
Según el tipo de memoria ROM que dispongan los microcontroladores,
la aplicación y utilización de los mismos es diferente. Se describen las
cinco versiones de memoria no volátil que se pueden encontrar en los
microcontroladores del mercado.
ROM con máscara
Es una memoria no volátil de sólo lectura cuyo contenido se graba
durante la fabricación del chip. Si tenemos idea de cómo se fabrican
los circuitos integrados, sabremos de donde viene el nombre. Estos se
fabrican en obleas que contienen varias decenas de chips. Estas
obleas se fabrican a partir de procesos fotoquímicos, donde se
impregnan capas de silicio y oxido de silicio, y según convenga, se
erosionan al exponerlos a la luz. Como no todos los puntos han de ser
erosionados, se sitúa entre la luz y la oblea una mascara con
agujeros, de manera que donde deba incidir la luz, esta pasará. Con
varios procesos similares pero más complicados se consigue fabricar
los transistores y diodos micrométricos que componen un chip. Ahora
ya sabes de donde viene la máscara y no te acostarás sin saber una
cosa más. El elevado coste del diseño de la máscara sólo hace
aconsejable el empleo de los microcontroladores con este tipo de
memoria cuando se precisan cantidades superiores a varios miles de
unidades.
OTP
El microcontrolador contiene una memoria no volátil de sólo lectura
programable una sola vez por el usuario.
OTP (One Time Programmable). Es el usuario quien puede escribir el
programa en el chip mediante un sencillo grabador controlado por un
programa desde un PC. La versión OTP es recomendable cuando es
muy corto el ciclo de diseño del producto, o bien, en la construcción
de prototipos y series muy pequeñas. Tanto en este tipo de memoria
como en la EPROM, se suele usar la encriptación mediante fusibles
para proteger el código contenido.

EPROM
Los microcontroladores que disponen de memoria EPROM (Erasable
Programmable Read OnIy Memory) pueden borrarse y grabarse
muchas veces. La grabación se realiza, como en el caso de los OTP,
con un grabador gobernado desde un PC. Si, posteriormente, se
desea borrar el contenido, disponen de una ventana de cristal en su
super_cie por la que se somete a la EPROM a rayos ultravioleta
durante varios minutos. Las cápsulas son de material cerámico y son
más caros que los microcontroladores con memoria OTP que están
hechos con material
plástico.

EEPROM, E2PROM o E2PROM


Se trata de memorias de sólo lectura, programables y borrables
eléctricamente EEPROM (Electrical Erasable Programmable Read OnIy
Memory). Tanto la programación como el borrado, se realizan
eléctricamente desde el propio grabador y bajo el control programado
de un PC. Es muy cómoda y rápida la operación de grabado y la de
borrado. No disponen de ventana de cristal en la superficie. Los
microcontroladores dotados de memoria EEPROM una vez instalados
en el circuito, pueden grabarse y borrarse cuantas veces se quiera sin
ser retirados de dicho circuito. Para ello se usan "grabadores en
circuito"que confieren una gran flexibilidad y rapidez a la hora de
realizar modi_caciones en el programa de trabajo. El número de veces
que puede grabarse y borrarse una memoria EEPROM es finito, por lo
que no es recomendable una reprogramación continua. Son muy
idóneos para la enseñanza y la Ingeniería de diseño. Se va
extendiendo en los fabricantes la tendencia de incluir una pequeña
zona de memoria EEPROM en los circuitos programables para guardar
y modificar cómodamente una serie de parámetros que adecuan el
dispositivo a las condiciones del entorno. Este tipo de memoria es
relativamente lenta, como ya veremos más adelante.

FLASH
Se trata de una memoria no volátil, de bajo consumo, que se puede
escribir y borrar. Funciona como una ROM y una RAM pero consume
menos y es más pequeña. A diferencia de la ROM, la memoria FLASH
es programable en el circuito. Es más rápida y de mayor densidad
que la EEPROM. La alternativa FLASH está recomendada frente a la
EEPROM cuando se precisa gran cantidad de memoria de programa
no volátil. Es más veloz y tolera más ciclos de escritura/borrado. Las
memorias EEPROM y FLASH son muy útiles al permitir que los
microcontroladores que las incorporan puedan ser reprogramados en
circuito, es decir, sin tener que sacar el circuito integrado de la
tarjeta. Así, un dispositivo con este tipo de memoria incorporado al
control del motor de un automóvil permite que pueda modi_carse el
programa durante la rutina de mantenimiento periódico,
compensando los desgastes y otros factores tales como la
compresión, la instalación de nuevas piezas, etc. La reprogramación
del microcontrolador puede convertirse en una labor rutinaria dentro
de la puesta a punto.

4.1.4 Entrada/ Salida.


Puertas de Entrada y Salida
Las puertas de Entrada y Salida (E/S) permiten comunicar al procesador con el
mundo exterior, a través de interfaces, o con otros dispositivos. Estas puertas,
también llamadas puertos, son la principal utilidad de las patas o pines de un
microprocesador. Según los controladores de periféricos que posea cada modelo de
microcontrolador, las líneas de E/S se destinan a proporcionar el soporte a las
señales de entrada, salida y control.

Periféricos digitales de entrada.


Pulsadores.
Estos dispositivos permiten introducir un nivel lógico en el momento que se les acciona,
pasando al nivel contrario cuando se deja de hacerlo (vuelven a la posición de reposo).

En el esquema de la izquierda de la Figura 6-14 la línea de entrada (IN) recibe un nivel


lógico alto cuando el pulsador está reposo y un nivel lógico bajo cuando se acciona. El
pulsador de la derecha funciona al revés.

Hay multitud de detectores, finales de carrera y sensores digitales que funcionan de la


misma manera que los pulsadores.
Interruptores.
Los interruptores tienen dos estados estables y hay que accionarlos para cambiar de uno a
otro. El interruptor admite el estado abierto y el estado cerrado. Las formas de conectar un
interruptor a una entrada del microcontrolador son iguales a las de la figura 6-14,
sustituyendo el pulsador por el interruptor.
Todos los circuitos electromecánicos (pulsadores, interruptores,...)
originan un fenómeno denominado “rebotes”: las láminas se abren y
se cierran varias veces en el momento de la transición (Figura 6-15).
El efecto que produce es semejante a abrir y cerrar el interruptor o
pulsador varias veces, por lo que puede provocar resultados
erróneos.
El efecto de los rebotes se puede solucionar bien mediante software, o bien por hardware.
En la Figura 6-16 se muestran dos circuitos hardware antirrebotes. El circuito de la izquierda
emplea un condensador y el de la derecha un flip-flop R-S.

Periféricos digitales de salida


Diodos LED.
El diodo led es un elemento que se emplea como indicador luminoso. Cuando la diferencia
de potencial entre su ánodo y su cátodo supere un determinado valor umbral el diodo led se
encenderá. Las líneas de los PIC pueden suministrar suficiente corriente como para
encender a un diodo led, por eso se pueden conectar directamente a través de una
resistencia como muestra la Figura 6-17. Si empleamos la conexión de la izquierda de la
figura, el diodo led se encenderá al poner a ‘1’ la salida del microcontrolador, mientras que
con la conexión de la derecha lo hará cuando la salida se ponga a ‘0’.

En ocasiones, los diodos u otro tipo de carga necesitan más corriente que la que pueden
entregar las líneas de los PIC. En ese caso es necesario intercalar una etapa amplificadora.
Relés
La activación y desactivación de un relé brinda la oportunidad de poder controlar cargas
mucho mayores (más corriente) porque pueden ser controladas por los contactos de dicho
relé (Figura 6-18).
Cuando la línea de salida, OUT, aplica un nivel alto a la base del transistor Darlington (etapa
amplificadora) hace que conduzca y se active el relé. Al cerrarse los contactos del relé se
controla una carga mayor. El valor de la resistencia depende del tipo de relé y del transistor.
http://www.dte.upct.es/docencia/temarios/tecn_electricidad_elect_dig/Tema6.PDF

4.1.5 Características especiales.


Reloj principal
Todos los microcontroladores disponen de un circuito oscilador que genera una
onda cuadrada de alta frecuencia, que configura los impulsos de reloj usados en la
sincronización de todas las operaciones del sistema. Esta señal del reloj es el motor
del sistema y la que hace que el programa y los contadores avancen.
Generalmente, el circuito de reloj está incorporado en el microcontrolador y sólo se
necesitan unos pocos componentes exteriores para seleccionar y estabilizar la
frecuencia de trabajo. Dichos componentes suelen consistir en un cristal de cuarzo
junto a elementos pasivos o bien un resonador cerámico o una red R-C.
Aumentar la frecuencia de reloj supone disminuir el tiempo en que se ejecutan las
instrucciones pero lleva aparejado un incremento del consumo de energía y de calor
generado.

RECURSOS ESPECIALES
Cada fabricante oferta numerosas versiones de una arquitectura básica de
microcontrolador. En algunas amplía las capacidades de las memorias, en otras
incorpora nuevos recursos, en otras reduce las prestaciones al mínimo para
aplicaciones muy simples, etc. La labor del diseñador es encontrar el modelo
mínimo que satisfaga todos los requerimientos de su aplicación. De esta forma,
minimizará el coste, el hardware y el software. Los principales recursos específicos
que incorporan los microcontroladores son:
• Temporizadores o Timers.
• Perro guardián oWatchdog.
• Protección ante fallo de alimentación o Brownout.
• Estado de reposo o de bajo consumo (Sleep mode).
• Conversor A/D (Analógico ->Digital).
• Conversor D/A (Digital ->Analógico).
• Comparador analógico.
• Modulador de anchura de impulsos o PWM (PulseWide Modulation).
• Puertas de E/S digitales.
• Puertas de comunicación.
A continuación pasamos a ver con un poco más de detalle cada uno de ellos
Temporizadores o Timers
Se emplean para controlar periodos de tiempo (temporizadores) y para llevar la
cuenta de acontecimientos que suceden en el exterior (contadores).
Para la medida de tiempos se carga un registro con el valor adecuado y a
continuación dicho valor se va incrementando o decrementando al ritmo de los
impulsos de reloj o algún múltiplo hasta que se desborde y llegue a 0, momento en
el que se produce un aviso. Cuando se desean contar acontecimientos que se
materializan por cambios de nivel o flancos en alguna de las patitas del
microcontrolador, el mencionado registro se va incrementando o decrementando al
ritmo de dichos impulsos. Vaya, nos hemos metido en términos de
microcontroladores demasiado pronto. Bueno, con el fin de aclarar que es un
registro, anticipamos que es un valor numérico en una posición fija de memoria. Un
ejemplo: esto es igual que el segundero de nuestro reloj digital, este va
aumentando hasta que llega a 60 segundos, pero en la pantalla pone 00, esto
quiere decir que se desborda. Pero cuando cambia da un aviso y se incrementan los
minutos. En este ejemplo, el registro es el segundero; estos son fijos ya que
sabemos que son los de la derecha del todo y no se van a cambiar.

Perro guardián oWatchdog


Cuando el computador personal se bloquea por un fallo del software u otra causa,
se pulsa el botón del reset y se reinicia el sistema. Pero un microcontrolador
funciona sin el control de un supervisor y de forma continuada las 24 horas del día.
El Perro Guardián consiste en un contador que, cuando llega al máximo, provoca un
reset automáticamente en el sistema.
Se debe diseñar el programa de trabajo que controla la tarea de forma que resetee
al Perro Guardián de vez en cuando antes de que provoque el reset. Si falla el
programa o se bloquea (si cae en bucle in_nito), no se refrescará al Perro guardián
y, al completar su temporización, provocará el reset del sistema.

Protección ante fallo de alimentación o Brownout


Se trata de un circuito que resetea al microcontrolador cuando el voltaje de
alimentación (VDD) es inferior a un voltaje mínimo (brownout). Mientras el voltaje
de alimentación sea inferior al de brownout el dispositivo se mantiene reseteado,
comenzando a funcionar normalmente cuando sobrepasa dicho valor. Esto es muy
útil para evitar datos erróneos por transiciones y ruidos en la línea de alimentación

Estado de reposo ó de bajo consumo


Son abundantes las situaciones reales de trabajo en que el microcontrolador debe
esperar, sin hacer nada, a que se produzca algún acontecimiento externo que le
ponga de nuevo en funcionamiento. Para ahorrar energía, (factor clave en los
aparatos portátiles), los microcontroladores disponen de una instrucción especial
(SLEEP en los PIC), que les pasa al estado de reposo o de bajo consumo, en el cual
los requerimientos de potencia son mínimos. En dicho estado se detiene el reloj
principal y se congelan sus circuitos asociados, quedando sumido en un profundo
sueño. Al activarse una interrupción ocasionada por el acontecimiento esperado, el
microcontrolador se despierta y reanuda su trabajo. Para hacernos una idea, esta
función es parecida a la opción de Suspender en el menú para apagar el equipo (en
aquellos PCs con administración avanzada de energía)

Conversor A/D (CAD)


Los microcontroladores que incorporan un Conversor A/D (Analógico/Digital) pueden
procesar señales analógicas, tan abundantes en las aplicaciones. Suelen disponer
de un multiplexor que permite aplicar a la entrada del CAD diversas señales
analógicas desde las patillas del circuito integrado.

Conversor D/A (CDA)


Transforma los datos digitales obtenidos del procesamiento del computador en su
correspondiente señal analógica que saca al exterior por una de las patillas del
chip. Existen muchos circuitos que trabajan con señales analógicas.

Comparador analógico
Algunos modelos de microcontroladores disponen internamente de un Amplificador
Operacional que actúa como comparador entre una señal fija de referencia y otra
variable que se aplica por una de las patitas de la cápsula. La salida del comparador
proporciona un nivel lógico 1 ó 0 según una señal sea mayor o menor que la otra.
También hay modelos de microcontroladores con un módulo de tensión de
referencia que proporciona diversas tensiones de referencia que se pueden aplicar
en los comparadores.

Modulador de anchura de impulsos o PWM


Son circuitos que proporcionan en su salida impulsos de anchura variable, que se
ofrecen al exterior a través de las patitas del encapsulado.

Puertos digitales de E/S


Todos los microcontroladores destinan parte de su patillaje a soportar líneas de E/S
digitales. Por lo general, estas líneas se agrupan de ocho en ocho formando Puertos.
Las líneas digitales de las Puertos pueden configurarse como Entrada o como Salida
cargando un 1 ó un 0 en el bit correspondiente de un registro destinado a su
configuración. Otra vez más nos volvemos a meter con unos, ceros y registros
paciencia que pronto llega lo mejor.

Puertas de comunicación
Con objeto de dotar al microcontrolador de la posibilidad de comunicarse con otros
dispositivos externos, otros buses de microprocesadores, buses de sistemas, buses
de redes y poder adaptarlos con otros elementos bajo otras normas y protocolos.
Algunos modelos disponen de recursos que permiten directamente esta tarea, entre
los que destacan:
• UART, adaptador de comunicación serie asíncrona.(Ej: Puerto Serie)
• USART, adaptador de comunicación serie síncrona y asíncrona
• Puerta paralela esclava para poder conectarse con los buses de otros
microprocesadores.
• USB (Universal Serial Bus), que es un moderno bus serie para los PC.
• Bus I2C, que es un interfaz serie de dos hilos desarrollado por Philips.
CAN (Controller Area Network), para permitir la adaptación con redes de
conexionado multiplexado desarrollado conjuntamente por Bosch e Intel para el
cableado de dispositivos en automóviles. En EE.UU. se usa el J185O.
Tanto el I2C en televisores, como el Bus CAN en automóviles, fueron diseñados para
simplificar la circuitería que supone un bus paralelo de 8 líneas dentro de un
televisor, así como para librar de la carga que supone una cantidad ingente de
cables en un vehículo.

4.2 Programación.
4.2.1 Modelo de programación.
Modelo de programación

El modelo de programación es un diagrama de bloques simplificado en el que sólo


aparecen los elementos que el programador puede manejar mediante el conjunto de
instrucciones.

En el MC68000 se dispone de 16 registros de 32 bits de propósito general (D0-D7, A0-


A7), un puntero contador de programa (PC) de 32 bits, y un registro de códigos de
condición (CCR) de 8 bits.

Los primeros 8 registros (D0-D7) se utilizan como registros de datos para bytes (8 bits),
words (16 bits) y long words (32 bits).
Los registros del segundo bloque de 8 (A0-A7) pueden ser utilizados como punteros de
pila o como bases de direcciones. En concreto el registro A7 es adoptado por el
microprocesador como puntero de la pila del sistema. Además, los registros de
direcciones pueden ser utilizados en operaciones con words y long words.

Todos los registros pueden utilizarse como registros índice.

Registro de datos

Registros de direcciones

(USP) Puntero de pila de usuario

Puntero de programa

CCR Registro de códigos de condición

Esquema de los registros del MC68000.

En estado supervisor se dispone de otros dos registros: Por una parte, el puntero de
la pila del supervisor (SSP Supervisor Stack Pointer) que sustituye al USP y por tanto
se establece como A7 en modo supervisor. Además se dispone del registro de estado
(SR Status Register) que es una ampliación del CCR.

Puntero de pila de supervisor

Registro de estado
Estos registros son exclusivos del modo supervisor.
EL REGISTRO DE ESTADO (SR)

Es un registro de 16 bits. El formato del registro de estado es el siguiente:

T S I2 I1 I0 XNZV C
Estructura del registro de estado (SR).

Esta dividido lógicamente en sus dos bytes, el byte alto denominaod BYTE del
SISTEMA, y el byte bajo, REGISTRO de CODIGOS DE CONDICION.

• BYTE del SISTEMA: sólo puede ser modificado desde el modo supervisor,
posee 5 bits significaativos que controlan el funcionamiento del
microprocesador. La función específica de cada bit es:
o T : BIT DE TRAZA, Cuando este bit está a 1, la CPU entra en el modo
de ejecución paso a paso. Después de ejecutarse una instrucción se
genera una excepción, que dará paso a la correspondiente subrutina. Util
para prueba y depuración.
o S: BIT de ESTADO, Cuando este bit está a 1 el microprocesador opera
en modo supervisor, cuando está a 0, en modo usuario. Este bit permite
el paso de modo supervisor a modo usuario.
o I2,I1,I0 : MASCARA DE INTERRUPCION, Estos 3 bits constituyen el
nivel de la máscara de interrupción. Esto quiere decir que, para que una
interrupción sea atendida, debe ser de un nivel superior al indicaado por
estos 3 bits.
• REGISTRO DE CODIGOS DE CONDICION (CCR): Solo son significativos
los 5 bits más bajos. Cada uno de estos bits, llamados "flags", tiene la función de
señalar la ocurrencia de un hecho concreto:

• C : BIT DE ACARREO, Sirve para notificar que el resultado de uan operación


aritmética supera el número de bits de los operandos. Depende de la instrucción
concreta como se verá afectado el bit C y la interpretación correcta de su valor.
Tambiésn se modifica por instrucciones de rotación y desplazamiento. Otras
instrucciones lo ponen a 0.
• V : BIT de DESBORDAMIENTO. Tiene sentido cuando se trabaja con valores
numéricos con signo (en complemento a 2 con el bit mas significativo reservado
para el signo) y se pone a 1 cuando el resultado de una operación no se puede
almacenar en el numero de bits que permite la representación del numero
• Z : BIT de CERO, Se pone a 1 cuando el resultado de una operación o de una
transferencia de datos es cero.
• N: BIT DE SIGNO, Contiene el valor del bit más significativo del resultado de
una operación aritmética ó lógica.
• X: BIT DE EXTENSION, Utilizado en operaciones de precisión múltiple , toma
el valor del bit C, salvo en operaciones de rotación extendida.

http://www.ii.uam.es/~fjgomez/68000/tutorial/cap1.html
4.2.2 Conjunto de instrucciones.
ADD - Add Binary

ADD

Suma Binaria

Operación

Fuente + Destino -> Destino

Sintaxis en Ensamblador

1- ADD <ea>,Dn
2- ADD Dn,<ea>

Atributos

Tamaños=(Byte, Word, Long)

Descripción

Suma el operando fuente con el operando destino, y guarda el resultado en el operando


destino. El tamaño de los operandos puede elegirse entre Byte, Word y Long. El Modo
de la instrucción que diferencia entre las dos sintáxis (1 o 2) indica que operando es el
fuente y cual es el destino asi como los tamaños de los operandos.

Registro de Códigos de Condición


X N Z V C
* * * * *

N: Se pone a 1 (Set) si el resultado es negativo. Se pone a 0 (Cleared) en otro caso.


Z: Se pone a 1 (Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Se pone a 1 (Set) si se genera desbordamiento (overflow). Se pone a 0 (Cleared) en
otro caso.
C: Se pone a 1 (Set) si se genera acarreo. Se pone a 0 (Cleared) en otro caso.
X: Toma el mismo valor que el C.

Codificación Binaria
1 1 0 1 Reg. Datos Modo Operación Dirección Efectiva

La Suma binaria admite dos Modos :

1. Modo 1 si se utiliza ADD <dir. efectiva>,Dx


2. con el Campo Modo Operacion = 000, 001, 010 Según sea BYTE, WORD y
LONG.

1. Modo 2 si se utiliza ADD Dx, <dir. efectiva>


2. con el Campo Modo Operacion = 100, 101, 110 Según sea BYTE, WORD y
LONG.

Los operandos pueden ser tamaño Byte, Word, o Long.

ABCD - Add Decimal with Extend

ADDA - Add Address

ADDI - Add Immediate

ADDI

Suma Inmediata

Operación

Dato Inmediato + Destino -> Destino

Sintaxis en Ensamblador

ADDI #<data>,<ea>

Atributos

Tamaño=(Byte, Word, Long)

Descripción

Suma el dato inmediato al operando destino, y almacena el resultado en el operando


destino. El tamaño del operando puede ser Byte , Word o Long. El tamaño del dato
inmediato se hace igual al del operando

Registro de Códigos de Condición


X N Z V C
* * * * *

N: Se pone a 1 (Set) si el resultado es negativo. Se pone a 0 (Cleared) de otro modo.


Z: Se pone a 1 (Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Se pone a 1 (Set) si se genera desbordamineto (overflow). Se pone a 0 (Cleared) en
otro caso.
C: Se pone a 1 (Set) si se genera acarreo. Se pone a 0 (Cleared) en otro caso.
X: Toma el mismo valor que el C.
Codificación Binaria

El campo Tamaño distingue entre :

1. BYTE = 00

1. WORD = 01

1. LONG = 10

Los operandos son tamaño Byte,Word o Long

0 0 0 0 0 1 1 0 Tamaño Modo Registro


WORD = Palabra (16 bits) BYTE = Byte ( 8 bits)
Palabra larga = LONG (32 bits)

ADDQ - Add Quick

ADDQ

Suma Rapida

Operación

Dato Inmediato + Destino -> Destino

Sintaxis en Ensamblador

ADDQ #<data>,<ea>

Atributos

Tamaño=(Byte, Word, Long)

Descripción

Suma el dato inmediato al operando destino y queda el resultado en destino. El rango de


valores del dato inmediato es de 1 a 8. El tamaño de la operación puede especificarse
como Byte, Word o Long.

En operaciones de tamaño Word o Long está también permitido usar registros de


direcciones, en cuyo caso el registro de códigos de condición no se ve afectado. Cuando
se suma el registro de direcciones, se emplea el tamaño total del registro de direcciones
independientemente del tamaño de operación.
Registro de Códigos de Condición
X N Z V C
* * * * *

N: Se pone a 1 (Set) si el resultado es negativo. Se pone a 0 (Cleared) de otro modo.


Z: Se pone a 1 (Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Se pone a 1 (Set) si se genera desbordamineto (overflow). Se pone a 0 (Cleared) en
otro caso.
C: Se pone a 1 (Set) si se genera acarreo. Se pone a 0 (Cleared) en otro caso.
X: Toma el mismo valor que el C.

Los códigos de condición no se alteran si el operando destino es un registro de


direcciones

Codificación Binaria
Dir. Efectiva
1 1 0 0 Dato 0 Tamaño
Modo Registro

El campo Tamaño distingue entre :

1. BYTE = 00

1. WORD = 01

1. LONG = 10

La operación puede ser tamaño Byte,Word o Long

ADDX - Add Extended

ADDX

Suma Extendida

Operación

Fuente + Destino + X -> Destino

Sintaxis en Ensamblador

ADDX Dy,Dx
ADDX -(Ay),-(Ax)

Atributos

Tamaño=(Byte, Word, Long)


Descripción

Suma el operando fuente con el destino y con el bit X, guarda el resultado en el


operando destino

Los operandos pueden direccionarse de dos maneras:

• Registro de Datos a registro de Datos: Los operandos estan contenidos en los


registros de datos especificados en la instrucción.
• Memoria a Memoria: Se indican los operandos con direccionamiento indirecto
con predecremento usando el registro de direcciones especificado en la
instrucción.

El tamaño de los operandos puede ser byte, word, or long.

Registro de Códigos de Condición


X N Z V C
* * * * *

N: Se pone a 1 (Set) si el resultado es negativo. Se pone a 0 (Cleared) de otro modo.


Z: Se pone a 1 (Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Se pone a 1 (Set) si se genera desbordamineto (overflow). Se pone a 0 (Cleared) en
otro caso.
C: Se pone a 1 (Set) si se genera acarreo. Se pone a 0 (Cleared) en otro caso.
X: Toma el mismo valor que el C.

Nota: Normalmente el bit Z se pone a 1 via programa antes de iniciar una operación.
Esto admite comprobar si el resultado es cero despues de realizar una operación de
multiple-precisión

Codificación Binaria
1 1 0 0 Reg. Destino 1 Tamaño 0 0 R/M Reg. Fuente

Admite dos Modos :

1. R/M=0 si se utiliza ADDX Dy,Dx

1. R/M=1 si se utiliza ADDX -(Ay),-(Ax)

El campo Tamaño distingue entre :

1. BYTE = 00

1. WORD = 01

1. LONG = 10

Los operandos son tamaño Byte, Word o Long


AND - And Logical

AND

And Lógico

Operación

Fuente & Destino -> Destino

Sintaxis en Ensamblador

AND <ea>,Dn
AND Dn,<ea>

Atributos

Tamaño=(Byte, Word, Long)

Descripción

Realiza la función lógica AND, bit a bit, entre el operando fuente y el destino
guardando el resultado en el destino.

El tamaño de la operación puede ser Byte, Word o Long.

No se puede usar como operando el contenido de un registro de direcciones.

Registro de Códigos de Condición


X N Z V C
- * * 0 0

N: Se pone a 1 (Set) si el bit mas significativo del resultado esta a 1. Se pone a 0


(Cleared) de otro modo.
Z: Se pone a 1(Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Siempre a 0 (cleared).
C: Siempre a 0 (cleared).
X: No se ve afectado.

Codificación Binaria
Dir. Efectiva
1 1 0 0 Reg. Datos Modo Opera.
Modo Registro

El And lógico admite dos Modos :

1. Modo 1 si se utiliza AND <dir. efectiva>,Dx


2. con el Campo Modo Operacion = 000, 001, 010 Según sea BYTE, WORD y
LONG.
1. Modo 2 si se utiliza AND Dx, <dir. efectiva>
2. con el Campo Modo Operacion = 100, 101, 110 Según sea BYTE, WORD y
LONG.

Los operandos pueden ser tamaño Byte, Word, o Long.

ANDI - AND Immediate

ANDI

AND Inmediato

Operación

Dato Inmediato & Destino -> Destino

Sintaxis en Ensamblador

ANDI #<data>,<ea>

Atributos

Tamaño=(Byte, Word, Long)

Descripción

Realiza la operación AND lógico entre el dato inmediato y el operando destino,


almacenado el resultado en el destino. El tamaño de la operación puede especificarse
como Byte, Word o Long. El tamaño de la operación se hace igual al tamaño del
operando.

Registro de Códigos de Condición


X N Z V C
- * * 0 0

N: Se pone a 1 (Set) si el bit mas significativo del resultado esta a 1. Se pone a 0


(Cleared) de otro modo.
Z: Se pone a 1(Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Siempre a 0 (cleared).
C: Siempre a 0 (cleared).
X: No se ve afectado.

Codificación Binaria

El campo Tamaño distingue entre :

1. BYTE = 00

1. WORD = 01
1. LONG = 10

Los operandos son tamaño Byte,Word o Long

0 0 0 0 0 1 1 0 Tamaño Modo Registro


WORD = Palabra (16 bits) BYTE = Byte ( 8 bits)
Palabra larga = LONG (32 bits)

ANDI to CCR - ANDI Immediate to Condition Codes

ANDI a CCR

ANDI Inmediato con el registro de Codigos de Condición

Operacion

Fuente & CCR -> CCR

Sintaxis en Ensamblador

ANDI #<data>,CCR

Atributos

Tamaño=(Byte)

Descripción

Realiza la operación AND entre el dato inmediato y el registro de codigos de condición,


almacenando el resultado en el byte bajo del registro de estado.

Registro de Códigos de Condición


X N Z V C
* * * * *

N: Se pone a 0 (Cleared) si el bit 3 del dato inmediato es cero. No cambia en otro caso.
Z: Se pone a 0 (Cleared) si el bit 2 del dato inmediato es cero. No cambia en otro caso.
V: Se pone a 0 (Cleared) si el bit 1 del dato inmediato es cero. No cambia en otro caso.
C: Se pone a 0 (Cleared) si el bit 0 del dato inmediato es cero. No cambia en otro caso.
X: Se pone a 0 (Cleared) si el bit 4 del dato inmediato es cero. No cambia en otro caso.

Codificación Binaria

ANDI a CCR

00000010 0 0 1 1 1 1 0 0
0 0 0 0 0 0 0 0 BYTE de datos ( 8 bits)
ANDI to SR - ANDI Immediate to the Status Register (Priviledged Instruction)

ADDQ - Add Quick

ASL,ASR - Arithmetic Shift

ASL

Desplazamiento aritmético a la izquierda

Operación

Sintaxis en Ensamblador

ASL Dy,Dx
ASL #<dato>,Dx
ASL <direccionamiento indirecto de memoria>

Atributos

Tamaño=(Byte, Word, Long)

Descripción

Suma el operando fuente con el destino y con el bit X, guarda el resultado en el


operando destino

Los operandos pueden direccionarse de dos maneras:

• Registro de Datos a registro de Datos: Los operandos estan contenidos en los


registros de datos especificados en la instrucción.
• Memoria a Memoria: Se indican los operandos con direccionamiento indirecto
con predecremento usando el registro de direcciones especificado en la
instrucción.

El tamaño de los operandos puede ser byte, word, or long.


Registro de Códigos de Condición
X N Z V C
* * * * *

N: Se pone a 1 (Set) si el resultado es negativo. Se pone a 0 (Cleared) de otro modo.


Z: Se pone a 1 (Set) si el resultado es cero. Se pone a 0 (Cleared) en otro caso.
V: Se pone a 1 (Set) si se genera desbordamineto (overflow). Se pone a 0 (Cleared) en
otro caso.
C: Se pone a 1 (Set) si se genera acarreo. Se pone a 0 (Cleared) en otro caso.
X: Toma el mismo valor que el C.

Nota: Normalmente el bit Z se pone a 1 via programa antes de iniciar una operación.
Esto admite comprobar si el resultado es cero despues de realizar una operación de
multiple-precisión

Codificación Binaria
1 1 0 0 Reg. Destino 1 Tamaño 0 0 R/M Reg. Fuente

Admite dos Modos :

1. R/M=0 si se utiliza ADDX Dy,Dx

1. R/M=1 si se utiliza ADDX -(Ay),-(Ax)

El campo Tamaño distingue entre :

1. BYTE = 00

1. WORD = 01

1. LONG = 10

Los operandos son tamaño Byte, Word o Long

ASL,ASR - Arithmetic Shift

Bcc - Branch Conditionally

Bcc

Branch Conditionally

Operation

If (condition true) then PC + d -> PC

Assembler Syntax

Bcc <label>
Attributes

Size=(Byte, Word, Long)

Description

If the specified condition is met, program execution continues at location (PC) +


displacement. The displacement is a two's complement integer which counts the relative
distance in bytes. The value in the PC is the sign-extend instruction location plus two. If
the 8-bit displacement in the instruction word is zero, then the 16-bit displacement
(word immediately following the instruction) is used. If the 8-bit displacement in the
instruction word is all ones ($FF), then the 32-bit displacement (long word immediately
following the instruction) is used. "cc" may specify the following conditions:

CC carry clear (!C)


CS carry set C
EQ equal Z
GE greater or equal N*V+(!N)*(!V)
GT greater than N*V*(!Z)+(!N)*(!V)*(!Z)
HI high (!C)*(!Z)
LE less or equal Z+N*(!V)+(!N)*V
LS low or same C+Z
LT less than N*(!V)+(!N)*V
MI minus N
NE not equal (!Z)
PL plus (!N)
VC overflow clear (!V)
VS overflow set V

Condition Codes

Not affected.

BCHG - Test a Bit and Change

BCHG

Test a Bit and Change

Operation

~(<bit number> of Destination) -> Z;


~(<bit number> of Destination) -> (bit number) of Destination

Assembler Syntax

BCHG Dn,<ea>
BCHG #<data>,<ea>
Attributes

Size=(Byte, Long)

Description

A bit in the destination operand is tested and the state of the specified bit is reflected in
the Z condition code. After the test, the state of the specified bit is changed in the
destination. If a data register is the destination, then the bit numbering is a modulo 32
allowing bit manipulation on all bits in a data register. If a memory location is the
destination, a byte is read from that location, the bit operation is performed using the bit
number, modulo 8, and the byte is written back to the location. In all cases, bit zero
refers to the least significant bit. The bit number for this operation may be specified in
two different ways:

• Immediate: the bit number is specified in the second word of the instruction.
• Register: the bit number is contained in a data register specified in the
instruction.

Condition Codes
X N Z V C
- - * - -

N Not affected.
Z Set if the bit tested is zero. Cleared otherwise.
V Not affected.
C Not affected.
X Not affected.

BCLR - Test a Bit and Clear

BCLR

Test a Bit and Clear

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

BRA - Branch Always

BRA

Branch Always

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

BSET - Test a Bit and Set

BSET

Test a Bit and Set

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

BSR - Branch to Subroutine

BSR

Branch to Subroutine

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

BTST - Test a Bit

CHK - Check Register against Bounds

CHK

Check Register against Bounds

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

CLR - Clear an Operand

CLR

Clear an Operand

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

CMP - Compare

CMP

Compare

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

CMPA - Compare Address

CMPA

Compare Address

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

CMPI - Compare Immediate

CMPI

Compare Immediate

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

CMPM - Compare Memory

CMPM

Compare Memory

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

DBCC - Test Condition, Decrement and Branch

DBCC

Test Condition, Decrement and Branch

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

DIVS - Signed Divide

DIVS

Signed Divide

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

DIVU - Unsigned Divide

DIVU

Unsigned Divide

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

EOR - Exclusive OR Logical

EOR

Exclusive OR Logical

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

EORI - Exclusive OR Immediate

EORI

Exclusive OR Immediate

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

EXG - Exchange Registers

EXG

Exchange Registers

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

EXT - Sign Extend

EXT

Sign Extend

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

JMP - Jump

JMP

Jump

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

JSR - Jump to Subroutine

JSR

Jump to Subroutine

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

LEA - Load Effective Address

LEA

Load Effective Address

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

LINK - Link and Allocate

LINK

Link and Allocate

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

LSL,LSR - Logical Shift

MOVE - Move Data from Source to Destination

MOVE

Move Data from Source to Destination

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

MOVE from SR - Move from the Status Register

MOVE from SR

Move from the Status Register

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

MOVE to CCR - Move to Condition Codes

MOVE to CCR

Move to Condition Codes

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

MOVE to SR - Move to the Status Register

MOVE to SR

Move to the Status Register

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

MOVE USP - Move User Stack Pointer

MOVE USP

Move User Stack Pointer

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

MOVEA - Move Adress

MOVEA

Move Adress

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

MOVEM - Move Multiple Registers

MOVEM

Move Multiple Registers

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

MOVEP - Move Peripheral Data

MOVEP

Move Peripheral Data

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

MOVEQ - Move Quick

MOVEQ

Move Quick

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

MULS - Signed Multiply

MULS

Signed Multiply

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

NBCD - Negate Decimal with Extend

NBCD

Negate Decimal with Extend

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

NEG - Negate

NEG

Negate

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

NEGX - Negate with Extend

NEGX

Negate with Extend

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

NOP - No Operation

NOP

No Operation

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

NOT - Logical Complement

NOT

Logical Complement

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

OR - Inclusive OR Logical

OR

Inclusive OR Logical

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

ORI - Inclusive OR Immediate

ORI

Inclusive OR Immediate

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

PEA - Push Effective Address

PEA

Push Effective Address

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

RESET - Reset External Devices

ROL,ROR - Rotate (without Extend)

ROXL,ROXR - Rotate with Extend

RTE - Return from Exception

RTE

Return from Exception

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

RTR - Return and Restore Condition Codes

RTR

Return and Restore Condition Codes

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

RTS - Return from Subroutine

RTS

Return from Subroutine

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

SBCD - Subtract Decimal with Extend

SBCD

Subtract Decimal with Extend

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.

SCC - Set According to Condition

SCC

Set According to Condition

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

STOP - Load Status Register and Stop

STOP

Load Status Register and Stop

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.

SUB - Subtract Binary

SUB

Subtract Binary

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

SUBA - Subtract Address

SUBA

Subtract Address

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.

SUBI - Subtract Immediate

SUBI

Subtract Immediate

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

SUBQ - Subtract Quick

SUBQ

Subtract Quick

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.

SUBX - Subtract with Extend

SUBX

Subtract with Extend

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

SWAP - Swap Register Halves

SWAP

Swap Register Halves

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.

TAS - Test and Set an Operand

TAS

Test and Set an Operand

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

TRAP - Trap

TRAP

Trap

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.

TRAPV - Trap on Overflow

TRAPV

Trap on Overflow

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -

N.
Z.
V.
C.
X.

TST - Test an Operand

TST

Test an Operand

Operation

Assembler Syntax

Attributes

Size=(Byte)

Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.

UNLK - Unlink

UNLK

Unlink

Operation

Assembler Syntax

Attributes
Size=(Byte)

Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.

http://www.ii.uam.es/~fjgomez/68000/tutorial/cap4.html

Operaciones de movimiento de datos

Los transvases de datos y direcciones son realizados principalmente por la


instrucción MOVE. Esta instrucción con sus diversos modos de direccionamiento y las
tres longitudes de operandos permite todo tipo de movimiento entre registros y
memoria. Además de esto se permiten ciertos tipos de movimiento de datos especiales
que son ejecutados por las instrucciones: MOVEM ( mueve múltiples registros de una
sola vez), MOVEP (mueve valores a direcciones de periféricos de 8 bits), MOVEQ
(ejecuta un movimiento rápido de valores inmediatos pequeños), EXG (intercambia el
contenido de dos registros entre sí), LEA (carga una dirección efectiva), PEA
( introduce en el stack una dirección efectiva), LINK ( establece un encadenamiento),
UNLIK ( elimina un encadenamiento).

Sintaxis de los
Instrucción Tamaño Operación
operandos
EXG Rn, Rm 32 Rn <=> Rm
LEA < ea > , An 32 < ea > => An
LINK An, # < d > 16 - >32 SP-4 => SP ; An => (SP)
SP => An ; SP + d => SP
MOVE < ea >, < ea > 8 , 16 , 32 Origen => Destino
MOVEA < ea >, list 16 , 32 -> 32
MOVEM list , < ea > 16 , 32 Reg de lista => Destino
< ea > , list 16 , 32 -> 32 Origen => Reg de lista
MOVEP Dn , (d16 , An ) 16 , 32 Dn [ 31:24 ] => ( An + d ) ;
Dn [ 23:16 ] => ( An + d + 2 ) ;
Dn [ 15:8 ] => ( An + d + 4 ) ;
Dn [ 7:0 ] => ( An + d + 6 ) ;
(d16 , An ), Dn ( An + d ) => Dn [ 31:24 ] ;
( An + d + 2 ) => Dn [ 23:16 ] ;
( An + d + 4 ) => Dn [ 15:8 ] ;
( An + d + 6 ) => Dn [ 7:0 ] ;
MOVEQ # < data , Dn 8 -> 32 Dato inmediato => Destino
PEA < ea > 32 SP - 4 => SP ; < ea > => ( SP )
An => SP ; ( SP ) => An ; SP + 4
UNLK An 32
=> SP

fig. 4-2 - Instrucciones de movimientos de datos.

Operaciones aritméticas con enteros

Las operaciones aritméticas son básicamente cuatro: ADD (suma), SUB (resta),
MUL (multiplicación) y DIV (división). A estas deben añadirse CMP/CMPM
(comparación), CLR (borrado) y NEG (negación o cambio de signo).

Las operaciones de multiplicación y división tienen dos variantes según se trate de


aritmética con signo o sin signo (MULS/MULU y DIV/DIVU).

Se pueden realizar operaciones multiprecisión mediante las operaciones ADDX,


SUBX, NEGX y EXT (extensión de un operando de un determinado tamaño hasta otro
superior).

Sintaxis de los
Instrucción Tamaño Operación
operandos
Dn , < ea > 8 , 16 , 32 Origen + Destino =>
ADD
< ea > , Dn 8 , 16 , 32 Destino
ADDA
< ea > , An 16 , 32
# < data > , < ea > 8 , 16 , 32 Dato inmediato + Destino
ADDI
# < data > , < ea > 8 , 16 , 32 =>
ADDQ
16 , 32 Destino
Dn , Dn 8 , 16 , 32 Origen + Destino + X =>
ADDX
- ( An) , - ( An) 8 , 16 , 32 Destino
CLR < ea > 8 , 16 , 32 0 => Destino
CMP < ea > , Dn 8 , 16 , 32 Destino - Origen
CMPA < ea > , An 16 , 32
CMPI # < data > , < ea > 8 , 16 , 32 Destino -> Dato inmediato
CMPM ( An ) + , ( An ) + 8 , 16 , 32 Destino - Origen
< ea > , Dn 32/ 16 => 16 Destino / Origen =>
DIVS
Destino
DIVU
con / sin signo
Dn 8 => 16 Destino signo ext. =>
EXT
Dn 16 => 32 Destino
< ea > , Dn 16 * 16 => 32 Destino / Origen =>
MULS
Destino
MULU
con / sin signo
NEG < ea > 8 , 16 , 32 0 - Destino => Destino
NEGX < ea > 8 , 16 , 32 0 - Destino - X -> Destino
SUB Dn , < ea > 8 , 16 , 32 Destino - Origen =>
< ea > , Dn 8 , 16 , 32 Destino
SUBA < ea > , An 16 , 32
SUBI # < data > , < ea > 8 , 16 , 32 Destino - Dato inm. =>
SUBQ # < data > , < ea > 8 , 16 , 32 Destino
Dn , Dn 8 , 16 , 32 Destino - Origen - X =>
SUBX
- ( An) , - ( An) 8 , 16 , 32 Destino

fig. 4-3 - Instrucciones de operaciones aritméticas.

4.1.3.- Operaciones de lógica.

Las operaciones lógicas disponibles son AND, OR, EOR y NOR. Estas admiten todo
tipo de operando entero con cualquier tamaño.

Para realizar operaciones lógicas con datos inmediatos existen las siguiente
variantes de las anteriores operaciones: ANDI, ORI y EORI.

A este conjunto de instrucciones se puede añadir la TST, que realiza una


comparación del operando con cero, afectando en consecuencia a los códigos de
condición.

Instrucción Sintaxis de los operandos Tamaño Operación


AND Dn, < ea > 8 , 16 , 32 Origen Destino => Destino
< ea > , Dn 8 , 16 , 32
ANDI Dato inm. ^ Destino =>
# < data > , < ea > 8 , 16 , 32
Destino
EOR Dn, < ea > 8 , 16 , 32 Origen Destino => Destino
EORI # < data > , < ea > 8 , 16 , 32 Dato inm. Destino -> Destino
NOT < ea > 8 , 16 , 32 ~ Destino => Destino
OR Dn, < ea > 8 , 16 , 32 Origen V Destino => Destino
< ea > , Dn 8 , 16 , 32
ORI Dato inm. V Destino =>
# < data > , < ea > 8 , 16 , 32
Destino
TST < ea > 8 , 16 , 32 Destino - 0 ==> Condiciones
del CCR

fig. 4-4 - Instrucciones de operaciones de lógica.

4.1.4.- Operaciones de rotación y desplazamiento.

Se dispone de instrucciones de desplazamiento de los bits en un operando en los dos


sentidos, derecha e izquierda, y en modo aritmético (con signo) y lógico. Estas son
ASL, LSL y LSR

Las operaciones de rotación también pueden realizarse en los dos sentidos, y


además pueden afectar o no al bit de extensión en el registro de códigos de condición
(CCR). se tienen por tanto cuatro instrucciones que son: ROR, ROL, ROXR, ROXL.

Las operaciones de rotación y desplazamiento sobre registros admiten todos los


tamaños de operando y un número de bits a desplazar entre 1 y 8. Si el operando está en
memoria sólo se admite el tamaño word y movimientos de un bit.

La instrucción swap intercambia los contenidos de las dos mitades de 16 bits de un


registro.

Instrucción Sintaxis de los operandos Tamaño Operación


ASL Dn, Dn 8 , 16 , 32
# < data >, Dn 8 , 16 , 32
< ea > 16
ASR Dn, Dn 8 , 16 , 32
# < data >, Dn 8 , 16 , 32
< ea > 16
LSL Dn, Dn 8 , 16 , 32
# < data >, Dn 8 , 16 , 32
< ea > 16
LSR Dn, Dn 8 , 16 , 32
# < data >, Dn 8 , 16 , 32
< ea > 16
ROL Dn, Dn 8 , 16 , 32
# < data >, Dn 8 , 16 , 32
< ea > 16
ROR Dn, Dn 8 , 16 , 32
# < data >, Dn 8 , 16 , 32
< ea > 16
ROXL Dn, Dn 8 , 16 , 32
# < data >, Dn 8 , 16 , 32
< ea > 16
ROXR Dn, Dn 8 , 16 , 32
# < data >, Dn 8 , 16 , 32
< ea > 16
SWAP Dn 32

fig. 4-5 - Instrucciones de rotación y desplazamiento.

4.1.5.- Operaciones de manipulación de bits.

Se pueden realizar operaciones con bits mediante las instrucciones: BTST ( testeo de un
bit ). BSET ( testeo y puesta a uno de un bit ), BCLR ( testeo y puesta a cero de un bit )
y BCHG ( testeo y cambio del estado de un bit ). Cuando el operando es un registro el
tamaño asumido es de 32 bits, pero si el operando está en memoria el tamaño se toma
como byte.

Sintaxis de los
Instrucción Tamaño Operación
operandos
BCHG Dn , < ea > 8 , 32 ~ Destino [P] => Z =>
# < data > , < ea > 8 , 32 Destino [P]
BCLR Dn , < ea > 8 , 32 ~ Destino [P] => Z;
# < data > , < ea > 8 , 32 0 => Destino [P]
BSET Dn , < ea > 8 , 32 ~ Destino [P] => Z;
# < data > , < ea > 8 , 32 1 => Destino [P]
BTST Dn , < ea > 8 , 32 ~ Destino [P] => Z ;
# < data > , < ea > 8 , 32
fig. 4-6 - Instrucciones de manipulaación de bits.

4.1.6.- Operaciones con decimal codificado en binario ( BCD ).

Pueden realizarse operaciones aaritméticas multiprecisión con formato decimal


codificado en binario (BCD) mediante: ABCD ( suma decimal con extensión ),SBCD
( resta decimal con extensión ) y NBCD ( negación o cambio de signo decimal con
extensión ).

Instrucción Sintaxis de los operandos Tamaño Operación


ABCD Dn, Dn 8 Origen + Destino + X =>
- ( An ), - ( An ) 8 Destino
10 10 10
NBCD < ea > 8 0 - Destino + X => Destino
10 10
SBCD Dn, Dn 8 Destino - Origen - X =>
- ( An ), - ( An ) 8 Destino
10 10 10

fig. 4-2 - Instrucciones de movimientos de datos.

4.1.7.- Operaciones de control del programa.

El flujo del programa se controla mediante tres grupos de instrucciones: saltos


condicionales ( Bcc y DBcc ), saltos incondicionales ( BRA, BSR, JMP y JSR ) y
retornos ( RTR y RTS ).
Las instrucciones de salto condicional admiten las condiciones de test vistas en el
apartado 3.2.
La instrucción NOP no tiene ningún efecto, por lo que puede considerarse dentro de
este grupo como un salto a la siguiente posición.

Sintaxis de los
Instrucción Tamaño Operación
operandos
Condicionales
Bcc < label > 8 , 16 Si cc cierta, PC + d => PC
Dn , < label > 16 Si cc falsa, Dn - 1 => Dn;
DBcc
si Dn distinto - 1, PC + d => PC
Scc < ea > 8 Si cc cierta 11111111 => Destino
si no, 0 => Destino
Incondicionales
BRA < label > 8, 16 PC + d => PC
BSR < label > 8, 16 SP - 4 => SP;
PC => ( SP );
PC + d => PC
JMP < ea > - < ea > => PC
JSR < ea > - SP - 4 =>SP;
PC => ( SP );
< ea > => PC
NOP - - -
Retornos
RTR - - SP => CCR;
SP + 2 => SP;
( SP ) => PC;
SP + 4 => SP
RTS - - ( SP ) => PC;
SP + 4 => SP

fig. 4-8 - Instrucciones de control de programa.

4.1.8.- Operaciones de control del sistema.

Las operaciones de control del sistema se realizan mediante las instrucciones


privilegiadas ( RESET, RTE, STOP, ORI to SR, MOVE USP, ANDI to SR, EORI to
SR y MOVE EAA to SR ), las de generación de traps ( TRAP, TRAPV y CHK ) y
aquellas que utilizan o modifican el registro de estado SR ( ANDI CCR, EORI CCR,
MOVE CCR to EA, ORI CCR y MOVE SR to EA ).

Sintaxis de los
Instrucción Tamaño Operación
operandos
Privilegiadas
ANDI # < data > , SR 16 Dato inmediato ^ SR =>SR
EORI # < data > , SR 16 Dato inmediato SR => SR
MOVE < ea > , SR 16 Origen => SR
MOVE USP, An 32 USP => An
An, USP An => USP
ORI # < data > , SR 16 Dato inmediato SR => SR
RESET - - Activa la linea RESET
RTE - - ( SP ) => SR;
SP + 2 => SP;
( SP ) => PC;
SP + 4 => SP;
STOP # < data > 16 Dato inmediato => SR; Parar
Generación de Traps
CHK < ea >, Dn 16 Si Dn < 0 ó Dn > ( < ea > ),
entonces excepción CHK
TRAP # < data > 16 SSP - 4 => SSP;
PC => ( SSP );
SSP - 2 => SSP;
SR => ( SSP );
Vector trap nº < data > => PC
TRAPV - - Si V es 1, proceso de excepción
Registro de condiciones
ANDI # < data > , CCR 8 Dato inmediato ^ CCR => CCR
EORI # < data > , CCR 8 Dato inmediato CCR => CCR
MOVE SR, < ea > 16 SR => Destino
MOVE < ea > , CCR 16 Origen => CCR
ORI # < data > , CCR 8 Dato inmediato CCR => CCR

fig. 4-9 - Instrucciones de control del sistema.

4.1.9.- Operaciones multiprocesador.

Para trabajar con sistemas multiprocesador se dispone de la instrucción TAS que ejecuta
un ciclo de lectura-modificación-escritura indivisible.

Sintaxis de los
Instrucción Tamaño Operación
operandos
TAS < ea > 8 Destino - 0; 1 => Destino

fig. 4-10 - Instrucciones multiprocesador.

4.2.3 Modos de direccionamiento.

MODOS DE DIRECCIONAMIENTO

2.1.-Direccionamiento y Formato de las instrucciones.


La codificación de instrucciones del 68000 contiene dos tipos de datos: la operación
a realizar y la localización de los operandos. Esta localización de operandos puede
hacerse de una de las tres siguientes formas:

'Especificación de registro'. En la codificación de la instrucción hay un campo en


el que se determina un número de registro.
'Dirección efectiva'. Este sistema se verá detalladamente a continuación.
'Referencia implícita'. Por definición de la operación a realizar está implícito el
uso de determinados registros.
Los 14 modos de direccionamiento se agrupan en seis tipos básicos:

1.-Direccionamiento directo a registro


* Directo a registro de datos
* Directo a registro de direcciones
2.- Direccionamiento absoluto
* Absoluto corto
* Absoluto largo
3.- Direccionamiento relativo al puntero de programa
* Relativo con desplazamiento
* Relativo con índice y desplazamiento
4.-Direccionamiento indirecto
* Indirecto
* Indirecto con postincremento
* Indirecto con predecremento
* Indirecto con índice y desplazamiento
5.- Direccionamiento inmediato
* Inmediato
* Inmediato rápido
6.- Direccionamiento implícito
* Registro implícito

Modos de direccionamiento.

2.2.1- Formato de las instrucciones.


La codificación de instrucciones puede ocupar desde una word hasta cinco. En la
primera word se especifica la operación a realizar y el tamaño de los operandos.

Cuando no se utiliza direccionamiento por dirección efectiva, la word de operación


puede llevar también la especificación de registros. En caso de utilizar el método de
dirección efectiva se necesitan otras words de extensión que en alguna ocasión pueden
ser hasta cuatro.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
word de operación
( especifica la operación y el modo )
operando inmediato o extensión de dirección efectiva
de origen
( si es necesario, una o dos words )
dirección efectiva del destino
( si es necesario, una o dos words )
Formato de las instrucciones

2.2.2- Dirección efectiva.


La mayoría de los direccionamientos en el 68000 se realizan mediante el método de
'dirección efectiva'. Este método consiste en codificar dentro de la word de operación el
tipo de direccionamiento a usar según la pauta de la siguiente figura.

Codificación de la dirección efectiva

Codificación:

MODO DE DIRECCIONAMIENTO Notación MODO Registro


Directo por registro de datos. Dn 000 número
Directo por registro de direcciones An 001 número
Indirecto por registro de direcciones. (An) 010 número
idem con postincremento. (An)+ 011 número
idem con predecremento. -(An) 100 número
idem con desplazamiento. (d16,An) 101 número
idem con índice y desplazamiento. (d8,An,Xm) 110 número
Absoluto corto xxx.W 111 000
Absoluto largo xxx.L 111 001
PC con desplazamiento (d16,PC) 111 010
PC con indice y desplazamiento (d8,PC,Xn)
111 011
Inmediato #<dato>
111 100
Direccionamientos por dirección efectiva

2.2.3- Modos directos a registro.


Estos modos especifican como operando uno de los 16 registros multifunción del
68000. El tamaño a utilizar de los mismos queda especificado en la word de operación.

Considérese como ejemplo la instruccion ADD.W <ea>,D3 que realizará la siguente


suma con operandos de tamaño word : Dn + <ea> -> Dn.
Que tiene como formato general

La codificación de esta instruccion a falta de decidir el modo de direccionamiento


empleado para el operando fuente será

donde

• bits 15-12 indican el código de operacion para ADD (1101)


• bits 11-9 indican que el registro de datos D3 es el destino (3 =011)
• bits 8-6 indican el tamaño de operando (001 = WORD)
• bits 5-3 indicarán el modo de direccionamiento de la fuente
• bits 2-0 indicaran el registro(caso de ser necesario de la fuente).

2.2.3.1- Directo a registro de datos.


sería por ejemplo ADD.W D1,D3

El operando fuente es el registro de datos indicado en el código.

donde modo=000 indica un registro de datos y 001 indica que es D1

2.2.3.2- Directo a registro de direcciones.


sería por ejemplo ADD.W A1,D3
El operando fuente es el registro de direcciones indicado en el código.

donde modo=001 indica un registro de direcciones y 001 indica que es A1

2.2.4- Modos de direccionamiento de memoria.


Estos modos especifican como operando una posición de memoria mediante
diferentes cálculos para obtener la dirección de la misma.

2.2.4.1- Indirecto por registro de direcciones.

sería por ejemplo ADD.W (A0),D3


El operando se encuentra en memoria, en una posición cuya dirección se
corresponde con el contenido del registro An.

donde modo=010 indica indirecto por registro de direcciones y 000 indica que es el
registro A0

2.2.4.2- Indirecto con postincremento.


sería por ejemplo ADD.W (A0)+,D3
El operando se encuentra en memoria, en una posición cuya dirección se
corresponde con el contenido del registro An. Una vez determinada dicha dirección se
incrementa el contenido del registro An en 1, 2 ó 4 en función de la longitud de los
operandos (byte, word ó long word respectivamente).

donde modo=011 indica indirecto por registro de direcciones y 000 indica que es el
registro A0

NOTA: Si el registro es A7 (stack) y el tamaño de la operación es byte, el


postincremento es de dos unidades para mantener el alineamiento en direcciones pares
del stack. El byte queda almacenado en la dirección par, dejando sin significado el
contenido de la dirección impar inmediatamente siguiente.

2.2.4.3- Indirecto con predecremento.


sería por ejemplo ADD.W -(A0),D3

Se comienza por decrementar el contenido del registro An en 1, 2 ó 4 en función de


la longitud de los operandos (byte, word ó long word respectivamente). A continuación
se considera que el operando se encuentra en memoria, en una posición cuya dirección
se corresponde con el contenido del registro An.

donde modo=011 indica indirecto por registro de direcciones y 000 indica que es el
registro A0

NOTA: Si el registro es A7 (stack) y el tamaño de la operación es byte, el


predecremento es de dos unidades para mantener el alineamiento en direcciones
paresdel stack. El byte queda almacenado en la dirección impar inmediatamente
siguiente.

2.2.4.4- Indirecto con desplazamiento.


ADD 4(A0),D3
Al contenido del registro An se le suma un entero de 16 bits previamente extendido
a 32, que debe encontrarse en la primera word de extensión (detrás de la word de
operación). El resultado de dicha operación es la dirección de memoria que determina el
operando.

2.2.4.5- Indirecto con índice y desplazamiento.


El formato de la instrucción sería

donde

• Rn es el numero de registro empleado como indice


• (1) Indica el tipo de registro indice , = registro de datos y 1 registro de
direcciones
• (2) Indica el tamaño del registro empleado como indice , 0 = WORD, 1 =
LONG,
• Desplazamietno de 8 bits. ( es un numero en complemento a 2)

Como por ejemplo : ADD 4(A0,D6),D3

Al contenido del registro An se le suma un entero de 8 bits previamente extendido a


32, que debe encontrarse en la primera word de extensión (detrás de la word de
operación). A continuación, al resultado obtenido se le suma el registro índice (también
codificado en la word de extensión). Si el registro índice está tomado en tamaño word,
es extendido a 32 bits con anterioridad a la suma. Finalmente el resultado de ambas
sumas es la dirección de memoria que determina el operando.

La operación realizada sería la suma siguiente:

o también puede ser ADD 4(A0,D6.L),D3

2.2.5- Modos especiales de direccionamiento.


Estos modos de direccionamiento no se basan en la utilización de registros.

2.2.5.1- Direccionamiento absoluto corto.

por ejemplo ADD ETIQUETA,D3


donde modo=111 indic modo especial y 000 indica que la direccion especificada en la
etiqueta cabe en un WORD.

Este modo de direccionamiento se basa en una word de extensión de la que se


obtiene la dirección del operando una vez que se le ha extendido el signo hasta 32 bits.
Por tanto este direccionamiento se puede utilizar dentro de los 32 kbytes primeros de la
memoria (0000-7FFF) y dentro de los 32 kbytes finales (FF8000-FFFFFF).

2.2.5.2- Direccionamiento absoluto largo.

por ejemplo ADD ETIQUETA,D3

donde modo=111 indic modo especial y 001 indica que la direccion especificada en la
etiqueta cabe en un LONG.

Este modo de direccionamiento utiliza dos words de extensión de las que se obtiene
la dirección del operando por concatenación, situando la primera como parte alta de la
dirección y la segunda como parte baja.

2.2.5.3- Indirecto por PC con desplazamiento.


Al contenido del puntero de programa (program counter) se le suma un entero de 16
bits previamente extendido a 32, que debe encontrarse en la primera word de extensión
(detrás de la word de operación). El resultado de dicha operación es la dirección de
memoria que determina el operando. La dirección que contiene el puntero de programa
al tomar su contenido para hacer la suma es la de la word de extensión.

2.2.5.4- Indirecto por PC con índice.


Al contenido del contador de programa (program counter) se le suma un entero de 8
bits previamente extendido a 32, que debe encontrarse en la primera word de extensión
(detrás de la word de operación). A continuación, al resultado obtenido se le suma el
registro índice (también codificado en la word de extensión). Si el registro índice está
tomado en tamaño word, es extendido a 32 bits con anterioridad a la suma. Finalmente
el resultado de ambas sumas es la dirección de memoria que determina el operando. La
dirección que contiene el puntero de programa al tomar su contenido para hacer la suma
es la de la word de extensión.

El formato de la instrucción tiene la misma estructura que la explicada con anterioridad


el el direcionamiento indirecto con índice y desplazamiento.
2.2.5.5- Dato inmediato.

Con este tipo de direccionamiento el operando se encuentra en una o dos words de


extensión, dependiendo de la longitud de la operación. Si la operación es de byte se
utiliza una word de extensión cuyos bits 0-7 son el operando y los 8-15 se ponen a cero.
En el caso de una operación de tamaño word se utiliza también una sola word y toda
ella es el operando. Por último, en el caso de un tamaño de operación long word, el
operando se forma por concatenación de dos words de extensión; la primera es la parte
alta (bits 16-31) y la segunda la parte baja (bits 0-15).

Por ejemplo ADDI #7,D3

El formato general de esta instrucción es

que en el caso del ejemplo es

Un caso particular es el direecionamiento inmediato rápido

ADDQ #7,D3

con el siguiente formato general

que se reduce por tanto a

2.2.6- Direccionamiento implícito.


Algunas instrucciones llevan implícito el uso de determinados registros. Estas son
las siguientes:

Mnemónico Instrucción Registros afectados


Bcc, BRA Salto condicional e incondicional PC
BSR Salto a subrutina PC, SP
CHK Chequeo de registros entre límites SSP, SR
DBcc Test de condición, decremento y salto PC
DIVS División con signo SSP, SR
DIVU División sin signo SSP, SR
JMP Salto PC
JSR Salto a subrutina PC, SP
LINK Encadena y reserva espacio SP
MOVE CCR Mover los códigos de condición SR
MOVE SR Mover el registro de estado SR
MOVE USP Mover el apuntador de pila de usuario USP
PEA Apilar la dirección efectiva SP
RTE Retorno de una excepción PC, SP, SR
RTR Retorno restablecido códigos condición PC, SP, SR
RTS Retorno de subrutina PC, SP
TRAP Trap SSP, SR
TRAPV Trap si hay rebose SSP, SR
UNLK Desencadenar SP

http://www.ii.uam.es/~fjgomez/68000/tutorial/cap2.html

Modos de direccionamiento sin ningún componente.


El modo de direccionamiento sin componente, normalmente llamado direccionamiento
inmediato, es una forma particular ya que no tiene componente de dirección. El valor
del operando se especifica directamente en la misma instrucción. La importancia del
direccionamiento inmediato es obvia debido a la frecuencia con que esta ocurre. La
mayoría de las constantes en un programa son especificadas usando direccionamiento
inmediato lo cual es ventajoso debido a que las constantes suelen ser números pequeños
(cero y uno ocurren frecuentemente). Consecuentemente, esto es mas eficiente para
especificar las constantes, mejor que la ubicación de una dirección de memoria. Además
las constantes no necesitan ser cambiadas, porque ellas pueden ser colocadas en la
misma instrucción.
Hay dos lugares, básicamente diferentes, en los cuales se almacena el dato inmediato :
1. Dentro de la instrucción básica: esto es frecuentemente llamado direccionamiento
inmediato corto o rápido. Las constantes pueden ser solamente pequeñas (debido a que
ellas tienen que ajustarse dentro del primer byte o palabra de instrucción), sin embargo
ellas usan memoria mas eficientemente.
2. Dentro de extensiones de instrucciones: este método usa constantes con la longitud
igual a la longitud de instrucción básica o un múltiplo de ellas. La longitud del dato
inmediato es normalmente especificada dentro de la parte básica y el dato sigue
inmediatamente a esta parte básica por ello se llama direccionamiento inmediato.

Modos de direccionamiento de un componente


Estos modos de direccionamiento especifican la dirección efectiva del valor del
operando mediante el uso de un único componente en la operación especifica. Este
componente puede ser un numero de registro o una dirección absoluta de un operando.
Ambos componentes pueden ser usados en forma directa o indirecta.
• Direccionamiento registro-directo. En este modo, se especifica un numero de
registro que indica al registro que contiene el valor del operando. Este modo es usado
frecuentemente por su eficiencia y velocidad. Ya que son pocos los registros que están
disponibles (típicamente 8 o 16), se puede obtener una especificación compacta del
operando, usando 3 o 4 bits. Además, porque el archivo del registro esta localizado
normalmente en un chip, este tiempo de acceso es muy pequeño comparado con el
tiempo de acceso a memoria o incluso al cache. Todas las arquitecturas modernas
poseen más de un registro para soportar este modo. En arquitecturas con solo un
registro, este es a menudo especificado implícitamente.
La arquitectura MC68020 divide su set de registro en dos grupos : uno denominado
Registros de datos los cuales están destinados principalmente para utilizarse como
fuente o destino para las operaciones aritméticas y lógicas. Y el otro grupo denominado
Registros de direcciones los cuales se utilizan principalmente para especificar
direcciones de operandos
• Direccionamiento absoluto. En este modo de direccionamiento una instrucción esta
compuesta por el código de operación y a continuación la dirección del operando,
directamente especificada en uno o más byte según el alcance del campo de direcciones.
El direccionamiento absoluto es necesario en muchas arquitecturas para la
especificación de un vector de entrada / salida y direcciones del registro de estado
(asumiendo que ellas forman una superposición lógica con la memoria principal.
• Direccionamiento indirecto. Este direccionamiento es muy usado cuando las
direcciones de las estructuras de datos no son conocidas, hasta que se corra el programa,
porque las direcciones deben ser calculadas con instrucciones y almacenadas en un
registro, después de lo cual el operando puede ser recuperado vía este registro.
• Direccionamiento indirecto con modificación de registro. Son posibles muchas
variaciones del modo de direccionamiento registro indirecto básico. Muchas
arquitecturas soportan modos de direccionamiento en los cuales el registro contiene la
dirección del operando, la cual es modificada antes o después de usado. Son entonces
posibles 4 modos, dependiendo de la dirección de la modificación (incremento o
decremento) y del tiempo de modificación (pre o pos modificación).

Modos de direccionamientos de dos componentes.


Se pueden combinar dos componentes básicos para formar un modo de
direccionamiento de dos componentes. Generalmente uno de los componentes es
denominado Base, mientras que el otro se denomina Desplazamiento, a menudo el
desplazamiento es la distancia que hay entre la dirección base y la dirección del
operando. La dirección base y el desplazamiento pueden ser fijos (conociendo el tiempo
de compilación) o variables (calculando el tiempo de ejecución del programa).
• Direccionamiento indexado. En este modo se especifica la dirección base (fija) en
el código de instrucción (comparable al direccionamiento absoluto), así para formar la
dirección del operando se suma a la dirección base, el contenido de un registro
denominado índice. Este modo se emplea cuando la dirección base de una estructura de
datos, tal como un vector, se conoce en el momento de la compilación pero la posición
exacta del elemento solo se puede determinar en el momento de la ejecución. Para
acondicionar el tamaño del operando de varias longitudes, el indice es a menudo
multiplicado por un factor de escala. Si un vector A [0 .. 100] posee datos ocupando 4
byte, el factor de escala es 4, asumiendo una resolución de dirección de un byte.
Dado que la dirección base para el vector A[0..100], cuya dirección de comienzo es
1000, el elemento A[3] puede ser encontrado en la dirección 1000 + 3∗4 = 1012.
También existe el modo de indexado indirecto, el cual presenta dos variantes :
Preindexado indirecto y Pos-indexado indirecto. En el modo de pre-indexado, el
desplazamiento se suma a la dirección base, produciendo una dirección intermedia. Los
contenidos de estas direcciones intermedias son luego usados como direcciones de
operandos. En el modo de posindexado, la dirección base es usada como una dirección
intermedia. Después, el desplazamiento se adiciona al contenido de la dirección
intermedia para obtener la dirección del operando.
• Direccionamiento base.
Ελ δ ι ρ ε χ χ ι ο ν α µ ι ε ν τ ο β α σ ε ε σ ε λ ο π υ ε σ τ
ο δελ δ ι ρ ε χ χ ι ο ν α µ ι ε ν τ ο ι ν δ ε ξ α δ ο, ε ν ε σ
τε λα ι ν σ τ ρ υ χ χ ι ⌠ ν χ ο ν τ ι ε ν ε υ ν δ ε σ π λ α ζ
αµ ι ε ν τ ο φ ι ϕ ο ψ λ α δ ι ρ ε χ χ ι ⌠ ν β α σ ε ( ϖ α ρ ι α β
λε) ε σ τ α χ ο ν τ ε ν ι δ α ε ν υ ν ρ ε γ ι σ τ ρ ο , Λ α π ρ
ινχ ι π α λ δ ι φ ε ρ ε ν χ ι α ε σ θ υ ε λ α δ ι ρ ε χ χ ι ⌠
ν βασ ε ε ν ε λ δ ι ρ ε χ χ ι ο ν α µ ι ε ν τ ο ι ν δ ε ξ α δ
ο πυε δ ε σ ι ε µ π ρ ε σ ε ρ υ ν α δ ι ρ ε χ χ ι ⌠ ν γ ρ α ν
δ ε, µ ι ε ν τ ρ α σ ε λ δ ε σ π λ α ζ α µ ι ε ν τ ο ε ν ε λ δ ι
ρεχ χ ι ο ν α µ ι ε ν τ ο β α σ ε π υ ε δ ε σ ε ρ χ ο ρ τ ο ο
λα ρ γ ο . Σ ι ε λ δ ε σ π λ α ζ α µ ι ε ν τ ο ψ λ α δ ι ρ ε χ χ
ι⌠ν β α σ ε τ ι ε ν ε ν λ α µ ι σ µ α λ ο ν γ ι τ υ δ , ε λ δ
ιρε χ χ ι ο ν α µ ι ε ν τ ο β α σ ε ψ ε λ ι ν δ ε ξ α δ ο ν ο
πυ ε δ ε ν σ ε ρ δ ι σ τ ι ν γ υ ι δ ο σ .
Ελ δ ι ρ ε χ χ ι ο ν α µ ι ε ν τ ο β α σ ε ε σ υ σ α δ ο χ υ α
νδο λ α δ ι ρ ε χ χ ι ⌠ ν β α σ ε δ ε υ ν β λ ο θ υ ε δ ε δ
ατο σ ε σ δ ε σ χ ο ν ο χ ι δ α η α σ τ α χ ο ρ ρ ε ρ ε λ π ρ
ογρα µ α, µ ι ε ν τ ρ α σ λ α π ο σ ι χ ι ⌠ ν ρ ε λ α τ ι ϖ α
δε υ ν ι τ ε µ ψ α ε σ χ ο ν ο χ ι δ α α λ χ ο µ π ι λ α ρ.
• Direccionamiento base-indexado. En este modo, tanto la dirección base como el
desplazamiento son variables, y estos son calculados en el tiempo de ejecución. Esto
permite el acceso a un elemento arbitrario en una estructura de datos, con la dirección
de comienzo que es desconocida al compilar.
• Direccionamiento relativo al contador de programa. Esta es una clase especial de
modo de direccionamiento de dos componentes, la cual usa el contador de programa
(PC) como el registro que contiene la dirección base. En este modo se obtiene la
dirección efectiva como la suma de un desplazamiento contenido como segundo byte de
la instrucción con el contenido del PC. Dado que el valor de la dirección base es
variable hay dos modos de direccionamiento posibles : el PC base (llamado
generalmente direccionamiento relativo)y el PC base indexado.
El uso más común del direccionamiento PC relativo es en instrucciones divididas, las
cuales son esenciales para la implementación de estructuras de control en lenguajes de
alto nivel.

Modos de direccionamiento de multi-componentes.


Todos los modos de direccionamiento previamente tratados pueden ser combinados
para formar todas los tipos de modos de direccionamiento multi-componentes (algunos
muy utilizados)

4.2.4 Lenguaje ensamblador.


Estructura general de un programa en ensamblador.
En una programa escrito en lenguaje ensamblador, además de las 35 instrucciones que
interpreta el procesador también se colocan directivas, que son comandos para realizar ciertas
operaciones con el programa. A continuación se comentan las partes que generalmente hay en
un programa:
1º. Modelo de procesador y sistema de numeración.
Los programas comienzan con la directiva list que referencia el modelo de microcontrolador.
También se suele especificar el tipo de numeración que se empleará con la directiva radix.
Lo usual es emplear el sistema hexadecimal, en el que los valores se expresan precedidos
de “0x”. En los ejemplos que se desarrollarán a lo largo del tema comenzaremos el
programa ensamblador con las siguientes directivas (detrás del punto y coma se pueden
añadir comentarios):
List p=16F84 ;Se utiliza el microcontrolador PIC16F84
Radix hex ; Se usará el sistema hexadecimal
2º. Variables.
Las posiciones de la memoria de datos se utilizan para guardar operandos y resultados,
además de almacenar registros especiales.
Para que al programador le sea más sencillo confeccionar el programa, en lugar de hacer
referencia a las posiciones de la memoria donde se encuentran los datos que va a emplear,
a cada una de estas posiciones se le asocia un nombre. La directiva equ relaciona un
nombre con la dirección que se asigna, así el programador trabaja con nombres y el
compilador traduce automáticamente éstos a las direcciones correspondientes. Por ejemplo
el registro que contiene la información de estado se encuentra en la dirección 0x03, el
puerto de entrada A en 0x05, etc.. Si queremos emplear nombres de variables para estas
direcciones de memoria escribiríamos:
ESTADO equ 0x03 ;La etiqueta “ESTADO” está asociada a la dirección 0x03
PUERTAA equ 0x05 ;La etiqueta “PUERTAA” está asociada a la dirección 0x05
3º. Origen del programa.
Antes de comenzar a escribir instrucciones máquina debe definirse la dirección de la
memoria de programa a partir de la cual se desea comenzar a cargar el programa. Para ello
se emplea la directiva org. En los PIC el origen del programa siempre se pone en la
dirección 0x00 porque es donde comienza a ejecutarse el programa después de hacer un
reset. Definiremos el origen de la siguiente manera:
org 0x00 ;Inicio de programa
Cuando el programa maneja interrupciones, no se comienza a cargar el programa desde la
dirección 0x00, porque si se genera una interrupción el programa que la atiende comienza
en la dirección 0x04 (vector de interrupción). En este caso lo que se suele hacer es poner
en la dirección 0x00 un salto a una dirección de la memoria de programa posterior al vector
de reset, por ejemplo saltaríamos a una posición etiquetada como INICIO que se encuentra
en la dirección 0x05.

org 0x00 ;La siguiente instrucción estará al inicio de la memoria


goto INICIO ;Salta a la dirección etiquetada con INICIO
org 0x05 ;La siguiente instrucción estará en la dirección 0x05
INICIO
-------
-------
end
4º. Cuerpo del programa y final.
Tras indicar la dirección donde se comenzará a cargar el programa, sigue el cuerpo del
mismo compuesto por las instrucciones máquina y los operandos de éstas.
El código se estructura en columnas. La primera columna se utiliza para las etiquetas que
se emplean para hacer referencia a partes del programa y nos permiten realizar saltos a
estas partes (como INICIO en el ejemplo anterior). Las siguientes columnas contienen el
campo de instrucciones, el campo de datos y el campo de comentarios. Los comentarios
comienzan con ; ).
Al final del programa se coloca la directiva end.
3.4.2. Ejemplos de programación.
Ejemplo 6.1. Sumar el contenido de la posición de memoria 0Ch (5) con el
contenido de la
posición de memoria 0Dh (2) y almacenar el resultado en la posición de memoria
0Eh.
El sumador (ALU) del PIC es capaz de sumar dos datos de 8
bits cada uno, pero debido a su configuración uno de los sumandos
debe proceder del registro de trabajo W (Figura 6-7).
El ejemplo maneja tres posiciones de la memoria de datos de
propósito general (figura 6-19). En la posición 0Ch se colocará el
primer operando con el valor 5; en la posición 0Dh el segundo con el
valor 2 y el resultado se almacenará en 0Eh. Como se vio en la
Figura 6-9 las direcciones 0Ch, 0Dh y 0Eh son las tres primeras
posiciones de la memoria de datos RAM (banco 0) que el usuario
puede emplear para fines propios.
Antes de exponer el código del programa se explican las
instrucciones que se van a utilizar:
Instrucción mov
Permite transferir el contenido de un registro fuente f a un registro destino d. En los PIC
todos los datos residen en posiciones de la memoria de datos a excepción del registro W.
La instrucción mov puede mover tres tipos fundamentales de operandos:
1. El contenido del registro W.
2. El contenido de una posición de memoria de datos.
3. Un literal o valor.
movf f,d : mueve el contenido del operando fuente f (posición de la memoria de datos) al
destino d (puede ser W o la propia fuente).

Programa fuente:

El programa fuente esta compuesto por una sucesión de líneas de programa. Cada línea
de programa esta compuesta por 4 campos separados por uno o más espacios o
tabulaciones. Estos campos son:

[Etiqueta] Comando [Operando(s)] [;Comentario]

La etiqueta es opcional. El comando puede ser un mnemónico del conjunto de


instrucciones. El operando esta asociado al comando, si no hay comando no hay
operando, e inclusive algunos comandos no llevan operando. El comentario es opcional
para el compilador aunque es buena práctica considerarlo obligatorio para el
programador.

La etiqueta, es el campo que empieza en la primer posición de la línea. No se pueden


insertar espacios o tabulaciones antes de la etiqueta sino será considerado comando.
Identifica la línea de programa haciendo que el compilador le asigne un valor
automáticamente. Si se trata de una línea cuyo comando es una instrucción de programa
del microcontrolador, se le asigna el valor de la dirección de memoria correspondiente a
dicha instrucción (location counter). En otros casos se le asigna un valor de una
constante, o la dirección de una variable, o será el nombre de una macroinstrucción, etc.

El comando puede ser un código mnemónico de instrucción del microcontrolador, o una


directiva o pseudoinstrucción para el compilador. En el primer caso será directamente
traducido a código de maquina, en el segundo caso será interpretado por el compilador y
realizara alguna acción en tiempo de compilación como ser asignar un valor a una
etiqueta, etc.

El campo de parámetros puede contener uno o más parámetros separados por comas.
Los parámetros dependen de la instrucción o directiva. Pueden ser números o literales
que representen constantes o direcciones.
El campo de comentario debe comenzar con un caracter punto y coma. No necesita
tener espacios o tabulaciones separándolo del campo anterior, e incluso puede empezar
en la primer posición de la línea. El compilador ignora todo el texto que contenga la
línea después de un caracter punto y coma. De esta manera pueden incluirse líneas que
contengan solo comentarios, y es muy buena práctica hacer uso y abuso de esta
posibilidad para que los programas resulten autodocumentados.

http://www.geocities.com/micros_uan/cap2.html

Conjunto de instrucciones
El conjunto de instrucciones de los microprocesadores PIC 16C5X consiste en un
pequeño repertorio de solo 33 instrucciones de 12 bits, que pueden ser agrupadas para
su estudio en tres a cinco grupos. En este curso se ha optado por clasificarlas, desde el
punto de vista del programador, en cinco categorías bien definidas de acuerdo con la
función y el tipo de operandos involucrados. En primer lugar se agrupan las
instrucciones que operan con bytes y que involucran algún registro de la memoria
interna. En segundo lugar se analizaran las instrucciones que operan solo sobre el
registro W y que permiten cargarle una constante implícita o incluida literalmente en la
instrucción (literales). En tercer lugar se agrupan las instrucciones que operan sobre bits
individuales de los registros de la memoria interna. En cuarto lugar se clasifican las
instrucciones de control de flujo del programa, es decir las que permiten alterar la
secuencia lineal de ejecución de las instrucciones. Por último se agrupan unas pocas
instrucciones que llamaremos especiales, cuyas funciones o tipos de operandos son muy
específicos y no encajan en ninguna de las clasificaciones anteriores.

Instrucciones de Byte que operan con Registros


Estas instrucciones pueden ser de simple o doble operando de origen. El primer
operando de origen será siempre el registro seleccionado en la instrucción, el segundo,
en caso de existir, será el registro W. El destino, es decir donde se guardara el resultado,
será el registro seleccionado o el W, según se seleccione con un bit de la instrucción.

El formato genérico de estas instrucciones es el siguiente :


11 10 9 8 7 6 5 4 3 2 1
0

d f f f f f

Los bits 0 a 4 (5 bits), denominados “f” permiten seleccionar uno de 32 registros de la


memoria interna. El bit 5, denominado “d”, permite especificar el destino del resultado.
Si d = 1 el resultado se guardara en el registro seleccionado. Si d = 0 el resultado se
guardara en W. Los bits 6 a 11 identifican la instrucción especifica a realizar.

Las instrucciones siguientes son las tres operaciones lógicas de doble operando :

ANDWF f,d ;operación AND lógica, destino = W ∧ f


IORWF f,d ;operación OR lógica, destino = W ∨ f
XORWF f,d ;operación XOR lógica, destino = W ⊕ f
Los nombres mnemónicos de estas instrucciones provienen de : AND W con F,
Inclusive OR W con F y XOR W con F.
Las que siguen son las cuatro operaciones aritméticas y lógicas sencillas de simple
operando :

MOVF f,d ;movimiento de datos, destino = f


COMF f,d ;complemento lógico, destino = NOT f
INCF f,d ;incremento aritmético, destino = f + 1
DECF f,d ;decremento aritmético, destino = f - 1

Los mnemónicos de estas instrucciones provienen de : MOVe File, COMplement File,


INCrement File y DECrement File.
En las siete instrucciones anteriores el único bit afectado de la palabra de estado del
procesador es el Z, que se pone en 1 si el resultado de la operación es 00000000, y se
pone en 0 si el resultado tiene cualquier otro valor.

A continuación siguen las dos instrucciones de rotación de bits a través del CARRY :

RLF f,d ;rotación a la izquierda, destino = f ROT ←


RRF f,d ;rotación a la derecha, destino = f ROT →

En estas operaciones (Rotate Left File y Rotate Right File) los bits son desplazados de
cada posición a la siguiente, en sentido derecho o izquierdo. El desplazamiento es
cerrado, formando un anillo, con el bit C (CARRY) de la palabra de estado.

En estas dos instrucciones, el único bit afectado de la palabra de estado del procesador
es el bit C, que tomará el valor que tenia el bit 7 o el bit 0, según sea el sentido del
desplazamiento.

Estas instrucciones son muy útiles para la manipulación de bits, y además para realizar
operaciones aritméticas, ya que en numeración binaria, desplazar un número a la
izquierda es equivalente a multiplicarlo por 2, y hacia la derecha, a dividirlo por 2.

La instrucción siguiente realiza el intercambio de posiciones entre los cuatro bits menos
significativos y los cuatro más significativos (nibble bajo y nibble alto).

SWAPF f,d ;intercambia nibbles, destino = SWAP f

Esta instrucción (SWAP File) no afecta ninguno de los bits de la palabra de estado del
procesador.

Esta instrucción es muy útil para el manipuleo de números BCD empaquetados, en los
que en un solo byte se guardan dos dígitos BCD (uno en cada nibble).

Las dos operaciones que siguen son la suma y la resta aritméticas :

ADDWF f,d ;suma aritmética, destino = f + W


SUBWF f,d ;resta aritmética, destino = f - W
Estas operaciones (ADD W a F y SUBstract W de F) afectan a los tres bits de estado C,
DC y Z.
El bit Z se pone en 1 si el resultado de la operación es 00000000, y se pone en 0 si el
resultado tiene cualquier otro valor.

La suma se realiza en aritmética binaria pura sin signo. Si hay un acarreo del bit 7, es
decir que el resultado es mayor que 255, el bit C (carry) resulta 1, en caso contrario
resulta 0. Si hay un acarreo del bit 3, es decir que la suma de las dos mitades (nibbles)
menos significativas (bits 0 a 3) resulta mayor que 15, se pone en 1 el bit DC (digit
carry), en caso contrario se pone en 0.

Ejemplos :
1010 0010 1101 0000
+ 0100 1111 C DC Z + 0110 1111 C DC Z
1111 0001 0 1 0 0011 1111 1 0 0

La resta se realiza sumando, en binario puro sin signo, el registro f más el complemento
a dos de W (el complemento a 1, o complemento lógico, más 1)

Ejemplos :
f ⇒ 0100 0100 0010 1000
W⇒ - 0010 1000 C DC Z - 0100 0100 C DC Z
0001 1100 1 0 0 1110 0100 0 1 0

⇓ ⇓
equivalente a :
f⇒ 0100 0100 0010 1000
cmp.2 W ⇒ + 1101 1000 C DC Z + 1011 1100 C DC Z
0001 1100 1 0 0 1110 0100 0 1 0

Los bits de estado C y DC toman el valor normal correspondiente a la suma de f con el


complemento a 2 de W. De esta manera el significado para la operación de resta resulta
invertido, es decir que C (carry) es 1 si no hubo desborde en la resta, o dicho de otra
manera, si el contenido de W es menor que el de f. El bit DC se comporta de manera
similar, es decir que DC es 1 si no hubo desborde en la mitad menos significativa, lo
que equivale a decir que el nibble bajo del contenido de W es menor que el del registro
f.

Las instrucciones que siguen son de simple operando, pero son casos especiales ya que
el destino es siempre el registro seleccionado :

CLRF f ;borrado de contenido, f = 0


MOVWF f ;copia contenido W → f, f = W

La instrucción CLRF (CLeaR File) afecta solo al bit Z que resulta siempre 0.
La instrucción MOVWF (MOVe W a F) no afecta ningún bit de la palabra de estado.
Instrucciones de Byte que operan sobre W y Literales
Estas instrucciones se refieren todas al registro W, es decir que uno de los operandos de
origen y el operando de destino son siempre el registro W. En las instrucciones de este
grupo que tienen un segundo operando de origen, este es siempre una constante de
programa literalmente incluida en la instrucción, llamada constante literal o
simplemente literal.

El formato genérico de estas instrucciones es el siguiente :

11 10 9 8 7 6 5 4 3 2 1
0

k k k k k k k k

Los bits 0 a 7 especifican la constante literal de 8 bits que se utilizara en la operación.

Las tres instrucciones que siguen son las operaciones lógicas tradicionales, similares a
las que ya vimos anteriormente, pero realizadas entre una constante de programa y el
registro W :

IORLW k ; operación OR lógica, W = W ∨ k


ANDLW k ; operación AND lógica, W = W ∧ k
XORLW k ; operación XOR lógica, W = W ⊕ k

En estas tres instrucciones (Inclusive OR Literal W, AND Literal W y XOR Literal W)


el único bit afectado de la palabra de estado del procesador es el Z, que se pone en 1 si
el resultado de la operación es 00000000, y se pone en 0 si el resultado tiene cualquier
otro valor.

La instrucción que sigue sirve para cargar una constante de programa en el registro W :

MOVLW k ;carga constante en W, W=K

Esta (MOVe Literal W) instrucción no afecta ninguno de los bits de estado del
procesador.

La instrucción que sigue (CLeaR W) no correspondería incluirla en este grupo, y


pertenece en realidad al primero, el de las instrucciones que operan sobre registros, ya
que se trata de un caso especial de la instrucción CLRF, con destino W, y f = 0. La
incluimos aquí porque como se le ha asignado un mnemónico particular referido
específicamente al registro W, creemos que, desde el punto de vista del programador, es
más útil verla dentro del grupo de instrucciones referidas a W.

CLRW ;borra el contenido de W, W = 0

Al igual que en la instrucción CLRF, el único bit de estado afectado es el Z que resulta
1.
Instrucciones de Bit
El formato genérico de estas instrucciones es el siguiente :

11 10 9 8 7 6 5 4 3 2 1
0

b b b f f f f f

Los bits 0 a 4 (5 bits), denominados “f”, permiten seleccionar uno de 32 registros de la


memoria interna. Los bits 5 a 7, denominados “b”, permiten especificar el numero de bit
(0 a 7) sobre el que se operara. Estas instrucciones operan solamente sobre el bit
especificado, el resto de los bits del registro no son alterados. Estas instrucciones no
tienen especificación de destino, ya que el mismo es siempre el registro seleccionado.

BCF f,b ;borra el bit b de f ;bit f(b) = 0


BSF f,b ;coloca en uno el bit b de f ;bit f(b) = 1

Estas instrucciones (Bit Clear File y Bit Set File) no afectan ningún bit de la palabra de
estado del procesador.

Instrucciones de Control

GOTO k ;salto a la posición k (9 bits) del programa

Esta es la típica instrucción de salto incondicional a cualquier posición de la memoria


de programa (que en la mayoría de los microprocesadores convencionales se llama
JUMP). La constante literal k es la dirección de destino del salto, es decir la nueva
dirección de memoria de programa a partir de la cual comenzarán a leerse las
instrucciones después de ejecutar la instrucción GOTO. Esta instrucción simplemente
carga la constante k en el registro PC (contador de programa). La única complicación de
esta instrucción es que la constante k es de solo 9 bits, mientras que el registro PC es de
11 bits, ya que en el 16C57 debe permitir direccionar una memoria de programa de 2 K.
Los dos bits faltantes, bit 9 y 10 del PC, son tomados respectivamente de los bits de
selección de página PA0 y PA1 de la palabra de estado. Este comportamiento particular
hace que la memoria de programa aparezca como dividida en paginas de 512 posiciones
como se vera más adelante. El programador debe tener en cuenta que antes de ejecutar
una instrucción GOTO es posible que haya que programar los bits PA0 y PA1.

La que sigue es la instrucción de llamado a subrutina:

CALL k ;salto a la subrutina en la posición k (8 bits)

Su comportamiento es muy similar al de la instrucción GOTO, salvo que además de


saltar guarda en el stack la dirección de retorno de la subrutina (para la instrucción
RETLW). Esto lo hace simplemente guardando en el stack una copia del PC
incrementado, antes de que el mismo sea cargado con la nueva dirección k. La única
diferencia con la instrucción GOTO respecto de la forma en la que se realiza el salto, es
que en la instrucción CALL la constante k tiene solo 8 bits en vez de 9. En este caso
también se utilizan PA0 y PA1 para cargar los bits 9 y 10 del PC, pero además el bit 8
del PC es cargado siempre con 0. Esto hace que los saltos a subrutina solo puedan
realizarse a posiciones que estén en las primeras mitades de las paginas mencionadas. El
programador debe tener en cuenta este comportamiento y asegurarse de ubicar las
posiciones de inicio de las subrutinas en las primeras mitades de las paginas.

La instrucción que aparece a continuación es la de retorno de subrutina:

RETLW k ;retorno de subrutina con constante k, W=k

Esta (RETurn con Literal in W) instrucción produce el retorno de subrutina con una
constante literal k en el registro W. La operación que realiza consiste simplemente en
sacar del stack un valor y cargarlo en el PC. Ese valor es el PC incrementado antes de
realizar el salto, de la ultima instrucción CALL ejecutada, por lo tanto es la dirección de
la instrucción siguiente a dicho CALL.. Dado que el stack es de 11 bits, el valor cargado
en el PC es una dirección completa, y por lo tanto se puede retornar a cualquier posición
de la memoria de programa, sin importar como estén los bits de selección de pagina.
Esta instrucción además carga siempre una constante literal en el registro W. Ya que
esta es la única instrucción de retorno de subrutina de los PIC16C5X, no hay en estos
microprocesadores forma de retornar de una subrutina sin alterar el registro W. Por otro
lado, y con una metodología especial de programación, un conjunto de sucesivas
instrucciones RETLW puede ser usado como una tabla de valores constantes incluida en
el programa (Ej. : tablas BCD/7 seg., hexa/ASCII, etc.).

A continuación se presentan las dos únicas instrucciones de “salteo” (skip) condicional.


Estas instrucciones son los únicos medios para implementar bifurcaciones condicionales
en un programa. Son muy generales y muy poderosas ya que permiten al programa
tomar decisiones en función de cualquier bit de cualquier posición de la memoria
interna de datos, y eso incluye a los registros de periféricos, los puertos de
entrada/salida e incluso la palabra de estado del procesador. Estas dos instrucciones
reemplazan y superan a todo el conjunto de instrucciones de salto condicional que
poseen los microprocesadores sencillos convencionales (salto por cero, por no cero, por
carry, etc.).

BTFSC f,b ;salteo si bit = 0, bit = f(0) ⇒ saltea


BTFSS f,b ;salteo si bit = 1, bit = f(1) ⇒ saltea

BTFSC (Bit Test File and Skip if Clear) saltea la próxima instrucción si el bit b del
registro f es cero. La instrucción BTFSS (Bit Test File and Skip if Set) saltea si el bit es
1. Estas instrucciones pueden usarse para realizar o no una acción según sea el estado de
un bit, o, en combinación con GOTO, para realizar una bifurcación condicional.

Ejemplo 1 :
-------------
-------------
btfsc flags,run ;sí ha arrancado el reloj
incf tiempo ;incremento contador de tiempo
-------------
-------------

Ejemplo 2 :

-------------
-------------
movf tiempo,w ;testeo por tiempo = 60
xorlw 60
btfss STATUS,Z
goto acc_2 ;salto si tiempo <> 60

- - - - - - - - - - - - - ;acción 1
-------------
-------------
goto acc_fin
acc_2
- - - - - - - - - - - - - ;acción 2
-------------
-------------
acc_fin ;acá se unen los caminos

Las instrucciones que siguen son casos especiales de las de incremento y decremento
vistas anteriormente. Estas instrucciones podrían categorizarse dentro del grupo de
instrucciones orientadas a byte sobre registros (primer grupo), ya que efectivamente
operan sobre los mismos, y el formato del código de la instrucción responde al de ese
grupo, pero, a diferencia de las otras, pueden además alterar el flujo lineal del programa
y por eso se les incluyó en este grupo.

DECFSZ f,d ;decrementa y saltea sí 0, destino= f - 1, = 0 ⇒ saltea


INCFSZ f,d ;incrementa y saltea sí 0, destino= f + 1, = 0 ⇒ saltea

Estas dos instrucciones (DECrement File and Skip if Zero, e INCrement File and Skip if
Zero) se comportan de manera similar a DECF e INCF, salvo que no afectan a ningún
bit de la palabra de estado. Una vez realizado el incremento o decremento, si el
resultado es 00000000, el microprocesador salteara la próxima instrucción del
programa. Estas instrucciones se utilizan generalmente en combinación con una
instrucción de salto (GOTO), para el diseño de ciclos o lazos (loops) de instrucciones
que deben repetirse una cantidad determinada de veces.

Ejemplo:
clrf 10 ;pongo cero en la posición 10 de la memoria interna
loop ;lo que sigue se ejecutará 256 veces
.....................................
.....................................
.....................................

incfsz 10,1 ;incremento la posición 10 hasta que llegue a 0


goto loop ;si no llego a cero voy a repetir la secuencia
;cuando llegue a cero salteo el goto
..................................... ;y sigue la continuación del programa
.....................................
.....................................

Instrucciones Especiales
En este grupo se reunieron las instrucciones que controlan funciones específicas del
microprocesador o que actúan sobre registros especiales no direccionados como
memoria interna normal.

La instrucción que sigue es la típica NO OPERATION, existente en casi todos los


microprocesadores.

NOP ;no hace nada, consume tiempo

Esta instrucción solo sirve para introducir una demora en el programa, equivalente al
tiempo de ejecución de una instrucción. No afecta ningún bit de la palabra de estado.

La siguiente es una instrucción especifica de control de los puertos de entrada/salida.

TRIS f ;carga el tristate control, TRISf = W

Esta instrucción (TRIState) carga el registro de control de los buffers tristate de un


puerto de entrada salida (data dirección register), con el valor contenido en W. El
parámetro f debe ser la dirección de memoria interna del puerto, aunque el valor W no
será cargado en el puerto sino en el registro de tristate del mismo. Los valores validos
para f son 4 y 5 en los 16C54/56 y 4, 5 y 6 en los 16C55/57. Esta instrucción no afecta
ningún bit de la palabra de estado.

La siguiente instrucción sirve para programar el registro OPTION que controla el


RTCC y prescaler

OPTION ;carga el registro OPTION, OPTION = W

El registro OPTION no es accesible como memoria interna y solo se lo puede


programar con esta instrucción. Esta instrucción no afecta ningún bit de la palabra de
estado.

La instrucción que sigue borra el contador del watch dog timer. Este registro tampoco
esta accesible como memoria, y esta es la única instrucción que lo modifica.

CLRWDT ;borra el watch dog timer, WDT = 0


Esta instrucción, además, coloca en uno los bits PD (power down) y TO (time-out) de la
palabra de estado.

La siguiente es una instrucción especial de control del microcontrolador que lo pone en


el modo power down. En este modo el microprocesador se detiene, el oscilador se
apaga, los registros y puertos conservan su estado, y el consumo se reduce al mínimo.
La única forma de salir de este estado es por medio de un reset o por time-out del watch
dog timer.

SLEEP ;coloca el µC en modo sleep, WDT = 0

Esta instrucción, además, borra el bit PD (power down) y setea el bit TO (time-out) de
la palabra de estado.

Resumen de instrucciones (clasificación según el fabricante en tres grupos):

Instrucciones orientadas a byte:

Instrucciones orientadas a bit:

Instrucciones orientadas a literal y control:


En esta tabla de resumen del conjunto de instrucciones se pueden observar los
mnemónicos, la explicación, el número de ciclos, el código de máquina y los bits
afectados del registro STATUS para cada una de las instrucciones.

http://www.geocities.com/micros_uan/cap21.html

Modos de direccionamiento

Direccionamiento de la memoria de datos (RAM)


La memoria interna se direcciona en forma directa por medio de los 5 bits “f”
contenidos en las instrucciones que operan sobre registros. De esta manera se puede
direccionar cualquier posición desde la 00 a la 1F. Como se vió en el capítulo
correspondiente a los mapas de memoria, las direcciones 10 a 1F corresponden a los
bancos de registros, por lo tanto, en los microcontroladores que tengan más de un
banco, antes de acceder a alguna variable que se encuentre en esta zona, el programador
deberá asegurarse de haber programado los bits de selección de banco en el registro
FSR.

Los registros especiales y de uso general de la posición 00 a la 0f están presentes en


todos los PIC16C5X, al igual que el banco 0 de registros. Los bancos 1, 2 y 3 de
registros están presentes solo en el 16C57.
El registro FSR, además de servir para seleccionar el banco activo, sirve como puntero
para direccionamiento indirecto. La posición 00 del mapa de RAM es la llamada
dirección indirecta. Sí en cualquier instrucción se opera con la dirección 00, en realidad
se estará operando con la dirección a donde apunte el contenido del FSR. Por ejemplo si
el FSR contiene el valor 14, una instrucción que opere sobre la dirección 0, operara en
realidad sobre la dirección 14. Se puede decir en este ejemplo que la posición 14 de
memoria fue direccionada en forma indirecta a través del puntero FSR.

Ejemplo :

; Esta porción de programa borra 5 posiciones de memoria a partir de la dirección 12

FSR equ 04 ;(definición al comienzo del programa)


.....................................
.....................................
movlw 5 ;prepara para repetir 5 veces
movwf 08 ;(el registro 08 es el contador del loop)
movlw 12h ;apunta a la dirección 12h
movwf FSR ;
loop:
clrf 0 ;borra una posición de memoria
incf FSR ;apunta a la siguiente
decfsz 08 ;si todavía no borra todas
goto loop ;sige borrando
.....................................
.....................................
El direccionamiento indirecto es muy útil para el procesamiento de posiciones
consecutivas de memoria, como en el ejemplo, o para el direccionamiento de datos en
subrutinas.

Direccionamiento de la memoria de programa (EPROM, OTP)


La instrucción GOTO dispone solo de 9 bits en el código de operación para especificar
la dirección de destino del salto. Al ejecutar una instrucción GOTO el microprocesador
toma los dos bits que restan para completar la dirección de 11 bits, de los bits 5 y 6 de la
palabra de estado. Estos últimos son llamados bits de selección de página (PA0 y PA1).
El programador deberá asegurarse de que estos dos bits tengan el valor correcto antes de
toda instrucción GOTO. Ver figura 2.2.1

FIG 2.2.1 Direccionamiento directo con instrucción GOTO

Deberá tenerse en cuenta además que es posible avanzar de una página a otra en forma
automática cuando el PC se incrementa. Esto ocurre si el programa empieza en una
página y sigue en la siguiente. Sin embargo, al incrementarse el PC desde la última
posición de una página a la primera de la siguiente, los bits PA0 y PA1 no se
modifican, y por lo tanto sí se ejecuta una instrucción GOTO, CALL o alguna que
actúe sobre el PC, esta producirá un salto a la página anterior, a menos que el
programador tenga la precaución de actualizar el valor de dichos bits. Por este motivo es
conveniente dividir el programa en módulos o rutinas que estén confinados a una
página.

En el caso de la instrucción CALL, el direccionamiento se complica un poco más, ya


que la misma solo dispone de 8 bits para especificar la dirección de destino salto. En
este caso también se utilizan los mismos bits de selección de página para completar los
bits décimo y decimoprimero de la dirección, pero falta el noveno bit. En estas
instrucciones este bit se carga siempre con 0, lo que implica que solo se pueden realizar
saltos a subrutina a las mitades inferiores de cada página. En este caso también el
programador deberá asegurarse que el estado de los bits PA0 y PA1 sea el correcto al
momento de ejecutarse la instrucción. Ver figura 2.2.2
FIG. 2.2.2 Direccionamiento directo con instrucción CALL

Las instrucciones que operan sobre el PC como registro y alteran su contenido


provocando un salto, responden a un mecanismo muy similar al de las instrucciones
CALL para la formación de la dirección de destino. En este caso los bits 0 a 7 son el
resultado de la instrucción, el bit 8 es 0 y los bits restantes se toman de PA0 y PA1.

Este mecanismo se llama paginado, y a pesar de que representa una complicación


bastante molesta para el programador, resulta muy útil ya que permite ampliar la
capacidad de direccionamiento de memoria de programa para las instrucciones de salto.

http://www.geocities.com/micros_uan/cap22.html

Herramientas de desarrollo

UNA MIRADA RAPIDA AL MPLAB

Qué es el MPLAB ?
EL MPLAB es un “Entorno de Desarrollo Integrado “ (Integrated Development
Environment,
IDE) que corre en “Windows “, mediante el cual Usted puede desarrollar aplicaciones
para los microcontroladores de las familias PIC 16/17.
EL MPLAB le permite a Usted escribir, depurar y optimizar los programas (firmware)
de sus diseños con PIC 16/17. EL MPLAB incluye un editor de texto, un simulador y un
organizador de proyectos. Además, el MPLAB soporta el emulador PICMASTER y a
otras herramientas de desarrollo de Microchip como el PICSTART - Plus.

De que forma le ayuda el MPLAB ?

Con el MPLAB Usted puede:

• Depurar sus programas fuente.


• Detectar errores automáticamente en sus programas fuente para editarlos.
• Depurar los programas utilizando puntos de corte (breakpoints) mediante valores
de los registros internos.
• Observar el flujo del programa con el simulador MPLAB -SIM, ó seguirlo en
tiempo real utilizando el emulador PICMASTER.
• Realizar medidas de tiempo utilizando un cronómetro.
• Mirar variables en las ventanas de observación.
• Encontrar respuestas rápidas a sus preguntas, utilizando la Ayuda en línea del
MPLAB.

LAS HERRAMIENTAS DEL MPLAB

El Organizador de Proyectos (Proyect Manager).


El organizador de proyectos (Proyect Manager) es parte fundamental de MPLAB. Sin
crear un proyecto Usted no puede realizar depuración simbólica. Con el Organizador de
Proyectos (Proyect manager) puede utilizar las siguientes operaciones:

• Crear un proyecto.
• Agregar un archivo de programa fuente de proyecto.
• Ensamblar o compilar programas fuente.
• Editar programas fuente.
• Reconstruir todos los archivos fuente, o compilar un solo archivo.
• Depurar su programa fuente.

Software ensamblador:

El software ensamblador que presenta Microchip viene en dos presentaciones, una, para
entorno DOS llamado MPASM.EXE y la otra, para entorno Windows llamado
MPASMWIN.EXE
Las dos presentaciones soportan a TODOS los microcontroladores de la familia PIC de
Microchip.

El conjunto de instrucciones de los microcontroladores PIC es en esencia la base del


lenguaje ensamblador soportado por este software.

Directivas de uso frecuente:


Son instrucciones para el compilador.

#DEFINE
ej. #define <nombre> [<valor a remplazar>]
explicación: declara una cadena de texto como substituto de otra

END
ej. end
explicación: indica fin de programa

EQU
ej. status equ 05
explicación: define una constante de ensamble

INCLUDE
ej. include <PIC16F84.h>
explicación: incluye en el programa un archivo con código fuente

ORG
ej. org 0x100
explicación: ensambla a partir de la dirección especificada

Para información más completa referirse a la guía rápida del MPASM.


Una vez instalado adecuadamente el MPLAB, para realizar la simulación de un
programa deben seguirse los siguientes pasos:

Edite en un archivo de texto el siguiente programa:

;ejemplo:
status equ 0x03 ;hace equivalencia entre el símbolo status indicándolo como 3 en
hexadecimal
Cont equ 0x20
F equ 1
org 0 ;indica posición de memoria desde donde se ensambla
Inicio
movlw 0x0F ;carga de w con el valor constante 15 (literal)
movwf Cont ;el contenido de w se pasa al reg. CONT
Loop
decfsz Cont,F ;decremento de Cont y elude siguiente si=0
goto Loop ;salto incondicional a Loop
goto $ ;Salto incondicional aqui mismo
end ;Fin del código

Lista de pasos:

1. Haga doble click en el ícono correspondiente a MPLAB.


2. Crear el archivo fuente correspondiente (menú File...New Source).
3. Salve el archivo (con extensión .ASM) una vez terminada su edición (menú
FILE...Save).
4. Debe a continuación crearse un nuevo proyecto (menú Project...New Project).
5. Cuando aparezca la ventana de New Project editar las cajas de texto:
Project path and Name y Development Mode, hacer click en <OK>.
6. En la siguiente ventana Edit Project, hacer click en la sección Non-project files sobre
el nombre del archivo fuente realizado en los pasos 2 y 3.
7. Haga click en el botón <=add y luego de que éste aparezca en la sección Project Files
haga click sobre el botón <OK>.
8. Salvar el proyecto (en el menú Project...Save project).
9. Realizar la "construcción de todo el proyecto" (menú Project...Build All).
10. En esta etapa se realiza en forma automática el ensamble de nuestro programa
fuente y el vaciado de éste en memoria de simulación. El proceso de ensamble generará
un archivo de errores en caso de que estos existan, sí es así deben corregirse
directamente sobre el archivo fuente, salvar las correcciones y reconstruir el proyecto
(menú Project...Build All).

<<<En esta etapa del proceso ya se tiene el entorno listo para la simulación>>>
Vista típica del entorno MPLAB
Como en la mayoría de las aplicaciones Windows la pantalla se divide en varias
secciones:

1. Barra de título: Se observa el nombre del proyecto


2. Barra de menus: Acceso a las diferentes opciones del entorno
3. Barra de herramientas: Cada ícono ejecuta las acciones correspondientes
4. Barra de estados: Indica el estado del entorno y sus ventanas

Simulación:

1. Resetear el procesador (menú Debug...Run...Reset) ó con F6 ó con el ícono


correspondiente en la barra de herramientas.

2. Crear una nueva ventana donde se incluyan las variables que queremos tener en
cuenta (Window...New Watch Window)

3. Empezar a correr paso a paso el programa haciendo el seguimiento detallado de todos


y cada uno de los pasos (menú Debug...Run...Step) ó con la tecla F7 ó con el ícono
correspondiente en la barra de herramientas.

El proceso de simulación nos permite detectar y corregir problemas de lógica,


problemas de situaciones que no hayamos tenido en cuenta que son errores que no
pueden ser detectados en el momento del ensamble del programa.

Nota: El programa MPLAB puede obtenerse en forma gratuita de la dirección:


http://www.microchip.com/10/Tools/mTools/MPLAB/index.htm

http://www.geocities.com/micros_uan/cap23.html
Importancia del lenguaje ensamblador

La importancia del lenguaje ensamblador radica principalmente que se trabaja


directamente con el microprocesador; por lo cual se debe de conocer el
funcionamiento interno de este, tiene la ventaja de que en el se puede realizar
cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden
realizar. Otro punto sería que los programas en ensamblador ocupan menos
espacio en memoria.

2. Ventajas y desventajas del Lenguaje Ensamblador

Ventajas
1. Velocidad .- Como trabaja directamente con el microprocesador al ejecutar
un programa, pues como este lenguaje es el mas cercano a la máquina la
computadora lo procesa mas rápido.
2. Eficiencia de tamaño .- Un programa en ensamblador no ocupa mucho
espacio en memoria porque no tiene que cargan librerías y demás como son
los lenguajes de alto nivel
3. Flexibilidad .- Es flexible porque todo lo que puede hacerse con una
máquina, puede hacerse en el lenguaje ensamblador de esta máquina; los
lenguajes de alto nivel tienen en una u otra forma limitantes para explotar al
máximo los recursos de la máquina. O sea que en lenguaje ensamblador se
pueden hacer tareas especificas que en un lenguaje de alto nivel no se pueden
llevar acabo porque tienen ciertas limitantes que no se lo permiten

Desventajas
Tiempo de programación .- Como es un lenguaje de bajo nivel requiere más
instrucciones para realizar el mismo proceso, en comparación con un lenguaje
de alto nivel. Por otro lado, requiere de más cuidado por parte del programador,
pues es propenso a que los errores de lógica se reflejen más fuertemente en la
ejecución.
Programas fuente grandes .- Por las mismas razones que aumenta el tiempo,
crecen los programas fuentes; simplemente requerimos más instrucciones
primitivas para describir procesos equivalentes. Esto es una desventaja porque
dificulta el mantenimiento de los programas, y nuevamente reduce la
productividad de los programadores.
Peligro de afectar recursos inesperadamente .- Que todo error que podamos
cometer, o todo riesgo que podamos tener, podemos afectar los recursos de la
maquina, programar en este lenguaje lo más común que pueda pasar es que la
máquina se bloquee o se reinicialize. Porque con este lenguaje es
perfectamente posible (y sencillo) realizar secuencias de instrucciones
inválidas, que normalmente no aparecen al usar un lenguaje de alto nivel.
Falta de portabilidad.- Porque para cada máquina existe un lenguaje
ensamblador; por ello, evidentemente no es una selección apropiada de
lenguaje cuando deseamos codificar en una máquina y luego llevar los
programas a otros sistemas operativos o modelos de computadoras.
3. Relación del lenguaje ensamblador con los componentes internos del
procesador

En• la memoria se almacena la información en celdas especiales llamados


registros los cuales tienen un nivel alto y un nivel bajo.
Unidad aritmética y• lógica es la responsable de realizar como su nombre
lo indica operaciones aritméticas y lógicas.
• Unidad de control Se encarga de coordinar de que los otros componentes
ejecuten las operaciones correctamente.
• Bus interno son los canales por donde pasa la información que la
máquina va a procesar (bus de entrada) o procesada (bus de salida).

Registros de uso general


AX = Registro acumulador, dividido en AH y AL (8 bits cada uno).- Interviene en
las operaciones aritméticas y lógicas, después de la operación arroja un
resultado.
BX = Registro base, dividido en BH y BL.- Se utiliza en transferencias de datos
entre la memoria y el procesador.
CX = Registro contador, dividido en CH y CL.- Se utiliza como contador en
bucles(LOOP), en operaciones con cadenas(REP), y en desplazamientos(CL).
DX = Registro de datos, dividido en DH y DL.- Se utiliza en operaciones de
multiplicación y división junto con Ax y en operaciones de entrada y salida de
puertos, su mitad inferior DL contiene el número de puertos.

Registros de Estado
Hay nueve indicadores de un bit en este registro de 16 bits. Los cuatro bits más
significativos están indefinidos, mientras que hay tres bits con valores
determinados: los bits 5 y 3 siempre valen cero y el bit 1 siempre vale uno.
CF (Carry Flag, bit 0): Si vale 1, indica que hubo "arrastre" (en caso de suma) o
"préstamo" (en caso de resta). Este indicador es usado por instrucciones que
suman o restan números que ocupan varios bytes. Las instrucciones de
rotación pueden aislar un bit de la memoria o de un registro poniéndolo en el
CF.
PF (Parity Flag, bit 2): Si vale uno, el resultado tiene paridad par, es decir, un
número par de bits a 1. Este indicador se puede utilizar para detectar errores
en transmisiones.
AF (Auxiliary carry Flag, bit 4): Si vale 1, indica que hubo "arrastre" o
"préstamo" del nibble (cuatro bits) menos significativo al nibble más
significativo. Este indicador se usa con las instrucciones de ajuste decimal.
ZF (Zero Flag, bit 6): Si este indicador vale 1, el resultado de la operación es
cero.
SF (Sign Flag, bit 7): Refleja el bit más significativo del resultado. Como los
números negativos se representan en la notación de complemento a dos, este
bit representa el signo: 0 si es positivo, 1 si es negativo.
TF (Trap Flag, bit 8): Si vale 1, el procesador está en modo paso a paso. En
este modo, la CPU automáticamente genera una interrupción interna después
de cada instrucción, permitiendo inspeccionar los resultados del programa a
medida que se ejecuta instrucción por instrucción.
IF (Interrupt Flag, bit 9): Si vale 1, la CPU reconoce pedidos de interrupción
externas. Si vale 0, no se reconocen tales interrupciones
DF (Direction Flag, bit 10): Si vale 1, las instrucciones con cadenas sufrirán
"auto-decremento", esto es, se procesarán las cadenas desde las direcciones
más altas de memoria hacia las más bajas. Si vale 0, habrá "auto-incremento",
lo que quiere decir que las cadenas se procesarán de "izquierda a derecha".
OF (Overflow flag, bit 11): Si vale 1, hubo un desborde en una operación
aritmética con signo, esto es, un dígito significativo se perdió debido a que
tamaño del resultado es mayor que el tamaño del destino.

Relación entre el código binario y el lenguaje ensamblador


En el código binario se utilizan ceros y unos, mientras que el lenguaje
ensamblador es una colección de símbolos mnemónicos que representan:
operaciones, nombres simbólicos, operadores y símbolos especiales.
La relación entre estos dos lenguajes sería que el binario es el lenguaje que la
máquina entiende y el ensamblador se acerca mas lenguaje de esta.

4. Manejo de la memoria: Direccionamiento (interno y externo)

El manejo de la memoria depende de que procesador tenga la máquina, entre


los cuales a continuación se mencionan los siguientes:
Memoria de• Programa
Memoria Externa de Datos•
Memoria Interna de• Datos
• Registros de Funciones Especiales
Memoria de Bit.•

El espacio de la Memoria de Programa contiene todas las instrucciones, datos,


tablas y cadenas de caracteres (strings) usadas en los programas. Esta
memoria se direcciona principalmente usando el registro de 16 bits llamado
Data Pointer. El tamaño máximo de la Memoria de Programa es de 64 Kbytes.
La Memoria Externa de Datos contiene todas las variables y estructuras de
datos que no caben en la memoria interna del Microprocesador. Esta memoria
se direcciona principalmente por el registro de 16 bits Data Pointer , aunque
también se puede direccionar un banco de Memoria Externa de Datos de 256
bytes usando los dos primeros registros de propósito general .
El espacio de Memoria Interna de Datos funcionalmente es la memoria de
datos más importante, ya que ahí es donde residen cuatro bancos de registros
de propósito general; la pila o stack del programa; 128 bits de los 256 bits de
un área de memoria direccionable por bit y todas las variables y estructuras de
datos operadas directamente por el programa. El tamaño máximo de la
Memoria Interna de Datos es de 256 bytes.
Contiene un espacio para los denominados Registros de Funciones Especiales
destinado para los puertos de entrada/salida, temporizadores y puerto serie del
circuito integrado. Estos registros incluyen al Stack Pointer; al registro de la
palabra de estado del programa y al Acumulador. La cantidad máxima de
Registros de Funciones Especiales es 128.
Todos los Registros de Funciones Especiales tienen direcciones mayores a
127 y se ubican en los 128 bytes superiores de la Memoria Interna de Datos.
Estas dos áreas de la Memoria Interna de Datos se diferencian por el modo de
direccionamiento usado para accesarlas. Los Registros de Funciones
Especiales solo se pueden accesar usando el modo de direccionamiento
Directo, mientras que los 128 bytes superiores solo se pueden accesar con el
modo de direccionamiento Indirecto.
Por otra parte, el espacio de Memoria de Bit se usa para almacenar variables y
banderas de un bit. El tamaño máximo de la Memoria de Bit es de 256 bits, 128
de los bits comparten su espacio con 16 bytes del espacio de la Memoria
Interna de Datos y los otros 128 bits lo hacen con los Registros de Funciones
Especiales.

http://www.monografias.com/trabajos14/lenguensambla/lenguensambla.s
html

4.3 Aplicaciones.
4.3.1 Como sistema independiente.
4.3.2 Como subsistema de una computadora.

Vous aimerez peut-être aussi