2.1 BUSES
En arquitectura
de computadoras, el bus (o
canal) es un sistema digital que transfiere datos entre los componentes de una computadora o entre computadoras. Está formado por cables o pistas
en un circuito impreso, dispositivos como resistores y condensadores además de circuitos
integrados.
En los primeros
computadores electrónicos, todos los buses eran de tipo paralelo, de manera que
la comunicación entre las partes del computador se hacía por medio de cintas o
muchas pistas en el circuito impreso, en los cuales cada conductor tiene una
función fija y la conexión es sencilla requiriendo únicamente puertos de
entrada y de salida para cada dispositivo.
La tendencia en los
últimos años es hacia uso de buses seriales como el USB, Firewire para
comunicaciones con periféricos reemplazando los buses paralelos,
incluyendo caso como el del microprocesador con el chipset en la placa base. Esto a pesar de que el bus serial
posee una lógica compleja (requiriendo mayor poder de cómputo que el bus
paralelo) a cambio de velocidades y eficacias mayores.
2.1.2 BUS LOCAL
Teniendo en cuenta las mencionadas limitaciones del bus AT y
la infalibilidad de los buses EISA y MCA para asentarse en el mercado, en estos
años se han ideado otros conceptos de bus. Se inició con el llamado Vesa Local
Bus (VL-Bus), que fue concebido y propagado independientemente por el comité
VESA, que se propuso el definir estándares en el ámbito de las tarjetas
gráficas y así por primera vez y realmente tuviera poco que ver con el diseño
del bus del PC. Fueron y son todavía las tarjetas gráficas quienes sufren la
menor velocidad del bus AT. Por eso surgió, en el Comité VESA, la propuesta
para un bus más rápido que fue el VESA Local Bus.
2.1.3 BUS DE DIRECCIONES
Este bus se utiliza para direccionar las zonas de
memoria y los dispositivos (que recordemos son tratados como si de posiciones
de memoria se tratasen), de forma que, al escribir una dirección en el bus,
cierto dispositivo quede activado y sea quien reciba-envíe los datos en el
ciclo de bus así empezado.Es un bus triestado unidireccional, por lo que puede ponerse en alta impedancia e ignorar lo que ocurre en el exterior (al tiempo que no influir en el estado de las líneas), pero solo permite la escritura del bus. Esto último es razonable, puesto que la lectura del bus de direcciones no es de utilidad para el uP, al ser él mismo quien gestiona el direccionamiento.
Este bus se compone de 32 líneas, A31 hasta A0, lo que permite direccionar 2^32 posiciones de memoria: un total de 4Gigabytes.
Contrariamente a los modelos anteriores, A0 es una línea plenamente utilizada, lo que elimina la necesidad de la existencia de /UDS y /LDS.
2.1.4 BUS DE CONTROL
El bus de control gobierna el uso y acceso a las líneas de datos y de direcciones. Como
éstas líneas están compartidas por todos los componentes, tiene que proveerse
de determinados mecanismos que controlen su utilización. Las señales de control
transmiten tanto órdenes como información de temporización entre los módulos.
Mejor dicho, es el que permite que no haya colisión de información en el sistema.
2.1.5
BUSES NORMALIZADOS
SCSI: Esta es la norma original, a partir de la cual se
desarrollaron todas las demás. El ancho de bus es de 8 bits. No permite una
longitud de bus mayor de 6 metros y una velocidad de transferencia teórica de
hasta 5MB/s, aunque en la práctica no se alcanzan velocidades superiores a los
2MB/s a causa de los periféricos conectados.
SCSI-II: Esta
versión no es más que una revisión de la SCSI, por lo que solo le aporta nuevos
comandos de control. La velocidad de transferencia sigue en la misma
línea que le SCSI.
Fast SCSI-II:
Esta si que es una versión nueva, que ofrece velocidades de hasta 10MB/s, en
modo síncrono, siempre de forma teórica.
Wide SCSI:
Nueva versión de la norma SCSI que ofrece un ancho de bus de 16 bits, lo que
dobla (teóricamente) la velocidad de transferencia, puesto que en una mismo
ciclo se transmiten el doble de bytes. Existen adaptadores Wide SCSI - SCSI,
por lo que este tipo de periféricos pueden ser usados en un Amiga.
Diferencial
SCSI:Esta versión SCSI utiliza un sistema de cableado diferencial en sus
líneas, lo que permite extender la longitud del bus hasta 25 metros.
2.2
DIRECCIONAMIENTO
Cuando un proceso de aplicación desea establecer una conexión con
un proceso de aplicación remoto, debe especificar a cuál debe conectarse, ya
sea con transporte con conexión o sin conexión. El método que se emplea es
definir direcciones de transporte en las que los procesos pueden estar a la
escucha de solicitudes de conexión. Se usará el término neutral TSAP (Transport Service Acces
Point, punto de acceso al servicio de transporte). Los puntos terminales análogos de la capa de red se
llaman NSAP(Network
Service Access Point, puntos
de acceso al servicio de red), como por ejemplo las direcciones IP.
Unos de los esquemas que se utilizan
en Unix se conoce comoprotocolo
inicial de conexión. Aquí cada servidor tiene un servidor de procesos
especial que actúa como apoderado (proxy) de los servidores de menor uso
y escucha en un grupo de puertos al mismo tiempo, esperando una solicitud de
conexión TCP. Cuando un usuario comienza por emitir una solicitud CONNECT, especificando la
dirección TSAP (puerto
TCP) del servicio que desea, si no hay ningún servidor esperándolos, consiguen
una conexión al servidor de procesos.
Trás obtener la
solicitud entrante, el servidor de procesos genera el servidor solicitado
permitiéndole heredar la conexión con el usuario existente. El nuevo servidor
entonces hace el trabajo requerido, mientras que el proceso retorna a escuchar
nuevas peticiones
2.2.1
MODO REAL
El modo real (también
llamado modo de dirección real en
los manuales de Intel) es un modo de operación del 80286 y
posteriores CPU compatibles
de la arquitectura x86. El modo real está caracterizado por 20 bits de espacio
de direcciones segmentado (significando que solamente se puede direccionar 1 MB de
memoria), acceso directo del software a las rutinas del BIOS y el
hardware periférico, y no tiene conceptos de protección de memoria o multitarea a nivel de hardware. Todos los CPUs
x86 de las series del 80286 y posteriores empiezan en modo real al encenderse
el computador; los CPU 80186 y anteriores tenían solo un modo operacional, que
era equivalente al modo real en chips posteriores.
La arquitectura 286
introdujo el modo protegido, permitiendo, entre otras
cosas, la protección de la memoria a nivel de hardware. Sin embargo, usar estas
nuevas características requirió instrucciones de software adicionales no necesarias
previamente. Puesto que una especificación de diseño primaria de los
microprocesadores x86 es que sean completamente compatibles hacia atrás con el
software escrito para todos los chips x86 antes de ellos, el chip 286 fue hecho
para iniciarse en ' modo real ' - es decir, en un modo que tenía apagadas las
nuevas características de protección de memoria, de modo que pudieran ejecutar sistemas operativos escritos para microprocesadores más
viejos. Al día de hoy, incluso los más recientes CPU x86 se inician en modo
real al encenderse, y pueden ejecutar el software escrito para cualquier chip
anterior.
Los sistemas operativos DOS (MS-DOS, DR-DOS, etc.) trabajan en modo real. Las primeras versiones de Microsoft Windows, que eran esencialmente
un shell de interface
gráfica de usuario corriendo
sobre el DOS, no eran realmente un sistema operativo por sí mismas, corrían en
modo real, hasta Windows 3.0, que podía ejecutarse tanto en
modo real como en modo protegido. Windows 3.0 podía ejecutarse de hecho en dos
"sabores" de modo protegido - el "modo estándar", que
corría usando modo protegido, y el "modo mejorado 386", que además
usaba direccionamiento de 32 bits y por lo tanto no corría en un 286 (que a
pesar de tener modo protegido, seguía siendo un chip de 16 bits; los registros de 32 bits fueron introducidos en la
serie 80386). Con Windows 3.1 se retiró el
soporte para el modo real, y fue el primer ambiente operativo de uso masivo que
requirió por lo menos un procesador 80286 (no contando con el Windows 2.0 que
no fue un producto masivo). Casi todos los sistemas operativos modernos x86 (Linux, Windows 95 y posteriores, OS/2, etc.) cambian el CPU a modo protegido o a modo largo en
el arranque.
2.2.2
MODO PROTEGIDO
El modo protegido es un modo operacional de los CPU compatibles x86 de la serie 80286 y posteriores.
El modo protegido tiene un número de nuevas características diseñadas para mejorar la multitarea y la estabilidad del sistema, tales como la protección de memoria, y soporte de hardware para memoria virtual como también la conmutación de tarea. A veces es abreviado como p-mode y también llamado Protected Virtual Address Mode (Modo de Dirección Virtual Protegido) en el manual de referencia de programador del iAPX 286 de Intel, (Nota, iAPX 286 es solo otro nombre para el Intel 80286). En el 80386 y procesadores de 32 bits posteriores se agregó un sistema de paginación que es parte del modo protegido.
El modo protegido tiene un número de nuevas características diseñadas para mejorar la multitarea y la estabilidad del sistema, tales como la protección de memoria, y soporte de hardware para memoria virtual como también la conmutación de tarea. A veces es abreviado como p-mode y también llamado Protected Virtual Address Mode (Modo de Dirección Virtual Protegido) en el manual de referencia de programador del iAPX 286 de Intel, (Nota, iAPX 286 es solo otro nombre para el Intel 80286). En el 80386 y procesadores de 32 bits posteriores se agregó un sistema de paginación que es parte del modo protegido.
2.2.3
MODO REAL VIRTUAL
En el microprocesador 80386 y
posteriores, el modo 8086 virtual, también llamado modo real virtual o VM86, permite la ejecución de aplicaciones de modo real que violan las reglas bajo control de un sistema operativo de modo protegido.
El VM86 usaba la forma de
segmentación del modo real, pero usaba la dirección
resultante de 20 bits (realmente
21 bits), tratándola como una dirección lineal, de tal manera que era sujeta a paginación.
Era usado para ejecutar
programas DOS en Microsoft Windows/386, Windows 3.x, Windows 95, Windows 98, Windows Me, y OS/2 2.x y más
adelante, a través de las máquinas DOS virtuales, también en SCO UNIX a
través de Merge,
y en Linux.
Los programas de DOS de
modo protegido, tanto de 16 como de 32 bits, no se ejecutan en el modo 8086
virtual, sino en modo usuario, siempre y cuando fueran compatibles con DPMI. Así que los emuladores arriba mencionados hacen de hecho
más que solo el soporte para el modo 8086 virtual
INTRODUCCION:
El temporizador es un
circuito digital, dispone de dos salidas al igual que un flip flop, una salida
es la inversa de la otra, a diferencia del flip flop quién cuenta con dos
estados estables, el temporizador solamente posee un estado estable, el otro
estado es inestable, permanece en su estado estable, hasta que se activa con un
pulso de entrada, una vez que se activa cambia a su estado inestable y ahí permanece
por un periodo fijo de tiempo tw , este tiempo lo determina una constante de
tiempo RC externa que se conecta al temporizador, después de que transcurre el
tiempo tw , las salidas dos salidas del temporizador regresan a su estado
estable, hasta que se activan otra vez. La finalidad de la temporización es
retardar el paso de una señal desde un nodo del
circuito hasta otro punto, el diseño de este circuito se realiza con un
dispositivo que se conoce con el nombre de “monoestable” ó “temporizador”,
éste elemento electrónico dispone de una entrada “E” y una salida “S”, se
tienen tres temporizadores básicos que se denominan; el primero, temporización
a la activación, el segundo se llama temporización a la desactivación y el
tercero es una combinación de las dos anteriores, temporización a la
“activación y desactivación” simultaneas. Se dispone de dos tipos de
comportamiento en que se manifiestan las salidas de los temporizadores,
"redisparables" y "no redisparables" y su entrada responde
a dos tipos de disparo, "activación" y "desactivación"
2.1.3
RELOJ DE SISTEMA
Reloj del sistema
El reloj de una computadora se utiliza para dos funciones
principales:
1. Para sincronizar las diversas operaciones que realizan
los diferentes subcomponentes del sistema informático.
2. Para saber la hora.
El reloj físicamente es un circuito integrado que emite una
cantidad de pulsos por segundo, de manera constante. Al número de pulsos que
emite el reloj cada segundo se llama Frecuencia del Reloj.
La frecuencia del reloj se mide en Ciclos por Segundo,
también llamados Hertzios, siendo cada ciclo un pulso del reloj. Como la
frecuencia del reloj es de varios millones de pulsos por segundo se expresa
habitualmente en Megaherzios.
El reloj marca la velocidad de proceso de
la computadora generando una señal periódica que es utilizada por todos los
componentes del sistema informático para sincronizar y coordinar las
actividades operativas, evitando el que un componente maneje unos datos
incorrectamente o que la velocidad de transmisión de datos entre dos
componentes sea distinta.
Cuanto mayor sea la frecuencia del reloj mayor será la
velocidad de proceso de la computadora y podrá realizar mayor cantidad de instrucciones elementales
en un segundo.
El rango de frecuencia de los microprocesadores oscila entre
los 4,77 megaherzios del primer PC diseñado por IBM y los 200 megaherzios de
las actuales computadoras basadas en los chips Intel Pentium.
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 80×86 utilizan
una señal alternante llamada el reloj del sistema.
En su forma básica, el reloj del sistema maneja toda la
sincronización de un sistema de cómputo. El reloj del sistema es una señal
eléctrica en el bus de control que
alterna entre los valores de cero y uno a una tasa dada. La frecuencia en la
cual el reloj del sistema alterna entre cero y uno es llamada frecuencia del
reloj de sistema. El tiempo que toma para cambiar de cero a uno y luego volver
a cero se le llama periodo de reloj, también llamado ciclo de reloj. La
frecuencia del reloj es simplemente el número de ciclos de reloj que ocurren en
un segundo, en sistemas actuales, éste valor excede los 200 ciclos por segundo,
siendo ya común frecuencias del orden de los 366 Mhz. (Mega Hertz?, que
equivale a un millón de ciclos por segundo). Observe que el periodo de reloj es
el valor inverso de la frecuencia, por lo tanto, para un sistema de 200 Mhz el
periodo es igual a 5 nanosegundos. Para asegurar la sincronización, el CPU
inicia una operación ya sea en el flanco ascendente (cuando la señal cambia de
cero a uno) ó en el descendente (cuando la señal cambia de uno a cero). Como
todas las operaciones de un CPU están sincronizadas en torno a su reloj, un CPU
no puede ejecutar operaciones más rápido que la velocidad del reloj.
2.3.2
RESET DEL SISTEMA
Se conoce como reset a la puesta en
condiciones iniciales de un sistema. Este puede ser mecánico,
electrónico o de otro tipo. Normalmente se realiza al conectar el mismo,
aunque, habitualmente, existe un mecanismo, normalmente un pulsador, que sirve
para realzar la puesta en condiciones iniciales manualmente.
En el ámbito de códigos
binarios, trata de poner a 0, así como set, poner a 1.
2.3.3
ESTADOS DE ESPERA
Cuando se conectan tarjetas al bus de la PC, un problema
común es igualar la velocidad de los ciclos del bus con la de las tarjetas. Es
común que una tarjeta sea más lenta que el bus. Así, el bus de la PC esta
diseñado para resolver este problema. La señal READY del bus se puede usar para
extender la longitud del ciclo del bus para igualar una tarjeta lenta o parar
el bus del sistema hasta que se sincronice con el ciclo de la tarjeta.
Como se mencionó anteriormente, los ciclos del bus del 8088
normalmente son de cuatro pulsos y se describen por T1 hasta T4. En algunos
ciclos el hardware de la PC, automáticamente inserta un pulso ocioso extra
llamado TW. La señal READY se usa para insertar estados nuevos o adicionales de espera. Debido a
que los diferentes ciclos del bus requieren distintos tiempos, la señal READY
se debe controlar de manera diferente.
Generación de estados de espera en ciclos de bus de memoria
El hardware de la PC no inserta estados de espera en los
ciclos de lectura o escritura a memoria, sino que esto lo hace la tarjeta
usando la señal READY. La figura 22 ilustra las señales de tiempo necesarias
para generar un estado de espera para un ciclo de lectura o escritura a
memoria.
2.4
INTERRUPCIONES DE HARWARE
Interrupción (también conocida como interrupción de hardware o petición de interrupción) es una señal
recibida por el procesador de un ordenador, indicando que debe
"interrumpir" el curso de ejecución actual y pasar a ejecutar código
específico para tratar esta situación.
Una interrupción es una
suspensión temporal de la ejecución de un proceso, para pasar a ejecutar una
subrutina de servicio de interrupción, la cual, por lo general, no forma
parte del programa (generalmente perteneciente al sistema operativo, o al BIOS). Luego de finalizada dicha subrutina, se reanuda la
ejecución del programa.
Las interrupciones surgen
de las necesidades que tienen los dispositivos periféricos de enviar información al procesador
principal de un sistema de computación. La primera técnica que se empleó fue
que el propio procesador se encargara de sondear (polling) los dispositivos cada cierto
tiempo para averiguar si tenía pendiente alguna comunicación para él. Este
método presentaba el inconveniente de ser muy ineficiente, ya que el procesador
constantemente consumía tiempo en realizar todas las instrucciones de sondeo.
El mecanismo de
interrupciones fue la solución que permitió al procesador desentenderse de esta
problemática, y delegar en el dispositivo la responsabilidad de comunicarse con
el procesador cuando lo necesitara. El procesador, en este caso, no sondea a
ningún dispositivo, sino que queda a la espera de que estos le avisen (le
"interrumpan") cuando tengan algo que comunicarle (ya sea un evento,
una transferencia de información, una condición de error, etc.)
2.4.1
ENMASCARABLE
Todos los microprocesadores prevén algún mecanismo para
sincronizar sucesos externos, tales como los fallos de alimentación, peticiones
de servicio de señales exteriores, etc. Un método sencillo es el llamado
“pollin” que consiste en asociar cada posible suceso asíncrono a un indicador
que permite reconocer si el suceso correspondiente necesita ser atendido o no.
El microprocesador comprueba todas los indicadores siguiendo una secuencia
determinada, y da servicio a aquel que lo precisa. Este método es poco
eficiente ya que el microprocesador ha de dedicarse exclusivamente a verificar
el estado de los indicadores y, si el número de posibles sucesos externos es
grande, el tiempo que pasa hasta que los atiende puede ser excesivamente largo.
El método de interrupciones es mucho más eficaz a la hora de
atender peticiones aleatorias. El principio de funcionamiento es el siguiente:
un suceso asíncrono que necesita servicio genera una petición de interrupción;
cuando el microprocesador la recibe suspende momentáneamente el trabajo que
está ejecutando y pasa a realizar la rutina de atención a la interrupción. Una
vez finalizada continúa realizando el programa por
donde lo dejó. Con este método el microprocesador sólo se ocupa de los sucesos
externos cuando se recibe una petición de interrupción, pudiéndose dedicar el
resto del tiempo a realizar otras tareas.
2.4.2
NO ENMASCARABLE
Una interrupción no enmascarable (o NMI) es un tipo especial de interrupción usada en la mayoría de los microordenadores como el IBM PC y
el Apple II.
Una interrupción no
enmascarable causa que la CPU deje lo que
está haciendo, cambie el puntero de instrucción para que apunte a una dirección
particular y continúe ejecutando el código de esa dirección. Se diferencia de
los otros tipos de interrupción en que los programadores no pueden
hacer que la CPU las ignore,
aunque algunos ordenadores pueden por medios externos bloquear esa señal, dando
un efecto similar al resto de las interrupciones.