arquitectura_computadoras_ISC - Servidor de Apoyo al Sistema

Anuncio
Arquitectura de computadoras
Unida
Temas
d
1
Modelo de
arquitecturas de
cómputo.
Subtemas
1.1
1.2
2
Comunicación
interna en la
computadora.
Modelos de arquitecturas de cómputo.
1.1.1 Clásicas.
1.1.2 Segmentadas.
1.1.3 De multiprocesamiento.
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.1 Buses.
2.1.1 Bus Local.
2.1.2 Bus de datos.
2.1.3 Bus de direcciones.
2.1.4 Bus de control.
2.1.5 Buses normalizados.
2.2 Direccionamiento.
2.2.1 Modo real.
2.2.2 Modo protegido.
2.2.3 Modo real virtual.
2.3 Temporización.
2.3.1 Reloj de sistema.
2.3.2 Reset del sistema.
2.3.3 Estados de espera.
2.4 Interrupciones de Hardware.
2.4.1 Enmascarable.
2.4.2 No-enmascarable.
2.5 Acceso Directo a memoria.
2.5.1 Sistema de video.
2.5.2 Sistema de discos.
2.5.3 Otras aplicaciones.
3
Selección de
componentes para
3.1 Chip Set.
3.1.1 CPU.
ensamble de
equipos de
cómputo.
4
3.1.2
3.1.3
3.1.4
3.1.5
3.1.6
Controlador del Bus.
Puertos de E/S.
Controlador de Interrupciones.
Controlador de DMA.
Circuitos de temporización y
control.
3.1.7 Controladores de video.
3.2 Aplicaciones.
3.2.1 Entrada/ Salida.
3.2.2 Almacenamiento.
3.2.3 Fuente de alimentación.
3.3 Ambientes de servicios.
3.3.1 Negocios.
3.3.2 Industria.
3.3.3 Comercio electrónico.
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.
4.3.1 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-pipelinevectorial.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
TECLADO
MOUSE
SCANNER
VOS (Salida)
IMPRESORA
COMPORTAMIENTO
Entrada
"
"
Salida
"
CLASIFICACION
Carácter
"
"
"
"
TASA KB/SEG.
0,01
0,02
400
0,6
1,0
(Línea)
IMPRESORA
(Láser)
MODEM
RED LAN
FLOPPY
CD
CINTA
MAGNETICA
DISCO
MAGNETICO
"
"
200
Entrada / salida
"
Almacenamiento
"
"
"
"
Bloque
"
"
2,0-8,0
500-6000
100
1000
2000
"
"
2000-10000
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
3.2.3.2
Arquitecturas.
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 handheld, 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
s
Vector de interrupciones
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
o
o
o
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, 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:
Procesadores
Bus de direcciones
(bits)
Bus de datos
(bits)
808680186
20
16
808880188
20
8
80286
24
16
80386 SX
32
16
80386 DX
80486 SX
80486 DX
32
32
PENTIUM PENTIUM II/III/IV
AMD K5/K6/K7
AMD ATHLON/THUNDERBIRD
AMD ATHLON XP/MP
32
64
INTEL ITANIUM
AMD ATHLON64
32/64
64/128
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-ToISA-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/doce
ncia/cur04_05/fi/teoria/04_Ordenador.pdf+%22funcionamiento+de+la+memoria%22inf
ormatica&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 SA16SA19 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 lecturaescritura. 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
o
Ciclo de Lectura: Cuando los datos en Memoria o puertos
de E/S se transfieren a la CPU.
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
o
o
CHIPSELECT (CS’)
LECTURA (RD’)
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 FastSCSI 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 2 24 (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%2
0memoria%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.
pocas
cuando
contadores
pueden ser
D7..D0:
CLK 0:
OUT 0:
GATE
0:
CLK 1:
OUT 1:
GATE
1:
CLK 2:
OUT 2:
GATE
2:
A0..A1:
-CS:
-WR:
-RD:
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
diferencias serán comentadas
llegue el caso.
12.3.1 - DESCRIPCIÓN DEL
INTEGRADO.
Este circuito integrado posee 3
totalmente independientes, que
programados de 6 formas diferentes.
BUS de datos bidireccional de 3 estados.
CLOCK 0, entrada de reloj al contador 0.
Salida del contador 0.
Puerta de entrada al contador 0.
CLOCK 1, entrada de reloj al contador 1.
Salida del contador 1.
Puerta de entrada al contador 1.
CLOCK 2, entrada de reloj al contador 2.
Salida del contador 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
control.
Habilita la comunicación con la CPU.
Permite al 8254 aceptar datos de la CPU.
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
contador 2 con el altavoz)
OR
AL,00000001b
contador 2)
JMP
SHORT $+2
OUT
61h,AL
; borrar bit 1
(conexión
; activar bit 0 (línea GATE del
; estado de espera para E/S
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
CALL
MOV
MOV
CALL
LOOP
INT
inic_retardo
CX,20
AX,59659
retardo
retard
20h
inicio:
retard:
inic_retardo
inic_retardo
retardo
PROC
PUSH
IN
AND
OR
JMP
OUT
MOV
JMP
OUT
POP
RET
ENDP
PROC
PUSH
AX
AL,61h
AL,11111101b
AL,1
SHORT $+2
61h,AL
AL,10110100b
SHORT $+2
43h,AL
AX
AX
; 20 retardos
; de 50 milisegundos
; contador 2, modo 2, binario
retardando:
retardo
programa
PUSH
CLI
OUT
MOV
JMP
OUT
JMP
IN
XOR
JMP
OUT
XOR
JMP
OUT
STI
JMP
MOV
MOV
OUT
JMP
IN
MOV
JMP
IN
XCHG
CMP
MOV
JBE
POP
POP
RET
ENDP
ENDS
END
BX
42h,AL
AL,AH
SHORT $+2
42h,AL
SHORT $+2
AL,61h
AL,1
SHORT $+2
61h,AL
AL,1
SHORT $+2
61h,AL
SHORT $+2
BX,0FFFFh
AL,10000000b
43h,AL
SHORT $+2
AL,42h
AH,AL
SHORT $+2
AL,42h
AH,AL
AX,BX
BX,AX
retardando
BX
AX
; parte baja de la cuenta
; parte alta
; bajar GATE
; subir GATE
; enclavamiento
; leer contador
; AX = valor del contador
inicio
El procedimiento inic_retardo programa el contador 2 en el modo 2, con datos en
binario y 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
OUT
MOV
MOV
JMP
OUT
MOV
JMP
OUT
43h,AL
BX,6553
AL,BL
SHORT $+2
40h,AL
AL,BH
SHORT $+2
40h,AL
; contador 0, operación 11b,
datos binarios
; valor de cuenta
; enviar byte bajo
; 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
retardo_asm
retardo_c
retardo_c
(66267L);
(MICRO(1000000L));
(66267L);
(MICRO(1000000L));
/*
/*
/*
/*
un segundo */
otro segundo (¡más claro!) */
ahora en C */
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
AND
JMP
OUT
AL,61h
AL,11111110b
SHORT $+2
61h,AL
; estado de espera para E/S
; bajar GATE del contador 2
del 8254
MOV
CX,100h
PUSH
CX
IN
AL,61h
XOR
AL,2
JMP
SHORT $+2
OUT
61h,AL
MOV
CX,300
retardo:
LOOP
retardo
POP
CX
LOOP
otro_ciclo
STI
Control del altavoz por el temporizador.
; 256 vueltas
otro_ciclo:
; invertir bit 1
; constante de retardo
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
operación 11b, datos binarios
OUT
43h,AL
MOV
AX,2711
LA) = 2711
JMP
SHORT $+2
OUT
42h,AL
MOV
AL,AH
JMP
SHORT $+2
OUT
42h,AL
JMP
SHORT $+2
IN
AL,61h
OR
AL,00000011b
JMP
SHORT $+2
OUT
61h,AL
MOV
CX,0
demora:
LOOP
demora
por el peor método
IN
AL,61h
AND
AL,11111100b
JMP
SHORT $+2
OUT
61h,AL
; contador 2, modo 3,
; programar contador 2
; 1.193.180 / 440 Hz (nota
; frecuencia programada
; altavoz sonando
; esperar un cierto tiempo
; altavoz callado
Las frecuencias en Hz de las distintas notas musicales 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
2.10.2
2.10.3
Sistema de video.
Sistema de discos.
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
RAM cacheable
máxima
FPM, EDO
64 MB
FPM, EDO, SDRAM
512 MB (según
placa, no todas)
64 MB
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
Número CPUs máx.
1
RAM máxima
Tipos de RAM
RAM cacheable
máxima
MVP3
512 MB
1 GB
FPM, EDO, BEDO, SDRAM
FPM, EDO, SDRAM
512 MB (según placa, no todas)
Caché L2 máxima
512 MB ó 1 GB (según placa, no
todas)
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 nueva generación (no soportan
AGP ni bus 100 MHz)
Sin bus a 100
MHz
Muy moderno,
con todos los
avances
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 III)
M1531/M15X3 (Aladdin
IV-IV+)
Número CPUs máx.
M1541/M1543
(Aladdin V)
1
RAM máxima
1 GB
Tipos de RAM
FPM, EDO, SDRAM
RAM cacheable
máxima
FPM, EDO, SDRAM,
PC100
512 MB (según placa, no todas)
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
generación (AMD K6-2) por carecer de bus a 100
MHz
Muy moderna, con
todos los avances
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
Número CPUs máx.
RAM máxima
Tipos de RAM
5591/5592
1
384 MB
768 MB
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 integrada
UltraDMA y USB
UltraDMA, USB y AGP
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
Número CPUs máx.
440 BX
440 EX
2
1
RAM máxima
512 MB
1 GB EDO ó 512
MB SDRAM
1 GB
256 MB
Tipos de RAM
FPM, EDO
FPM, EDO,
SDRAM
SDRAM y PC100
SDRAM
FPM, EDO,
SDRAM
RAM cacheable
máxima
No aplicable (dentro del microprocesador, tamaño fijo)
Caché L2 máxima
Velocidad bus máx.
66 MHz
Puertos adicionales
UltraDMA y USB
Comentarios
Desfasado
100 MHz
66 MHz
UltraDMA, USB y AGP
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
Número CPUs máx.
ALI Aladdin Pro II
M1621/M15X3
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
SIS 5601
RAM cacheable
máxima
No aplicable (dentro del microprocesador, tamaño
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
3.1.2
CPU.
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
hardware incluidos en ella tienen la característica de "Puertos". Por
ejemplo, durante mucho tiempo algunos PC's disponían de un botón
frontal señalado "Turbo", con el que se podía cambiar la velocidad de
funcionamiento. Este cambio de la velocidad del reloj también puede
realizarse por software. Basta para ello cambiar un par de bits en un
"Puerto" instalado en la propia placa-base (generalmente en el rango 626Fh).
§2 Direcciones de puertos
El modelo de direccionamiento del PC ha adoptado dos modelos, según la
naturaleza del dispositivo a conectar: Direccionamiento dedicado para
dispositivos de media/baja velocidad. Por ejemplo, puertos serie y paralelo
(impresora), teclado, Etc. y direccionamiento mapeado en memoria para
dispositivos rápidos (típicamente los adaptadores gráficos). En el apartado
dedicado a E/S se explican las diferencias entre ambas modalidades ( H2.1)
§2.1 Respecto a los dispositivos de direccionamiento dedicado, desde la
introducción del IBM-PC, es costumbre que determinados dispositivos muy
comunes se conecten mediante puertos de
direcciones determinadas.
Agunas direcciones (hex) de
puertos en el PC XT/AT
Dispositivo
Dirección
Controlador DMAC#1
primario 8237A
000-00F
Controlador de
interrupciones PIC#1
8259A
020-021
Temporizador
programable PIT 8253
y 8254
040-043
Controlador periféricos
PPI 8255 (XT)
060-063
Controlador 8742 (AT)
Altavoz del sistema
CMOS RAM & NMI
Mask Reg (AT)
060-064
061-061
070-071
Registros de página
DMA
Controlador de
interrupciones PIC#2
(AT)
NMI Mask register (XT)
081-08F
0A0-0A1
0A2-0AF
Controlador DMAC#2
secundario (AT)
0C0-0DF
Clear / Reset del
coprocesador
matemático
0F0-0F1
Coprocesador
matemático 80287
0F8-0FF
Controlador de disco
duro (AT)
1F0-1FF
Puerto de juegos
Unidad de expansión
(XT)
Ratón (conectado al
bus)
Ratón de bus
alternativo
Puerto paralelo (LPT2)
EGA (Enhanced
Graphic Adapter)
EGA
EGA
GPIB Adaptador 0 (AT)
Puerto serie 8250
(COM4)
Puerto serie 8250
200-20F
210-21F
238-23B
23C-23F
278-27F
2B0-2BF
2C0-2CF
2D0-2DF
2E0-2E7
2E8-2EF
2F8-2FF
En la tabla adjunta se muestran algunas de
estas direcciones típicas para dispositivos
de E/S [3]. Las referencias a los chips se
refieren a los utilizados en los primeros
PCs; actualmente han sido sustituidos por
uno o dos integrados (Chipset) que
realizan todas las funciones.
Puede observarse que para un mismo
periférico se tienen varias direcciones (un
"rango"). La razón es que estos
dispositivos tienen varios registros y/o son
programables, para lo que disponen de
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).
(COM2)
Tarjetas específicas
(prototipos)
Tarjetas específicas
(prototipos)
Controlador disco duro
(XT)
Tarjeta de red
Tarjeta de red
Puerto paralelo (LPT1)
SDLC Puerto 2 [1]
SDLC Puerto 1
MDA (Monochrome
Display Adapter)
Puerto paralelo (LPT3)
EGA
CGA
§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
LPT1
LPT2
LPT3
Puerto serie 8250
(COM3)
300-30F
310-31F
320-32F
360-363
368-36B
378-37F
380-38F
3A0-3AF
3B0-3BB
3BC-3BF
3C0-3CF
3D0-3DF
3E8-3EF
Controlador de
disquete
3F0-3F7
Puerto serie 8250
(COM1)
3F8-3FF
Monocromo Color
3BC-3BFh 378-37Fh
378-37Fh 278-27Fh
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
COM1
COM2
COM3
COM4
Dirección
3F8-3FFh
2F8-2FFh
3E8-3EFh
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 MetalOxide 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 Setup.
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
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
Fig. 2
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
o
o
elegir los sitios que serán incluidos. Estas instalaciones suelen soportar "browsing" así como
búsqueda del catálogo mediante palabras clave.
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.
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 amboso 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
PRODUCTOS /
MODULOS
NUMERO DE
LICENCIAS
IMPORTE
HORAS INST.
SOP.
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.
2.
El comprador adquiere dinero anticipadamente (prepago) para poder gastarlo
en pequeños pagos.
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.
2.
3.
4.
Una vez realizado el pedido, el comprador proporciona su número de tarjeta al
vendedor a través de la red.
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.
El banco receptor pide autorización al banco emisor a través de la red de medios de
pago.
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.
2.
3.
4.
5.
6.
7.
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.
Que el comprador utilice un visor o navegador ("browser") compatible como SSL.
Con el uso del SSL:
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.
La información que envía el comprador se cifra, impidiendo el acceso a la misma por
alguien distinto al vendedor.
Se garantiza la no-manipulación de los datos entre el comprador y el vendedor.
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.
2.
3.
4.
5.
Confidencialidad de los datos, tanto económicos, como respecto a la naturaleza de los
bienes comprados.
Integridad de los datos en la transacción, sin la posibilidad de modificaciones
intermedias.
Autenticación del comprador como legítimo usuario de un medio de pago.
Autenticación del comercio como poseedor de una cuenta de liquidación con un banco
vendedor.
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
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.
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:
La memoria de programa generalmente es una Flash
o
EEPROM.
Tiene puertos de Entrada y Salida (Configurables por
o
software).
Poseen contadores de propósito especial.
Tiene incluido un reloj del sistema que permite
o
o
contabilizar tiempo.
o
o
o
o
Algunos modelos incluyen conversores A/D.
Tiene Memoria EEPROM para almacenar datos.
Tiene puerto de comunicaciones.
Manejan velocidades de operación hasta 20 MHz.
Algunos de estos dispositivos tienen puerto de
o
comunicaciones serial.
o
o
o
Tienen entradas para interrupción.
La programación es rápida.
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-mediantemicrocontrolador.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
4.1.2
Terminales.
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-mediantemicrocontrolador.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
Reloj principal
Características especiales.
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, A0A7), 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
XNZVC
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
1 1 0 0 Dato 0 Tamaño
Dir. Efectiva
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
0
C
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
1 1 0 0 Reg. Datos Modo Opera.
Dir. Efectiva
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
CS
EQ
GE
GT
HI
LE
LS
LT
MI
NE
PL
VC
VS
carry clear
carry set
equal
greater or equal
greater than
high
less or equal
low or same
less than
minus
not equal
plus
overflow clear
overflow set
(!C)
C
Z
N*V+(!N)*(!V)
N*V*(!Z)+(!N)*(!V)*(!Z)
(!C)*(!Z)
Z+N*(!V)+(!N)*V
C+Z
N*(!V)+(!N)*V
N
(!Z)
(!N)
(!V)
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
-
N.
Z.
V.
C.
X.
JMP - Jump
V
-
C
-
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.
X.
N
-
Z
-
V
-
C
-
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.
X.
N
-
Z
-
V
-
C
-
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.
X.
N
-
Z
-
V
-
C
-
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.
X.
N
-
Z
-
V
-
C
-
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.
X.
N
-
Z
-
V
-
C
-
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.
X.
N
-
Z
-
V
-
C
-
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.
X.
N
-
Z
-
V
-
C
-
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.
X.
N
-
Z
-
V
-
C
-
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.
X.
N
-
Z
-
V
-
C
-
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).
Instrucción
Sintaxis de los
operandos
Tamaño
Operación
EXG
Rn, Rm
32
Rn <=> Rm
LEA
< ea > , An
32
< ea > => An
LINK
An, # < d >
16 - >32
MOVE
MOVEA
< ea >, < ea >
< ea >, list
8 , 16 , 32
16 , 32 -> 32
Origen => Destino
MOVEM
list , < ea >
< ea > , list
16 , 32
16 , 32 -> 32
Reg de lista => Destino
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 ) ;
( An + d ) => Dn [ 31:24 ] ;
( An + d + 2 ) => Dn [ 23:16 ] ;
( An + d + 4 ) => Dn [ 15:8 ] ;
( An + d + 6 ) => Dn [ 7:0 ] ;
Dato inmediato => Destino
(d16 , An ), Dn
SP-4 => SP ; An => (SP)
SP => An ; SP + d => SP
MOVEQ
# < data , Dn
8 -> 32
PEA
< ea >
32
SP - 4 => SP ; < ea > => ( SP )
UNLK
An
32
An => SP ; ( SP ) => An ; SP + 4
=> 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).
Instrucción
Sintaxis de los
operandos
Tamaño
ADD
ADDA
Dn , < ea >
< ea > , Dn
< ea > , An
8 , 16 , 32
8 , 16 , 32
16 , 32
Operación
Origen + Destino =>
Destino
# < data > , < ea >
# < data > , < ea >
8 , 16 , 32
8 , 16 , 32
16 , 32
Dato inmediato + Destino
=>
Destino
ADDX
Dn , Dn
- ( An) , - ( An)
8 , 16 , 32
8 , 16 , 32
Origen + Destino + X =>
Destino
CLR
< ea >
8 , 16 , 32
0 => Destino
CMP
CMPA
< ea > , Dn
< ea > , An
8 , 16 , 32
16 , 32
Destino - Origen
CMPI
# < data > , < ea >
8 , 16 , 32
Destino -> Dato inmediato
CMPM
( An ) + , ( An ) +
8 , 16 , 32
Destino - Origen
< ea > , Dn
32/ 16 => 16
Destino / Origen =>
Destino
con / sin signo
Dn
Dn
8 => 16
16 => 32
Destino signo ext. =>
Destino
< ea > , Dn
16 * 16 => 32
Destino / Origen =>
Destino
con / sin signo
NEG
< ea >
8 , 16 , 32
0 - Destino => Destino
NEGX
< ea >
8 , 16 , 32
0 - Destino - X -> Destino
SUB
8 , 16 , 32
8 , 16 , 32
16 , 32
Destino - Origen =>
Destino
SUBA
Dn , < ea >
< ea > , Dn
< ea > , An
SUBI
SUBQ
# < data > , < ea >
# < data > , < ea >
8 , 16 , 32
8 , 16 , 32
Destino - Dato inm. =>
Destino
SUBX
Dn , Dn
- ( An) , - ( An)
8 , 16 , 32
8 , 16 , 32
Destino - Origen - X =>
Destino
ADDI
ADDQ
DIVS
DIVU
EXT
MULS
MULU
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
AND
Tamaño
Operación
Dn, < ea >
< ea > , Dn
8 , 16 , 32
8 , 16 , 32
# < data > , < ea >
8 , 16 , 32
Dato inm. ^ Destino =>
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 >
< ea > , Dn
8 , 16 , 32
8 , 16 , 32
Origen V Destino => Destino
# < data > , < ea >
8 , 16 , 32
< ea >
8 , 16 , 32
ANDI
ORI
TST
Origen Destino => Destino
Dato inm. V Destino =>
Destino
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
ASL
Dn, Dn
# < data >, Dn
< ea >
ASR
Dn, Dn
# < data >, Dn
< ea >
Tamaño
8 , 16 , 32
8 , 16 , 32
16
8 , 16 , 32
8 , 16 , 32
16
Operación
LSL
Dn, Dn
# < data >, Dn
< ea >
8 , 16 , 32
8 , 16 , 32
16
LSR
Dn, Dn
# < data >, Dn
< ea >
8 , 16 , 32
8 , 16 , 32
16
ROL
Dn, Dn
# < data >, Dn
< ea >
8 , 16 , 32
8 , 16 , 32
16
ROR
Dn, Dn
# < data >, Dn
< ea >
8 , 16 , 32
8 , 16 , 32
16
ROXL
Dn, Dn
# < data >, Dn
< ea >
8 , 16 , 32
8 , 16 , 32
16
ROXR
Dn, Dn
# < data >, Dn
< ea >
8 , 16 , 32
8 , 16 , 32
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
operandos
Tamaño
BCHG
Dn , < ea >
# < data > , < ea >
8 , 32
8 , 32
~ Destino [P] => Z =>
Destino [P]
BCLR
Dn , < ea >
# < data > , < ea >
8 , 32
8 , 32
~ Destino [P] => Z;
0 => Destino [P]
BSET
Dn , < ea >
# < data > , < ea >
8 , 32
8 , 32
~ Destino [P] => Z;
1 => Destino [P]
BTST
Dn , < ea >
8 , 32
~ Destino [P] => Z ;
Instrucción
Operación
# < 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
- ( An ), - ( An )
8
8
Origen + Destino + X =>
Destino
10
10
10
NBCD
< ea >
8
0 - Destino + X => Destino
10
10
SBCD
Dn, Dn
- ( An ), - ( An )
8
8
Destino - Origen - X =>
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.
Instrucción
Sintaxis de los
operandos
Tamaño
Operación
Condicionales
Bcc
DBcc
< label >
8 , 16
Dn , < label >
16
Si cc cierta, PC + d => PC
Si cc falsa, Dn - 1 => Dn;
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 ).
Instrucción
Sintaxis de los
operandos
Tamaño
Operación
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
An, USP
32
USP => An
An => USP
# < data > , SR
16
Dato inmediato SR => SR
ORI
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
# < data > , CCR
8
Dato inmediato CCR => CCR
ORI
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.
Instrucción
TAS
Sintaxis de los
operandos
Tamaño
< ea >
8
Operación
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
(d8,An,Xm)
110
número
idem con índice y desplazamiento.
Absoluto corto
xxx.W
111
000
Absoluto largo
xxx.L
111
001
(d16,PC)
111
010
111
011
111
Direccionamientos por dirección efectiva
100
PC con desplazamiento
PC con indice y desplazamiento
Inmediato
(d8,PC,Xn)
#<dato>
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
Bcc, BRA Salto condicional e incondicional
Registros afectados
PC
BSR
Salto a subrutina
PC, SP
CHK
Chequeo de registros entre límites
SSP, SR
DBcc
Test de condición, decremento y salto
DIVS
División con signo
SSP, SR
DIVU
División sin signo
SSP, SR
JMP
Salto
JSR
Salto a subrutina
LINK
Encadena y reserva espacio
MOVE CCR Mover los códigos de condición
MOVE SR Mover el registro de estado
MOVE USP Mover el apuntador de pila de usuario
PC
PC
PC, SP
SP
SR
SR
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
SSP, SR
TRAPV
Trap si hay rebose
SSP, SR
UNLK
Desencadenar
TRAP
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
0
d
f
3
f
2
f
1
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 
W
0100 0100
- 0010 1000 C DC Z
0001 1100 1 0 0
0010 1000
- 0100 0100 C DC Z
1110 0100 0 1 0

equivalente a :
f
0100 0100
cmp.2 W 
+ 1101 1000 C DC Z
0001 1100 1 0 0
0010 1000
+ 1011 1100 C DC Z
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
BTFSS f,b
;salteo si bit = 0, bit = f(0)  saltea
;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
goto loop
;incremento la posición 10 hasta que llegue a 0
;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
movwf
movlw
movwf
5
08
12h
FSR ;
;prepara para repetir 5 veces
;(el registro 08 es el contador del loop)
;apunta a la dirección 12h
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:
2. Barra de menus:
3. Barra de herramientas:
4. Barra de estados:
Se observa el nombre del proyecto
Acceso a las diferentes opciones del entorno
Cada ícono ejecuta las acciones correspondientes
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.
Descargar