Académique Documents
Professionnel Documents
Culture Documents
Interrupciones de Hardware.
Enmascarable.
No-enmascarable.
Acceso Directo a memoria.
Sistema de video.
Sistema de discos.
Otras aplicaciones.
Aunque las máquinas RISC son sólo de un 15% a un 50% más veloces
que sus contrapartidas CISC
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.
http://homepage.mac.com/eravila/computerII.html
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:
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.
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.
"http://es.wikipedia.org/wiki/Arquitectura_Harvard"
Arquitectura Harvard
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
http://www.monografias.com/trabajos12/microco/microco.shtml
ARQUITECTURA HARVARD
ARQUITECTURA VECTORIAL
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
Si se trata de una instrucción a ser ejecutada por la ALU podemos decir que la CPU realiza a
lo largo del ciclo de maquina estas 5 tareas.
Una vez que termina de ejecutar una instrucción va a buscar otra y tarda en ejecutarla un
tiempo T, es decir cada T segundos ejecuta una instrucción.
¿Qué sucede si dividimos en 5 unidades según las 5 cosas que realiza la CPU?
Supongamos la CPU dividida en 5 unidades, de tal forma que c/u tarde lo mismo en realizar
su partecita. Es decir c/u tardará T/5.
Para que una instrucción se ejecute se necesita T segundos entonces para que usar pipe-line.
Si ocurre esto en una CPU normal a una con pipe-line, la cantidad de instrucciones que se
hacen por segundo aumenta, es decir aumenta el flujo de instrucciones que se ejecutan por
segundo.
http://html.rincondelvago.com/computadores_arquitectura-harvard-pipeline-
vectorial.html
Arquitectura PIPE-LINE.
Ya hemos mencionado que una de las formas de lograr operaciones concurrentes en un
procesador se utilizan dos técnicas básicas: paralelismo y pipelining.
El paralelismo conseguía la concurrencia multiplicando la estructura del hardware tantas veces
como sea posible, de modo que las diferentes etapas del proceso se ejecuten
simultáneamente.
Pipelining consiste en desdoblar la función a realizarse en varias partes, asignándole al
hardware correspondiente a cada una de las partes también llamadas etapas. Así como el
agua fluye a través de una tubería (pipeline) las instrucciones o datos fluyen a través de las
etapas de un computador digital pipeline a una velocidad que es independiente de la longitud
de la tubería (numero de etapas del pipeline) y depende solamente de la velocidad a la cual los
datos e instrucciones pueden ingresar al pipeline.
Esta velocidad a su vez depende del tiempo que tarde el dato en atravesar una etapa. Este
tiempo puede ser significativo ya que el computador no solo desplaza los datos o instrucciones
de etapa en etapa sino que en cada una de ellas se realiza alguna operación sobre los mismos.
Como ejemplo en el caso de las instrucciones tendremos operaciones de búsqueda,
decodificación y ejecución.
Pipeline Físico:
Pipeline digital.
Mientras un ítem en particular fluye a través del pipeline, éste ocupa sólo una etapa por vez. A
medida que transcurre el tiempo la etapa que quedo vacante por un ítem, será ocupada por el
siguiente.
Este uso concurrente de diferentes etapas por diferentes ítems se lo conoce por solapamiento.
El resultado neto es que la máxima velocidad a la cual los nuevos ítems pueden ingresar al
pipeline depende exclusivamente del tiempo máximo requerido para atravesar una etapa y no
del número de éstas.
La utilización del pipeline se traduce en una mejora del comportamiento o performance del
procesador. Si una función se lleva a cabo en T segundos en un procesador de diseño
convencional, al utilizar un procesador pipeline de N etapas esa misma función podrá realizarse
en T/N segundos. Esto a nivel teórico, ya que la mejora de performance dependerá de la
cantidad de operaciones que puedan estructurarse en pipeline y también de calidad de la
partición o subdivisión de cada una de esas operaciones. La estructuración en pipeline de un
procesador se realiza en diferentes niveles como aritmética de punto flotante, ciclo de
instrucción, procesador de entrada/salida, etc.
Esta división o partición de una función en varias subfunciones se podrá realizar si se dan las
siguientes condiciones:
1. La evaluación de la función básica es equivalente a la evaluación secuencial de las
subfunciones que la constituyen.
2. Las entradas a una subfunción provienen únicamente de las salidas de subfunciones previas
en la secuencia de evaluación.
3. Excepto el intercambio de entradas y salidas no existe otra vinculación entre las
subfunciones.
4. Debe disponerse del hardware necesario para la evaluación de dichas subfunciones.
5. El tiempo requerido por estas unidades de hardware para evaluar las subfunciones es
aproximadamente el mismo.
Este hardware mencionado en el punto 4 es el correspondiente o asociado con las distintas
etapas del pipeline.
A diferencia del pipeline físico (tubería), el digital no maneja los datos en forma continua. Este
maneja los datos en forma interrumpida y los va desplazando de etapa en etapa sincronizando
con un reloj.
Dado que la lógica que realiza el procesamiento en cada etapa generalmente carece de
memoria y dado el carácter discontinuo de la aparición de los datos en las etapas se impone la
utilización de un elemento de memoria en la entrada y salida de cada etapa. De esta manera,
bajo el control del reloj asociado a cada elemento de memoria, evitamos que los datos ingresen
a una etapa antes que haya finalizado el proceso anterior.
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).
http://www.monografias.com/trabajos12/comptcn/comptcn.shtml#UCP
3.2.1.1 Arquitecturas.
Arquitectura interna del CPU
Dentro del conjunto básico de registros de control se deben incluir a los siguientes:
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.
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.
http://html.rincondelvago.com/arquitectura-interna-de-la-cpu.html
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.
Unidad Aritmético-Logica.
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:
3.2.1.4 Funcionamiento.
Funciones que realiza
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.
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:
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
http://www.monografias.com/trabajos14/dispositivos/dispositivos.shtml#
Jerarquía de memoria
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.
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:
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.
• 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.
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.
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.
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:
• Capacidad de almacenamiento.
• Tipos:
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
Cada celda tiene asociada una dirección, que indica la ubicación física de la
celda.
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:
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.
COSTES
Disquetes 50 pts/MB 2 s
MODO DE ACCESO
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
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
Hoy en día se requiere cada vez más memoria para poder utilizar complejos programas
y para gestionar complejas redes de computadores.
La idea básica es organizar el software como una serie de capas donde [23,
Tanenbaum]:
• 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.
• 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):
• 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
• 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.
Una pequeña parte consta de bibliotecas ligadas entre sí con los programas del usuario.
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO5.htm
3.2.3.1 Arquitecturas.
3.2.3.2 Tipos.
Los dispositivos de entrada salida se dividen, en general, en dos tipos: dispositivos
orientados a bloques y dispositivos orientados a caracteres. Los dispositivos orientados
a bloques tienen la propiedad de que se pueden direccionar, esto es, el programador
puede escribir o leer cualquier bloque del dispositivo realizando primero una operación
de posicionamiento sobre el dispositivo. Los dispositivos más comunes orientados a
bloques son los discos duros, la memoria, discos compactos y, posiblemente, unidades
de cinta. Por otro lado, los dispositivos orientados a caracteres son aquellos que trabajan
con secuencias de byes sin importar su longitud ni ningúna agrupación en especial. No
son dispositivos direccionables. Ejemplos de estos dispositivos son el teclado, la
pantalla o display y las impresoras.
http://www.tau.org.ar/base/lara.pue.udlap.mx/sistoper/capitulo6.html
Dispositivos de entrada
Dispositivos de Entrada/Salida
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
• 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.
• 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.
• 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.
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.
• 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.
• 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.
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
• Dispositivos de bloque.
• Dispositivos de caracter.
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO5.htm
Controladores de Dispositivos
• Un componente mecánico.
• Un componente electrónico, el controlador del dispositivo o adaptador.
Los modelos más frecuentes de comunicación entre la cpu y los controladores son:
El controlador debe:
Cada controlador posee registros que utiliza para comunicarse con la cpu:
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.
Controlador de e /
Dirección de e / s Vector de interrupciones
s
Reloj 040 - 043 8
Teclado 060 - 063 9
Disco duro 320 - 32f 13
Impresora 378 - 37f 15
Disco flexible 3f0 - 3f7 14
Rs232 primario 3f8 - 3ff 12
Rs232 secundario 2f8 - 2ff 11
Tabla 5.1: Controladores de e / s, direcciones de e / s y vector de
interrupciones.
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO5.htm
3.2.3.4 Funcionamiento.
Funciones que realiza
Vamos a señalar las funciones que debe realizar un computador para ejecutar trabajos
de entrada/salida:
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.
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
• Estructuras de interconexión
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.
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.
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 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.
Éste bus especial del bus dedicado, contiene cuatro subcategorías más:
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:
808680186 20 16
808880188 20 8
80286 24 16
80386 SX 32 16
80386 DX
80486 SX 32 32
80486 DX
INTEL ITANIUM
32/64 64/128
AMD ATHLON64
http://www.hardware12v.com/conocimientospc/41.php
Ahora vamos a ver los distintos tipos de buses que se han ido desarrollando y los que se
emplean en la actualidad.
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.
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.
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.
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.
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.
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
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 que de que las tarjetas ISA no pueden ser instaladas en una ranura PCI, no
debería renunciarse a la posibilidad de inserción de una tarjeta ISA. Así pues, a menudo
se puede encontrar en un equipo con bus PCI la interfaz «puente» llamada «PCI-To-
ISA-Bridge». Se trata de un chip que se conecta entre los distintos slots ISA y el
controlador del bus PCI. Su tarea consiste en transponer las señales provenientes del bus
PCI al bus ISA. De esta manera pueden seguir siendo utilizadas las tarjetas ISA al
amparo del bus PCI.
A pesar de que el bus PCI es el presente, sigue habiendo buses y tarjetas de expansión
ISA ya que no todas las tarjetas de expansión requieren las ratios de transferencia que
permite el bus PCI. Sin embargo las tarjetas gráficas, tarjetas SCSI y tarjetas de red se
han decantando cada vez más fuertemente hacia el bus PCI. La ventaja de la velocidad
de este sistema de bus es que este hardware puede participar del continuo incremento de
velocidad de los procesadores.
http://www.mailxmail.com/curso/informatica/arquitectu
raordenadores/capitulo12.htm
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:
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).
http://www.mailxmail.com/curso/informatica/arquitectu
raordenadores/capitulo13.htm
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.
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.
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.
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.
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.
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.
http://www.servicioalpc.com/ensamble5.htm
http://www.glosarium.com/term/893,14,xhtml
LOCAL BUS
El VL es una expansión homogeneizada de bus local, que funciona a 32 bits, pero que
puede realizar operaciones a 16 bits.
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
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.
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.
http://www.dinastiasoft.com.ar/Tecnologia/PCI.htm
http://64.233.167.104/search?
q=cache:QXZW4e1mbg8J:wwwdi.ujaen.es/~mcdiaz/docencia/cur04_05/fi/teoria/04_Or
denador.pdf+%22funcionamiento+de+la+memoria%22informatica&hl=es
2.6.2 Bus de datos.
Sirve para transmitir información entre el microprocesador, la memoria y los
periféricos. Por él circulan los datos y las instrucciones. Tiene tantas líneas
como bits se transmiten en paralelo (una para cada bit). El flujo es de doble
sentido y a mayor número de bits paralelos mayor podrá ser la velocidad de
transmisión que consigamos.
El ancho de este bus (n° de bits que puede transmitir simultáneamente en
paralelo) es una medida de la potencia del microprocesador. Este bus es como
una autopista de datos electrónicos y cuanto más ancho sea, más datos podrán
moverse al mismo tiempo.
El ancho del bus de datos es una de las características más importantes del
microprocesador. Cuando decimos que un microprocesadores, por ej., de 16
bits, nos estamos refiriendo al ancho de su bus de datos.
http://www.lawebdelprogramador.com/diccionario/mostrar.php?letra=B&pagina=4
El Bus de Datos es bidireccional, pues los datos pueden fluir hacia ó desde la CPU.
Los m terminales de la CPU, de D0 - Dm-1 , pueden ser entradas ó salidas, según la
operación que se este realizando ( lectura ó escritura ) . en todos los casos, las palabras
de datos transmitidas tiene m bits de longitud debido a que la CPU maneja palabras de
datos de m bits; del número de bits del bus de datos, depende la clasificación del
microprocesador. En algunos microprocesadores, el bus de datos se usa para transmitir
otra información además de los datos ( por ejemplo, bits de dirección ó información de
condiciones ). Es decir, el bus de datos es compartido en el tiempo ó multiplexado. En
general se adoptó 8 bits como ancho estándar para el bus de datos de los primeros
computadores PC y XT. Usualmente el computador transmite un carácter por cada
pulsación de reloj que controla el bus (bus clock), el cual deriva sus pulsaciones del
reloj del sistema (system clock). Algunos computadores lentos necesitan hasta dos
pulsaciones de reloj para transmitir un carácter. Los computadores con procesador
80286 usan un bus de datos de 16 bits de ancho, lo cual permite la comunicación de dos
caracteres o bytes a la vez por cada pulsación de reloj en el bus. Los procesadores
80386 y 80486 usan buses de 32 bits. El PENTIUM de Intel utiliza bus externo de datos
de 64 bits, y uno de 32 bits interno en el microprocesador.
Bus de datos, 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
http://www.modelo.edu.mx/univ/virtech/prograc/cbyn03.htm
Bus de direcciones
http://html.rincondelvago.com/bus-de-direcciones_dispositivo-dma.html
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.
El bus de direcciones
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.
http://www.zator.com/Hardware/H2.htm#Controlador DMA
http://www.unicrom.com/Cmp_estructura.asp
El bus de control
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.
http://www.hardware12v.com/conocimientospc/41.php
http://www.modelo.edu.mx/univ/virtech/prograc/cbyn03.htm
http://html.rincondelvago.com/arquitectura-de-computadoras_2.html
Bus de Control
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:
Las líneas de control son aquellas con las que se controla el flujo de la información por
los buses, y las más importantes son:
o CHIPSELECT (CS’)
o LECTURA (RD’)
o ESCRITURA (WR’)
Cada transferencia empieza con la carga de una dirección en el bus de direcciones. Las
líneas correspondientes a la los bits menos significativos de la dirección se encuentran
conectados directamente a las memorias. Las líneas de dirección de los bits más
significativos se utilizan para seleccionar el dispositivo del cual se desea extraer la
información, ya sea una EPROM, RAM o un Puerto de E/S. Entonces, el decodificador de
direcciones se encarga de seleccionar el dispositivo que se debe activar según la
dirección presente en el bus. Para ello, cada dispositivo en el microcomputador debe
tener una única dirección que lo identifique. En la figura 11.2.3 se muestra un diagrama
de los tiempos de las señales presentes durante el flujo de los datos y direcciones en el
bus del sistema.
Figura 11.2.3. Diagrama de tiempos de las señales del bus del sistema.
La señal CS’ selecciona el dispositivo que debe transmitir los datos por el bus de datos.
Luego una de las señales RD o WR se activa desde la CPU, con lo cual se ordena al
dispositivo seleccionado enviar los datos a la CPU (ciclo de lectura) o recibirlos de la
CPU (ciclo de escritura).
Todos los ciclos de lectura y escritura comienzan con una dirección válida de la CPU.
Luego el decodificador de direcciones genera una señal CS’ para seleccionar uno de los
dispositivos. Entonces la CPU envía una señal RD o WR para efectuar la lectura o
escritura de los datos.
Para una operación de lectura el dispositivo debe conducir a través del bus de datos, lo
cual toma un tiempo corto (el tiempo de acceso de los datos), y los datos deben estar
disponibles en el bus durante el flanco de subida de la señal RD. Durante este flanco de
subida la CPU toma los datos y los almacena internamente en sus registros.
Durante un ciclo de escritura la CPU por si misma maneja de los datos. En este caso, al
igual que en el ciclo de lectura los datos deben estar disponibles en el bus antes de que
ocurra el flanco de subida de la señal WR, para que el dispositivo seleccionado pueda
recibir los datos correctamente.
http://www.virtual.unal.edu.co/cursos/ingenieria/2000477/lecciones/110201.htm
Bus de control
• 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).
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:
8 bits 16 bits
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.
Características:
- Velocidad de 33 Mhz.
Características
- Sencillez
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.
Ultra SCSI: Salió en 1996, aumenta las prestaciones del SCSI. Compatible
con Fast-SCSI 2 y con Fast/Wide-SCSI 2.
Para buses de 8 bits. Alcanza los 20 Mb/seg, y para buswes de 16 bits llega
hasta 40 Mb/seg.
http://html.rincondelvago.com/informatica-basica_8.html
2.7 Direccionamiento.
MODOS DE DIRECCIONAMIENTO Y FORMATOS
Introducción
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.
- Direccionamiento implícito
- 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 indirecto
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.
- Direccionamiento indexado
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.
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.
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
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
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.
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:
http://personales.com/colombia/bucaramanga/koll/Modo%20protegido%20y
%20memoria%20virtual.htm
2.7.3 Modo real virtual.
El 80386 (DX)
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.
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.
http://personales.com/peru/lima/ensamblaje/procesador.htm
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.
http://www.modelo.edu.mx/univ/virtech/prograc/cbyn03.htm
El 8253/4 es un chip temporizador que puede ser empleado como reloj de tiempo
real, contador de sucesos, generador de ritmo programable, generador de onda cuadrada,
etc. En este capítulo, la información vertida estará relacionada con el 8254 que equipa a
los AT, algo más potente que el 8253 de los PC/XT; sin embargo,
las pocas diferencias serán comentadas cuando llegue el caso.
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.
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...).
Operaciones de lectura.
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).
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:
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.
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).
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 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.
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.
IN AL,61h
AND AL,11111101b ; borrar bit 1 (conexión
contador 2 con el altavoz)
OR AL,00000001b ; activar bit 0 (línea GATE del
contador 2)
JMP SHORT $+2 ; estado de espera para E/S
OUT 61h,AL
ORG 100h
inicio:
CALL inic_retardo
MOV CX,20 ; 20 retardos
MOV AX,59659 ; de 50 milisegundos
retard: CALL retardo
LOOP retard
INT 20h
inic_retardo PROC
PUSH AX
IN AL,61h
AND AL,11111101b
OR AL,1
JMP SHORT $+2
OUT 61h,AL
MOV AL,10110100b ; contador 2, modo 2, binario
JMP SHORT $+2
OUT 43h,AL
POP AX
RET
inic_retardo ENDP
retardo PROC
PUSH AX
PUSH BX
CLI
OUT 42h,AL ; parte baja de la cuenta
MOV AL,AH
JMP SHORT $+2
OUT 42h,AL ; parte alta
JMP SHORT $+2
IN AL,61h
XOR AL,1 ; bajar GATE
JMP SHORT $+2
OUT 61h,AL
XOR AL,1 ; subir GATE
JMP SHORT $+2
OUT 61h,AL
STI
JMP SHORT $+2
MOV BX,0FFFFh
retardando: MOV AL,10000000b
OUT 43h,AL ; enclavamiento
JMP SHORT $+2
IN AL,42h ; leer contador
MOV AH,AL
JMP SHORT $+2
IN AL,42h
XCHG AH,AL ; AX = valor del contador
CMP AX,BX
MOV BX,AX
JBE retardando
POP BX
POP AX
RET
retardo ENDP
programa ENDS
END inicio
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.
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:
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>
void main()
{
/* cuatro formas de hacer un mismo retardo de precisión */
do
do {
while (a==(b=inportb(0x61) & 0x10));
a=b;
} while (cuenta_l--);
while (cuenta_h--);
}
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.
El altavoz del ordenador está ligado en todas las máquinas al bit 1 del puerto E/S 61h. Si se hace
cambiar este bit (manteniéndolo durante cierto tiempo alto y durante cierto tiempo bajo, repitiendo el
proceso a gran velocidad) se puede generar una onda cuadrada de sonido. Cuanto más deprisa se realice el
proceso, mayor será la frecuencia del sonido. Por fortuna, la baja calidad del altavoz del PC redondea la
onda cuadrada y produce un sonido algo más musical de forma involuntaria. No existe, en cualquier caso,
control sobre el volumen, que dada la calidad del altavoz también está en función de la frecuencia. Este
método de producción de sonido tiene varios inconvenientes. Por un lado, la frecuencia con que se hace
vibrar al bit que lo produce, si no se tiene mucho cuidado, está a menudo más o menos ligada a la
capacidad de proceso del ordenador: esto significa que el sonido es más grave en máquinas lentas y más
agudo en las rápidas. Esto es particularmente grave y evidente cuando las temporizaciones se hacen con
bucles de retardo con registros de la CPU: la frecuencia del sonido está totalmente a merced de la
velocidad de la máquina en que se produce. Es por ello que el pitido de error que produce el teclado es a
menudo distinto de unos ordenadores a otros, aunque tengan el mismo KEYB instalado. Otro gran
inconveniente de este método es que las interrupciones, fundamentalmente la del temporizador, producen
fuertes interferencias sobre el sonido. Por ello, es normal tenerlas inhibidas, con el consiguiente retraso de
la hora. Por último, un tercer gran inconveniente es que la CPU está completamente dedicada a la
producción de sonido, sin poder realizar otras tareas mientras tanto.
Antes de comenzar a producir el sonido con este método hay que bajar la línea GATE del 8254, ya que
cuando está en alto y se activa también el bit 1 del puerto E/S 61h, el temporizador es el encargado de
producir el sonido (este es el segundo método, como veremos). Por tanto, es preciso poner primero a cero
el bit 0 del mismo puerto (61h):
CLI ; evitar posible INT 8, entre
otras
IN AL,61h
AND AL,11111110b
JMP SHORT $+2 ; estado de espera para E/S
OUT 61h,AL ; bajar GATE del contador 2
del 8254
MOV CX,100h ; 256 vueltas
otro_ciclo: PUSH CX
IN AL,61h
XOR AL,2 ; invertir bit 1
JMP SHORT $+2
OUT 61h,AL
MOV CX,300 ; constante de retardo
retardo: LOOP retardo
POP CX
LOOP otro_ciclo
STI
Control del altavoz por el temporizador.
El otro método posible consiste en emplear el contador 2 del temporizador conectado al altavoz; así,
enviando el período del sonido (1.193.180/frecuencia_en_Hz) a dicho contador (programado en modo 3),
éste se encarga de generar el sonido. Esto permite obtener sonidos idénticos en todos los ordenadores.
Existe el pequeño problema de que la duración del sonido ha de ser múltiplo de 1/18,2 segundos si se
desea utilizar el reloj del sistema para determinarla (un bucle de retardo sería, una vez más, dependiente
de la máquina) ya que el contador 2 está ahora ocupado en la producción de sonido y no se puede usar
para temporizar (al menos, no sin hacer malabarismos). Alternativamente, se podría evaluar la velocidad
de la CPU para ajustar las constantes de retardo o aumentar la velocidad de la interrupción periódica.
Para emplear este sistema, primero se prepara el contador 2 para temporizar (poniendo a 1 el bit 0 del
puerto 61h) y luego se conecta su salida al altavoz (poniendo a 1 el bit 1 del puerto 61h). Al final,
conviene borrar ambos bits de nuevo. Ahora no es preciso inhibir las interrupciones para garantizar la
calidad del sonido:
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
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
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.
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.
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.
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.
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
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
Luego de que el controlador leyó todo el bloque del dispositivo a su buffer y de que
corroboró la suma de verificación:
El controlador necesita un buffer interno porque una vez iniciada una transferencia del
disco:
http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO5.htm
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.
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.
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.
Comentarios No adecuados para micros no Intel de Sin bus a 100 Muy moderno, con
nueva generación (no soportan AGP MHz todos los avances
ni bus 100 MHz)
Lo bueno de las placas con chipsets VIA es que siguen en el mercado socket 7, por lo que
tienen soporte para todas las nuevas tecnologías como el AGP o los buses a 100 MHz, además
de que su calidad suele ser intermedia-alta. En las placas con chipsets Intel hay un abanico
muy amplio entre placas muy buenas y otras francamente malas, además de estar ya
desfasadas (ningún chipset Intel para socket 7 soporta AGP, por ejemplo).
El último chipset de VIA para socket 7, el MPV3, ofrece todas las prestaciones del BX de Intel
(excepto soporte para placas duales), configurando lo que se denomina una placa Super 7 (con
AGP y bus a 100 MHz), que con un micro como el nuevo AMD K6-2 no tiene nada que envidiar
a un equipo con Pentium II.
De ALI
Muy buenos chipsets, tienen soluciones tan avanzadas como el chipset para placas Super 7
"Aladdin V", que como el MPV3 de VIA resulta equiparable a todos los efectos al BX de Intel
para placas Pentium II (bus a 100 MHz, AGP...); una fantástica elección para micros como el
AMD K6-2.
Chipsets de ALI para Pentium y Pentium MMX
RAM máxima 1 GB
Caché L2 máxima 1 MB
Comentarios Apropiados para micros no Intel pero no de última Muy moderna, con todos
generación (AMD K6-2) por carecer de bus a 100 los avances
MHz
De SiS
Como los anteriores, sus capacidades son avanzadas, aunque su velocidad sea a veces algo
más reducida que en los de Intel. Resultan recomendables para su uso junto a chips
compatibles Intel como el K6 de AMD o el 6x86MX (M2) de Cyrix-IBM, aunque
desgraciadamente no soportan por ahora el bus a 100 MHz del nuevo K6-2.
Puertos adicionales UltraDMA, USB y SVGA UltraDMA y USB UltraDMA, USB y AGP
integrada
Comentarios Apropiados para micros no Intel (especialmente Cyrix) pero no los de última
generación (AMD K6-2) por carecer de bus a 100 MHz
Chipsets para Pentium II y Celeron
De Intel
A decir verdad, aún sin competencia seria, lo que no es de extrañar teniendo el Pentium II sólo
un añito... y siendo de Intel. Son bastante avanzados, excepto el anticuado 440 FX (que no es
propiamente un chipset para Pentium II, sino más bien para el extinto Pentium Pro) y el barato
EX, basado en el LX pero con casi todas las capacidades reducidas.
Tipos de RAM FPM, EDO FPM, EDO, SDRAM y PC100 FPM, EDO,
SDRAM SDRAM SDRAM
RAM cacheable
máxima
No aplicable (dentro del microprocesador, tamaño fijo)
Caché L2 máxima
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.
Caché L2 máxima
Velocidad bus máx. 100 MHz
Así mismo, una placa debe ser comprada pensando en el futuro. Por ejemplo, si vamos a
comprar una para Pentium II, merece la pena comprar una con un chipset capaz de trabajar a
100 MHz de bus (una Intel BX, Apollo Pro o Aladdin Pro II), con lo que podremos ampliarla en
el futuro a micros a 350 MHz o más, cosa que no podremos hacer si compramos una LX, por
ejemplo.
No se obsesione con el Intel Inside. No es que le tenga una manía especial a Intel, y si la
tuviera, me la aguantaría; se trata de que mucha gente prefiere dejarse llevar por el atractivo de
una marca sin informarse de las características de lo que compra. Por ejemplo, si bien el
chipset BX de Intel para Pentium II es aún el mejor de su categoría, en el campo socket 7 los
mejores desarrollos no son de Intel, que lo ha abandonado a favor del campo Pentium II. Por
ello, comprarse una placa TX ahora sería un error, no porque sea Intel sino porque ese chipset
está anticuado (aunque hace unos meses era probablemente el mejor de su categoría); y lo
mismo pasa con el EX, que es mucho peor que los Apollo Pro o Aladdin Pro II.
Y por último, estudie bien la compra. Puede ser que el chipset admita mucha memoria, pero
que la placa tenga pocos zócalos para instalarla; o que estemos comprando una placa base o
un ordenador de segunda mano, y realmente nos importe más que la memoria sea suficiente y
fácilmente ampliable (EDO mejor que FPM, con zócalos vacíos...) que el hecho de que tenga
un chipset sin AGP o sin AGP ni UltraDMA, cuando puede que no vayamos a usar uno ni otro.
http://www.conozcasuhardware.com/quees/chipset.htm
3.1.1 CPU.
3.1.2 Controlador del Bus.
Controlador del bus
Es una especie de controlador de tráfico. En el PC XT es el chip 8288 y en el
AT es el 82288. El procesador necesita del concurso de este chip para generar
el juego completo de señales del bus de control.
Address Strobe ( AS ). Esta señal indica que hay una dirección válida en el bus de
direcciones.
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
Puertos Entrada/Salida
§1 Sinopsis
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.
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.
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").
http://www.monografias.com/trabajos5/tempori/tempori.shtml#con
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.
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.
• 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
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.
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
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.
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.
http://www.monografias.com/trabajos/acmother/acmother.shtml
Comercio Electrónico:
3. VENTAJAS
4. CATEGORIAS
5. RIESGOS
6. USOS
• 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.
10. EFECTOS
• 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.
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.
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.
11.1 TIPOS
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.
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.
Entre los Anexos tipo, que ayudan a describir el objeto y que siempre deben
figurar, en un contrato informático destacan:
Pruebas de aceptación.
Análisis.
A - POR EL OBJETO
Plazo del ejercicio de la opción de compra, que debe quedar determinado con
claridad en el acuerdo de las partes.
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.
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.
Domicilio:
CIF:
A continuación denominado el USUARIO
Para las siguientes licencias de uso se establece un descuento del 25% sobre
el precio de la primera.
QUINTA. GARANTIA
SEXTA. CONFIDENCIALIDAD
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.
NOVENA. ARBITRAJE.
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.
Por: Por:
Cargo: Cargo:
Firma: Firma:
Fecha:Fecha:
ANEXO CONTRATO "LLAVE EN MANO" DE CESION DE USO DE
PRODUCTOS INFORMATICOS.
ANEXO I
DESCRIPCION
NUMERO DE
PRODUCTOS / IMPORTE HORAS INST. SOP.
LICENCIAS
MODULOS
TOTAL
(IVA no incluido)
Este Anexo forma parte del CONTRATO DE CESION DE USO DE
PRODUCTOS INFORMATICOS Núm. XXX/xcxxxxxx y esta sujeto a los
términos que en el mismo figuran.
CONDICIONES DE PAGO
DOMICILIACION BANCARIA.
BANCO:
SUCURSAL:
DIRECCION:
NÚM. CTA.:
EMPRESA EL USUARIO
Por: Por:
Cargo: Cargo:
Firma: Firma:
• 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:
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").
• 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.
Como puede observarse el punto crítico de este proceso se produce cuando el comprador
envía su número de tarjeta al vendedor a través de una red pública potencialmente insegura
como Internet.El estándar que se utiliza en Internet para asegurar esta transferencia da datos
es el SSL (del Inglés, Secure Sockets Layer).Para la realización de una transacción utilizando
SSL se requiere de dos elementos:
1. Que el vendedor se haya certificado con una organización reconocida por las partes, lo
que supone un procedimiento administrativo y el pago de unas tarifas de alta, así como
la renovación de tal certificación.
2. Que el comprador utilice un visor o navegador ("browser") compatible como SSL.
3. Con el uso del SSL:
4. El comprador tiene garantía de que el vendedor es quien dice ser y que, por tanto, no
está entregando su número de tarjeta a un posible impostor.
5. La información que envía el comprador se cifra, impidiendo el acceso a la misma por
alguien distinto al vendedor.
6. Se garantiza la no-manipulación de los datos entre el comprador y el vendedor.
7. La versión 3 de SSL permite la autenticación del comprador, que debe recibir sus
claves previamente de una autoridad de certificación.
Lo que SSL no garantiza es el aspecto económico de la transacción, de tal manera que sólo
con proporcionar un número de tarjeta válido con saldo suficiente cualquier persona podría
intentar comprar electrónicamente de forma fraudulenta, sobre todo si no existe una entrega
física de los bienes en sí con una autoridad de certificación. Ante esta limitación, en 1995 se
constituyeron dos grupos de trabajo liderados respectivamente por VISA y MasterCard, que
comenzaron a definir dos estándares incompatibles para asegurar las transacciones dentro de
Internet. Afortunadamente, a principios de 1996 debido a la presión del mercado
(consumidores, vendedores, y fabricantes de tecnología) ambos grupos se fusionaron para la
definición del estándar SET (Secure Electronic Transactions) en el que participan además de
VISA y MasterCard, empresas como Microsoft, Netscape, IBM, Terisa, GTE, SAIC, VeriSign y
otras compañías tecnológicas. SET resuelve las siguientes necesidades:
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:
Cybercash
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.
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) Transmisión de Software.
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.
Unidad 4. Microcontroladores.
Qué es un Microcontrolador
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.
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.
PIC16C - MICROCHIP
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.
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.
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:
Los microcontroladores PIC están basados en la arquitectura Harvard que posee buses y
espacios de memoria diferenciados para los datos y las instrucciones. Gracias a ella se puede
acceder de forma simultánea e independiente a la memoria de datos y a la memoria de
instrucciones, por tanto son más rápidos que los microcontroladores basados en la arquitectura
tradicional de Von Neuman.
Por otro lado, esta independencia entre datos e instrucciones permite que cada uno tenga el
tamaño más adecuado. Así, los datos tienen una longitud de 8 bits, mientras que las
instrucciones son de 14 bits (Figura 6-6).
Como se observa en la Figura 6-7 el PIC16F84 consta de un procesador con una ALU y un
Decodificador de Instrucciones, una memoria de programa tipo FLASH de 1K palabras de 14
bits, una memoria de datos SRAM con 68 posiciones de 8 bits. También existe una zona de 64
bytes de EEPROM para datos no volátiles. Finalmente dispone de interrupciones, un
temporizador, perro guardián y dos puertas A y B de entrada y salida de información digital.
http://www.dte.upct.es/docencia/temarios/tecn_electricidad_elect_dig/Tema6.PDF
4.1.1 Terminales.
4.1.2 CPU.
Arquitectura del procesador o UCP.
• Microcontroladores CISC.
• Microcontroladores RISC.
• Microcontroladores SISC.
http://html.rincondelvago.com/adquisicion-de-magnitudes-fisicas-
mediante-microcontrolador.html
2.1. Procesador.
Es el elemento más importante del microcontrolador tanto a nivel hardware como software.
Se encarga de direccionar la memoria de instrucciones, recibir el código OP (opcode) de la
instrucción en curso, su decodificación y la ejecución de la operación aritmética o lógica que
implica la instrucción, así como la búsqueda de los operandos y el almacenamiento del
resultado.
La necesidad de conseguir rendimientos elevados en el procesamiento de las instrucciones ha
desembocado en el empleo generalizado de procesadores de arquitectura Hardvard, frente a
los tradicionales que seguían la arquitectura de Von Neuman. Esta última se caracteriza
porque la CPU se conectaba a una memoria única donde coexistían datos e instrucciones a
través de un sistema de buses. En la arquitectura Harvard son independientes la memoria de
instrucciones y la memoria de datos y cada una dispone de su propio sistema de buses para el
acceso. Esto propicia el paralelismo (Figura 6-5).
El procesador o CPU.
El procesador responde a la arquitectura RISC, que se identifica porque el juego de
instrucciones se reduce a 35, donde la mayoría se ejecutan en un solo ciclo de reloj, excepto
las instrucciones de salto que necesitan dos ciclos.
La ALU (Arithmetic Logic Unit) ubicada dentro del procesador realiza las operaciones lógicas y
aritméticas con dos operandos, uno que recibe desde el registro W (registro de trabajo) y otro
que puede provenir de cualquier registro interno (Figura 6-7).
4.1.3 Espacio de Memoria.
Memoria
En los microcontroladores la memoria de instrucciones y datos está
integrada en el propio chip. Una parte debe ser no volátil, tipo ROM, y
se destina a contener el programa de instrucciones que gobierna la
aplicación. Otra parte de memoria será tipo RAM, volátil, y se destina
a guardar las variables y los datos.
Hay dos peculiaridades que diferencian a los microcontroladores de
los computadores personales:
• No existen sistemas de almacenamiento masivo como disco
duro o disquetes. Como el microcontrolador sólo se destina a
una tarea en la memoria ROM, sólo hay que almacenar un único
programa de trabajo.
• La RAM en estos dispositivos es de poca capacidad pues sólo
debe contener las variables y los cambios de información que
se produzcan en el transcurso del programa. Por otra parte,
como sólo existe un programa activo, no se requiere guarda r
una copia del mismo en la RAM pues se ejecuta directamente
desde la ROM.
Los usuarios de computadores personales están habituados a
manejar Megabytes de memoria, pero, los diseñadores con
microcontroladores trabajan con capacidades de ROM comprendidas
entre 512 bytes y 8 k bytes y de RAM comprendidas entre 20 y 512
bytes.
Según el tipo de memoria ROM que dispongan los microcontroladores,
la aplicación y utilización de los mismos es diferente. Se describen las
cinco versiones de memoria no volátil que se pueden encontrar en los
microcontroladores del mercado.
ROM con máscara
Es una memoria no volátil de sólo lectura cuyo contenido se graba
durante la fabricación del chip. Si tenemos idea de cómo se fabrican
los circuitos integrados, sabremos de donde viene el nombre. Estos se
fabrican en obleas que contienen varias decenas de chips. Estas
obleas se fabrican a partir de procesos fotoquímicos, donde se
impregnan capas de silicio y oxido de silicio, y según convenga, se
erosionan al exponerlos a la luz. Como no todos los puntos han de ser
erosionados, se sitúa entre la luz y la oblea una mascara con
agujeros, de manera que donde deba incidir la luz, esta pasará. Con
varios procesos similares pero más complicados se consigue fabricar
los transistores y diodos micrométricos que componen un chip. Ahora
ya sabes de donde viene la máscara y no te acostarás sin saber una
cosa más. El elevado coste del diseño de la máscara sólo hace
aconsejable el empleo de los microcontroladores con este tipo de
memoria cuando se precisan cantidades superiores a varios miles de
unidades.
OTP
El microcontrolador contiene una memoria no volátil de sólo lectura
programable una sola vez por el usuario.
OTP (One Time Programmable). Es el usuario quien puede escribir el
programa en el chip mediante un sencillo grabador controlado por un
programa desde un PC. La versión OTP es recomendable cuando es
muy corto el ciclo de diseño del producto, o bien, en la construcción
de prototipos y series muy pequeñas. Tanto en este tipo de memoria
como en la EPROM, se suele usar la encriptación mediante fusibles
para proteger el código contenido.
EPROM
Los microcontroladores que disponen de memoria EPROM (Erasable
Programmable Read OnIy Memory) pueden borrarse y grabarse
muchas veces. La grabación se realiza, como en el caso de los OTP,
con un grabador gobernado desde un PC. Si, posteriormente, se
desea borrar el contenido, disponen de una ventana de cristal en su
super_cie por la que se somete a la EPROM a rayos ultravioleta
durante varios minutos. Las cápsulas son de material cerámico y son
más caros que los microcontroladores con memoria OTP que están
hechos con material
plástico.
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.
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
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.
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.
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
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.
Registro de datos
Registros de direcciones
Puntero de programa
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.
Registro de estado
Estos registros son exclusivos del modo supervisor.
EL REGISTRO DE ESTADO (SR)
T S I2 I1 I0 XNZV C
Estructura del registro de estado (SR).
Esta dividido lógicamente en sus dos bytes, el byte alto denominaod BYTE del
SISTEMA, y el byte bajo, REGISTRO de CODIGOS DE CONDICION.
• BYTE del SISTEMA: sólo puede ser modificado desde el modo supervisor,
posee 5 bits significaativos que controlan el funcionamiento del
microprocesador. La función específica de cada bit es:
o T : BIT DE TRAZA, Cuando este bit está a 1, la CPU entra en el modo
de ejecución paso a paso. Después de ejecutarse una instrucción se
genera una excepción, que dará paso a la correspondiente subrutina. Util
para prueba y depuración.
o S: BIT de ESTADO, Cuando este bit está a 1 el microprocesador opera
en modo supervisor, cuando está a 0, en modo usuario. Este bit permite
el paso de modo supervisor a modo usuario.
o I2,I1,I0 : MASCARA DE INTERRUPCION, Estos 3 bits constituyen el
nivel de la máscara de interrupción. Esto quiere decir que, para que una
interrupción sea atendida, debe ser de un nivel superior al indicaado por
estos 3 bits.
• REGISTRO DE CODIGOS DE CONDICION (CCR): Solo son significativos
los 5 bits más bajos. Cada uno de estos bits, llamados "flags", tiene la función de
señalar la ocurrencia de un hecho concreto:
http://www.ii.uam.es/~fjgomez/68000/tutorial/cap1.html
4.2.2 Conjunto de instrucciones.
ADD - Add Binary
ADD
Suma Binaria
Operación
Sintaxis en Ensamblador
1- ADD <ea>,Dn
2- ADD Dn,<ea>
Atributos
Descripción
Codificación Binaria
1 1 0 1 Reg. Datos Modo Operación Dirección Efectiva
ADDI
Suma Inmediata
Operación
Sintaxis en Ensamblador
ADDI #<data>,<ea>
Atributos
Descripción
1. BYTE = 00
1. WORD = 01
1. LONG = 10
ADDQ
Suma Rapida
Operación
Sintaxis en Ensamblador
ADDQ #<data>,<ea>
Atributos
Descripción
Codificación Binaria
Dir. Efectiva
1 1 0 0 Dato 0 Tamaño
Modo Registro
1. BYTE = 00
1. WORD = 01
1. LONG = 10
ADDX
Suma Extendida
Operación
Sintaxis en Ensamblador
ADDX Dy,Dx
ADDX -(Ay),-(Ax)
Atributos
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
1. BYTE = 00
1. WORD = 01
1. LONG = 10
AND
And Lógico
Operación
Sintaxis en Ensamblador
AND <ea>,Dn
AND Dn,<ea>
Atributos
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.
Codificación Binaria
Dir. Efectiva
1 1 0 0 Reg. Datos Modo Opera.
Modo Registro
ANDI
AND Inmediato
Operación
Sintaxis en Ensamblador
ANDI #<data>,<ea>
Atributos
Descripción
Codificación Binaria
1. BYTE = 00
1. WORD = 01
1. LONG = 10
ANDI a CCR
Operacion
Sintaxis en Ensamblador
ANDI #<data>,CCR
Atributos
Tamaño=(Byte)
Descripción
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)
ASL
Operación
Sintaxis en Ensamblador
ASL Dy,Dx
ASL #<dato>,Dx
ASL <direccionamiento indirecto de memoria>
Atributos
Descripción
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
1. BYTE = 00
1. WORD = 01
1. LONG = 10
Bcc
Branch Conditionally
Operation
Assembler Syntax
Bcc <label>
Attributes
Description
Condition Codes
Not affected.
BCHG
Operation
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
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
BRA
Branch Always
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
BSET
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
BSR
Branch to Subroutine
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
CHK
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
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
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
CMPI
Compare Immediate
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
CMPM
Compare Memory
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
DBCC
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
DIVS
Signed Divide
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
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
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
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
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
EXT
Sign Extend
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
JMP - Jump
JMP
Jump
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
JSR
Jump to Subroutine
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
LEA
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
LINK
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
MOVE
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
MOVE from SR
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
MOVE to CCR
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
MOVE to SR
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
MOVE USP
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
MOVEA
Move Adress
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
MOVEM
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
MOVEP
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
MOVEQ
Move Quick
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
MULS
Signed Multiply
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
NBCD
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
NEG - Negate
NEG
Negate
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
NEGX
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
NOP - No Operation
NOP
No Operation
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
NOT
Logical Complement
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
OR - Inclusive OR Logical
OR
Inclusive OR Logical
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
ORI
Inclusive OR Immediate
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
PEA
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
RTE
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
RTR
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
RTS
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
SBCD
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
SCC
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
STOP
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
SUB
Subtract Binary
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
SUBA
Subtract Address
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
SUBI
Subtract Immediate
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
SUBQ
Subtract Quick
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
SUBX
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
SWAP
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
TAS
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
Operation
Assembler Syntax
Attributes
Size=(Byte)
Condition Codes
X N Z V C
- - - - -
N.
Z.
V.
C.
X.
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
Sintaxis de los
Instrucción Tamaño Operación
operandos
EXG Rn, Rm 32 Rn <=> Rm
LEA < ea > , An 32 < ea > => An
LINK An, # < d > 16 - >32 SP-4 => SP ; An => (SP)
SP => An ; SP + d => SP
MOVE < ea >, < ea > 8 , 16 , 32 Origen => Destino
MOVEA < ea >, list 16 , 32 -> 32
MOVEM list , < ea > 16 , 32 Reg de lista => Destino
< ea > , list 16 , 32 -> 32 Origen => Reg de lista
MOVEP Dn , (d16 , An ) 16 , 32 Dn [ 31:24 ] => ( An + d ) ;
Dn [ 23:16 ] => ( An + d + 2 ) ;
Dn [ 15:8 ] => ( An + d + 4 ) ;
Dn [ 7:0 ] => ( An + d + 6 ) ;
(d16 , An ), Dn ( An + d ) => Dn [ 31:24 ] ;
( An + d + 2 ) => Dn [ 23:16 ] ;
( An + d + 4 ) => Dn [ 15:8 ] ;
( An + d + 6 ) => Dn [ 7:0 ] ;
MOVEQ # < data , Dn 8 -> 32 Dato inmediato => Destino
PEA < ea > 32 SP - 4 => SP ; < ea > => ( SP )
An => SP ; ( SP ) => An ; SP + 4
UNLK An 32
=> SP
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).
Sintaxis de los
Instrucción Tamaño Operación
operandos
Dn , < ea > 8 , 16 , 32 Origen + Destino =>
ADD
< ea > , Dn 8 , 16 , 32 Destino
ADDA
< ea > , An 16 , 32
# < data > , < ea > 8 , 16 , 32 Dato inmediato + Destino
ADDI
# < data > , < ea > 8 , 16 , 32 =>
ADDQ
16 , 32 Destino
Dn , Dn 8 , 16 , 32 Origen + Destino + X =>
ADDX
- ( An) , - ( An) 8 , 16 , 32 Destino
CLR < ea > 8 , 16 , 32 0 => Destino
CMP < ea > , Dn 8 , 16 , 32 Destino - Origen
CMPA < ea > , An 16 , 32
CMPI # < data > , < ea > 8 , 16 , 32 Destino -> Dato inmediato
CMPM ( An ) + , ( An ) + 8 , 16 , 32 Destino - Origen
< ea > , Dn 32/ 16 => 16 Destino / Origen =>
DIVS
Destino
DIVU
con / sin signo
Dn 8 => 16 Destino signo ext. =>
EXT
Dn 16 => 32 Destino
< ea > , Dn 16 * 16 => 32 Destino / Origen =>
MULS
Destino
MULU
con / sin signo
NEG < ea > 8 , 16 , 32 0 - Destino => Destino
NEGX < ea > 8 , 16 , 32 0 - Destino - X -> Destino
SUB Dn , < ea > 8 , 16 , 32 Destino - Origen =>
< ea > , Dn 8 , 16 , 32 Destino
SUBA < ea > , An 16 , 32
SUBI # < data > , < ea > 8 , 16 , 32 Destino - Dato inm. =>
SUBQ # < data > , < ea > 8 , 16 , 32 Destino
Dn , Dn 8 , 16 , 32 Destino - Origen - X =>
SUBX
- ( An) , - ( An) 8 , 16 , 32 Destino
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.
Se pueden realizar operaciones con bits mediante las instrucciones: BTST ( testeo de un
bit ). BSET ( testeo y puesta a uno de un bit ), BCLR ( testeo y puesta a cero de un bit )
y BCHG ( testeo y cambio del estado de un bit ). Cuando el operando es un registro el
tamaño asumido es de 32 bits, pero si el operando está en memoria el tamaño se toma
como byte.
Sintaxis de los
Instrucción Tamaño Operación
operandos
BCHG Dn , < ea > 8 , 32 ~ Destino [P] => Z =>
# < data > , < ea > 8 , 32 Destino [P]
BCLR Dn , < ea > 8 , 32 ~ Destino [P] => Z;
# < data > , < ea > 8 , 32 0 => Destino [P]
BSET Dn , < ea > 8 , 32 ~ Destino [P] => Z;
# < data > , < ea > 8 , 32 1 => Destino [P]
BTST Dn , < ea > 8 , 32 ~ Destino [P] => Z ;
# < data > , < ea > 8 , 32
fig. 4-6 - Instrucciones de manipulaación de bits.
Sintaxis de los
Instrucción Tamaño Operación
operandos
Condicionales
Bcc < label > 8 , 16 Si cc cierta, PC + d => PC
Dn , < label > 16 Si cc falsa, Dn - 1 => Dn;
DBcc
si Dn distinto - 1, PC + d => PC
Scc < ea > 8 Si cc cierta 11111111 => Destino
si no, 0 => Destino
Incondicionales
BRA < label > 8, 16 PC + d => PC
BSR < label > 8, 16 SP - 4 => SP;
PC => ( SP );
PC + d => PC
JMP < ea > - < ea > => PC
JSR < ea > - SP - 4 =>SP;
PC => ( SP );
< ea > => PC
NOP - - -
Retornos
RTR - - SP => CCR;
SP + 2 => SP;
( SP ) => PC;
SP + 4 => SP
RTS - - ( SP ) => PC;
SP + 4 => SP
Sintaxis de los
Instrucción Tamaño Operación
operandos
Privilegiadas
ANDI # < data > , SR 16 Dato inmediato ^ SR =>SR
EORI # < data > , SR 16 Dato inmediato SR => SR
MOVE < ea > , SR 16 Origen => SR
MOVE USP, An 32 USP => An
An, USP An => USP
ORI # < data > , SR 16 Dato inmediato SR => SR
RESET - - Activa la linea RESET
RTE - - ( SP ) => SR;
SP + 2 => SP;
( SP ) => PC;
SP + 4 => SP;
STOP # < data > 16 Dato inmediato => SR; Parar
Generación de Traps
CHK < ea >, Dn 16 Si Dn < 0 ó Dn > ( < ea > ),
entonces excepción CHK
TRAP # < data > 16 SSP - 4 => SSP;
PC => ( SSP );
SSP - 2 => SSP;
SR => ( SSP );
Vector trap nº < data > => PC
TRAPV - - Si V es 1, proceso de excepción
Registro de condiciones
ANDI # < data > , CCR 8 Dato inmediato ^ CCR => CCR
EORI # < data > , CCR 8 Dato inmediato CCR => CCR
MOVE SR, < ea > 16 SR => Destino
MOVE < ea > , CCR 16 Origen => CCR
ORI # < data > , CCR 8 Dato inmediato CCR => CCR
Para trabajar con sistemas multiprocesador se dispone de la instrucción TAS que ejecuta
un ciclo de lectura-modificación-escritura indivisible.
Sintaxis de los
Instrucción Tamaño Operación
operandos
TAS < ea > 8 Destino - 0; 1 => Destino
MODOS DE DIRECCIONAMIENTO
Modos de direccionamiento.
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
Codificación:
donde
donde modo=010 indica indirecto por registro de direcciones y 000 indica que es el
registro A0
donde modo=011 indica indirecto por registro de direcciones y 000 indica que es el
registro A0
donde modo=011 indica indirecto por registro de direcciones y 000 indica que es el
registro A0
donde
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.
ADDQ #7,D3
http://www.ii.uam.es/~fjgomez/68000/tutorial/cap2.html
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:
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.
d f f f f f
Las instrucciones siguientes son las tres operaciones lógicas de doble operando :
A continuación siguen las dos instrucciones de rotación de bits a través del CARRY :
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).
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).
La suma se realiza en aritmética binaria pura sin signo. Si hay un acarreo del bit 7, es
decir que el resultado es mayor que 255, el bit C (carry) resulta 1, en caso contrario
resulta 0. Si hay un acarreo del bit 3, es decir que la suma de las dos mitades (nibbles)
menos significativas (bits 0 a 3) resulta mayor que 15, se pone en 1 el bit DC (digit
carry), en caso contrario se pone en 0.
Ejemplos :
1010 0010 1101 0000
+ 0100 1111 C DC Z + 0110 1111 C DC Z
1111 0001 0 1 0 0011 1111 1 0 0
La resta se realiza sumando, en binario puro sin signo, el registro f más el complemento
a dos de W (el complemento a 1, o complemento lógico, más 1)
Ejemplos :
f ⇒ 0100 0100 0010 1000
W⇒ - 0010 1000 C DC Z - 0100 0100 C DC Z
0001 1100 1 0 0 1110 0100 0 1 0
⇓ ⇓
equivalente a :
f⇒ 0100 0100 0010 1000
cmp.2 W ⇒ + 1101 1000 C DC Z + 1011 1100 C DC Z
0001 1100 1 0 0 1110 0100 0 1 0
Las instrucciones que siguen son de simple operando, pero son casos especiales ya que
el destino es siempre el registro seleccionado :
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.
11 10 9 8 7 6 5 4 3 2 1
0
k k k k k k k k
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 :
La instrucción que sigue sirve para cargar una constante de programa en el registro W :
Esta (MOVe Literal W) instrucción no afecta ninguno de los bits de estado del
procesador.
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
Estas instrucciones (Bit Clear File y Bit Set File) no afectan ningún bit de la palabra de
estado del procesador.
Instrucciones de Control
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.).
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.
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
.....................................
.....................................
.....................................
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.
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 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.
Esta instrucción, además, borra el bit PD (power down) y setea el bit TO (time-out) de
la palabra de estado.
http://www.geocities.com/micros_uan/cap21.html
Modos de direccionamiento
Ejemplo :
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.
http://www.geocities.com/micros_uan/cap22.html
Herramientas de desarrollo
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.
• 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.
#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
;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:
<<<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:
Simulación:
2. Crear una nueva ventana donde se incluyan las variables que queremos tener en
cuenta (Window...New Watch Window)
http://www.geocities.com/micros_uan/cap23.html
Importancia 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
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.
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.