viernes, 31 de mayo de 2013

Unidad 2. Comunicación interna en la computadora.
2.1   Buses.

BUSES DEL SISTEMA
Funciones que realiza
El bus se puede definir como un conjunto de líneas conductoras de hardware utilizadas para la transmisión de datos entre los componentes de un sistema informático. Un bus es una ruta que conecta diferentes partes del sistema, como el microprocesador, la controladora de unidad de disco, la memoria y los puertos de entrada/salida, para permitir la transmisión de información.
En el bus se encuentran dos pistas separadas, el bus de datos y el bus de direcciones. La CPU escribe la dirección de la posición deseada de la memoria en el bus de direcciones accediendo a la memoria, teniendo cada una de las líneas carácter binario. Es decir solo pueden representar 0 o 1 y de esta manera forman conjuntamente el número de la posición dentro de la memoria (es decir: la dirección)
·         Estructuras de interconexión
Existen dos estructuras de operaciones Entrada/Salida que tienen que ver con los buses, son: el bus único y el bus dedicado.
El bus dedicado trata a la memoria de manera distinta que a los periféricos (utiliza un bus especial) al contrario que el bus único que los considera a ambos como posiciones de memoria. Este bus especial que utiliza el bus dedicado tiene 4 componentes fundamentales:
o    Datos: Intercambio de información entre la CPU y los periféricos.
o    Control: Lleva información referente al estado de los periféricos (petición de interrupciones).
o    Direcciones: Identifica el periférico referido.
o    Sincronización: Temporiza las señales de reloj.
La mayor ventaja del bus único es su simplicidad de estructura que le hace ser más económico, no permite que se realice a la vez transferencia de información entre la memoria y el procesador y entre los periféricos y el procesador.
El bus dedicado es mucho más flexible y permite transferencias simultáneas. Su estructura es más compleja y por tanto sus costes son mayores.

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

En Informática, bus es el conjunto de conductores eléctricos en forma de pistas metálicas impresas sobre la tarjeta madre del computador, por donde circulan las señales que corresponden a los datos binarios del lenguaje máquina con que opera el Microprocesador.
Hay tres clases de buses: Bus de Datos, Bus de Direcciones y Bus de Control. El primero mueve los datos entre los dispositivos del hardware: de Entrada como el Teclado, el Escáner, el Ratón, etc.; de salida como la Impresora, el Monitor o la tarjeta de Sonido; y de Almacenamiento como el Disco Duro, el Diskette o la Memoria-Flash.
Estas transferencias que se dan a través del Bus de Datos son gobernadas por varios dispositivos y métodos, de los cuales el Controlador PCI, "Peripheral Component Interconnect", Interconexión de componentes Periféricos, es uno de los principales. Su trabajo equivale, simplificando mucho el asunto, a una central de semáforos para el tráfico en las calles de una ciudad.
El Bus de Direcciones, por otra parte, está vinculado al bloque de Control de la CPU para tomar y colocar datos en el Sub-sistema de Memoria durante la ejecución de los procesos de cómputo,
El Bus de Control transporta señales de estado de las operaciones efectuadas por el CPU con las demás unidades.
Una tarjeta-madre tipo ATX tiene tantas pistas eléctricas destinadas a buses, como anchos sean los Canales de Buses del Microprocesador de la CPU: 64 para el Bus de datos y 32 para el Bus de Direcciones.
El "ancho de canal" explica la cantidad de bits que pueden ser transferidos simultáneamente. Así, el Bus de datos transfiere 8 bytes a la vez.
Para el Bus de Direcciones, el "ancho de canal" explica así mismo la cantidad de ubicaciones o Direcciones diferentes que el microprocesador puede alcanzar. Esa cantidad de ubicaciones resulta de elevar el 2 a la 32 potencia. "2" porque son dos las señales binarias, los bits 1 y 0; y "32 potencia" porque las 32 pistas del Bus de Direcciones son, en un instante dado, un conjunto de 32 bits.
Así, el Canal de Direcciones del Microprocesador para una PC-ATX puede "direccionar" más de 4 mil millones de combinaciones diferentes para el conjunto de 32 bits de su Bus.
http://es.wikipedia.org/wiki/Bus_de_datos


Concepto y Función
     Es el elemento responsable de establecer una correcta interacción entre los diferentes componentes del ordenador, es por lo tanto, el dispositivo principal de comunicación.
     En un sentido físico, su descripción es: conjunto de líneas de hardware (metálicas o físicas), utilizadas para la transmisión de datos entre los componentes de un sistema informático.
     En cambio, en sentido figurado es: una ruta compartida, que conecta diferentes partes del sistema.

     Componentes y estructura
Un bus está compuesto por conductos (vías), éstas hacen posible la interconexión de los diferentes componentes entre sí, y principalmente con la CPU y la memoria. En estos conductos se destacan dos subcategorías, el bus de datos y el bus de direcciones; entre estos existe una fuerte relación, puesto que para cada instrucción/archivo enviado por uno de los dos buses, por el otro va información sobre esta instrucción/archivo.
 En lo referente a la estructura de interconexión mediante los buses, existen de dos tipo:
· Bus único : considera a la memoria y a los periféricos como posiciones de memoria, y hace un símil de las operaciones E/S con las de escritura/lectura en memoria. Todas estas equivalencias consideradas por este bus, hacen que no permita controladores DMA (Direct Acces Memory ; de acceso directo a memoria).
· Bus dedicado : este en cambio, al considerar la memoria y periféricos como dos componentes diferentes, permite controladores DMA (dedicando un bus especial para él).
     Éste bus especial del bus dedicado, contiene cuatro subcategorías más:
· Bus de datos : transmite información entre la CPU y los periféricos.
· Bus de direcciones : identifica el dispositivo a quién va destinada la información que se transmite por el bus de datos.
· Bus de control o de sistema : organiza y redirige la información hacia el bus pertinente para la información que se tiene que transmitir. Es el bus encargado de hacer el direccionamiento, quién realiza toda la función de direccionar es el controlador, diferente para cada tipo de dispositivo.
     La capacidad operativa del bus depende de: la inteligencia del sistema, la velocidad de éste, y la "anchura" del bus (número de conductos de datos que operan en paralelo)
     Aquí tenemos una tabla de los difer entes procesadores que ha habido hasta ahora y su capacidad de bus:
Procesadores
Bus de direcciones (bits)
Bus de datos (bits)
808680186
20
16
808880188
20
8
80286
24
16
80386 SX
32
16
80386 DX
80486 SX
80486 DX
32
32
PENTIUM PENTIUM II/III/IV
AMD K5/K6/K7
AMD ATHLON/THUNDERBIRD
AMD ATHLON XP/MP
32
64
INTEL ITANIUM
AMD ATHLON64
32/64
64/128
http://www.hardware12v.com/conocimientospc/41.php


Buses actuales.
En conjunción con la Informática, la electrónica innova permanentemente para crear nuevas y mas eficientes rutas de comunicación entre los PC y sus periféricos.  Muchas de estas vías pueden realmente llamarse buses entre tanto que otras solo deben clasificarse como puertos.   A continuación una descripción de las principales tecnologías empezando por las de mayor relevancia..
BUS PCI. Es el bus local estándar en las motherboards actuales.  El nombre abreviado proviene de Peripheral Component Interconnect y fue dado a conocer por Intel en 1993. PCI es un bus local compuesto por líneas físicas que permiten comunicar el Microprocesador con otro componente.  Los puntos de conexión de los componentes son los SLOTS o puertos de expansión que se observan en las motherboards, como bloques de plástico blanco.
Detalles técnicos de PCI. 1. Es un bus de 64 bits (64 líneas de transmisión). Se lo utiliza principalmente como un bus de 32 bits. 2. Trabaja con frecuencias variadas: 33 MHz, 66 Mhz, 100 MHz, 400 Mhz, etc., lo que permite alcanzar un ancho de banda de gran capacidad.  3. 32 lineas son utilizadas para transmitir datos y direcciones en forma multiplexada (multiplexado= utilización de una misma línea para transmitir datos y direcciones). Las demás líneas sirven para interpretar y validar las señales correspondientes a datos y direcciones. 4. A diferencia de su antecesor el bus AT (ISA), PCI utiliza circuitos PCI Bridge para comunicar al Microprocesador con otros componentes, lo que permite que los dispositivos acoplados en el bus PCI puedan trabajar con diferentes tipos de Microprocesadores. 5. El número de dispositivos que pueden conectarse al bus PCI está limitado a 32. No obstante, la norma PCI admite la jerarquización de buses incrementándose el número de dispositivos que pueden conectarse. El software de configuración debe ser capaz de realizar transacciones de configuración en todos los dispositivos PCI que residen más allá del puente PCI/host (bridge). 6. Control de error en la transmisión, mediante el uso de bits de control de paridad (uso de señales de verificación de envio - recepción entre los dispositivos).
BUS AGP. Accelerated Graphics Port.  Se trata de un bus independiente del bus general constituido por un slot específico para tarjetas gráficas.  Es un bus de 32 bits que trabaja a 66 MHz, pero tiene la posibilidad de doblar o cuadruplicar las características básicas, hasta una tasa de transferencia máxima de 1064 Mbits por segundo.   Puede decirse que no es un bus en el sentido estricto de la palabra sino más bien una extensión de la norma PCI, razón por la cual en algunos aspectos es idéntico a aquel. Actualmente es un puerto de uso exclusivo para dispositivos gráficos de alta velocidad. Ver aquí la foto de su ubicación física en una motherboard.
BUS USB. 1996. Universal serial bus. Es un nuevo estándar para comunicaciones serie que resuelve muchos de los inconvenientes de los antiguos puertos COM ( dificultades en la adaptación a un puerto COM libre, conflicto de los vectores de interrupción IRQ, etc.).  Presenta muchas ventajas frente a sistemas tradicionales:  velocidades de trabajo hasta de 480 Mb/s (USB 2.0), incluye alimentación eléctrica para dispositivos con bajo consumo de energía ( alrededor de los 5 voltios), permite conectar hasta 127 dispositivos, todos ellos compartiendo el mismo canal; permite realizar conexión y desconexión en "caliente" (sin apagar el equipo), permite utilizar cables de hasta 5m de longitud para dispositivos de alta velocidad. Actualmente todos los PCs disponen de por lo menos un par de salidas USB y muchos dispositivos, como impresoras, ratones, escáneres, webcams, equipos de fotografía digital, etc. que antes se conectaban a través de puertos COM o LPT lo hacen ahora mediante USB.  Mas detalles en el apartado Puertos.
BUS E-IDE. Enhanced Integrated Drive Electronics. Debe ser considerado mas como una Interface.  Se trata de una tecnología electrónica que basa el control de la comunicación en una placa integrada en el propio dispositivo.  El bus lo constituye un cable plano de 40 u 80 hilos conductores que comunica el conector del dispositivo (disco duro, CD-ROM o grabador de CD) con el conector o puerto IDE de la motherboard.  Las placas base actuales se fabrican con dos puertos: IDE 0 e IDE1.
Teoricamente cada puerto IDE representa un canal.  Cada canal permite la conexión de hasta 2 drives (discos duros o unidades opticas). Detalles de esta conexion se amplian bajo el tema 'Interfaces del Disco duro'. 
BUS SCSI. 1980, 1986. Small Computer System Interface. Es la interface de mayor capacidad, velocidad y estabilidad para conectar dispositivos directamente a una motherboard. En las computadoras desktop, SCSI es una interface pues se fabrica sobre una placa que se inserta en un slot de la motherboard (actualmente en slots PCI). Esta independencia física del microprocesador tiene la gran ventaja de hacer que los dispositivos se direccionen lógicamente en contraposición al direccionamiento físico que utiliza IDE. La consecuencia inmediata es que los dispositivos quedan liberados de las imposiciones que el Bios pudiera imponer pues SCSI se encarga de hacer el trabajo completo de comunicación y configuración. Esta capacidad lo ha hecho el preferido en equipos en los que se requiere estabilidad y alta velocidad de transmisión, como los servidores. 
La ultima versión de SCSI es la Wide Ultra2 SCSI, que usa un bus de 16 bits, un ancho de banda de 80MB/s y trabaja con cables planos de 68 hilos. 

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



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

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

Vesa Local Bus
Al contrario que con el EISA, MCA y PCI, el bus VL no sustituye al bus ISA sino que lo complementa. Un PC con bus VL dispone para ello de un bus ISA y de las correspondientes ranuras (slots) para tarjetas de ampliación. Además, en un PC con bus VL puede haber, sin embargo, una, dos o incluso tres ranuras de expansión, para la colocación de tarjetas concebidas para el bus VL, casi siempre gráficos. Solamente estos slots están conectados con la CPU a través de un bus VL, de tal manera que las otras ranuras permanecen sin ser molestadas y las tarjetas ISA pueden hacer su servicio sin inconvenientes.
El VL es una expansión homogeneizada de bus local, que funciona a 32 bits, pero que puede realizar operaciones a 16 bits.
VESA presentó la primera versión del estándar VL-BUS en agosto de 1992. La aceptación por parte del mercado fue inmediata. Fiel a sus orígenes, el VL-BUS se acerca mucho al diseño del procesador 80486. De hecho presenta las mismas necesidades de señal de dicho chip, exceptuando unas cuantas menos estrictas destinadas a mantener la compatibilidad con los 386.
La especificación VL-Bus como tal, no establece límites, ni superiores ni inferiores, en la velocidad del reloj, pero una mayor cantidad de conectores supone una mayor capacitancia, lo que hace que la fiabilidad disminuya a la par que aumenta la frecuencia. En la práctica, el VL-BUS no puede superar los 66 Mhz. Por este motivo, la especificación VL-BUS original recomienda que los diseñadores no empleen más de tres dispositivos de bus local en sistemas que operan a velocidades superiores a los 33 Mhz. A velocidades de bus superiores, el total disminuye: a 40 Mhz solo se pueden incorporar dos dispositivos; y a 50 Mhz un único dispositivo que ha de integrarse en la placa. En la práctica, la mejor combinación de rendimiento y funciones aparece a 33 Mhz.
Tras la presentación del procesador Pentium a 64 bits, VESA comenzó a trabajar en un nuevo estándar (VL-Bus versión 2.0).
La nueva especificación define un interface de 64 bits pero que mantienen toda compatibilidad con la actual especificación VL-BUS. La nueva especificación 2.0 redefine además la cantidad máxima de ranuras VL-BUYS que se permiten en un sistema sencillo. Ahora consta de hasta tres ranuras a 40 Mhz y dos a 50 Mhz, siempre que el sistema utilice un diseño de baja capacitancia.
En el nombre del bus VL queda de manifiesto que se trata de un bus local. De forma distinta al bus ISA éste se acopla directamente en la CPU. Esto le proporciona por un lado una mejora substancial de la frecuencia de reloj (de la CPU) y hace que dependa de las línea de control de la CPU y del reloj. A estas desventajas hay que añadirle que no en todos los puntos están bien resueltas las especificaciones del comité VESA, hecho que a la larga le llevará a que el éxito del bus VL se vea empañado por ello. En sistemas 486 económicos se podía encontrar a menudo, pero su mejor momento ya ha pasado.
Bus local. Bus entre la CPU, la memoria y dispositivos periféricos que corre a la velocidad de la CPU. En un computador personal, el bus VL y el PCI suministran una transferencia de datos más rápida que el bus ISA tradicional. A partir del 386, cuando las velocidades de la CPU comenzaron a acelerarse enormemente, los computadores personales vienen con dos buses. La CPU tiene acceso a sus chips de memoria a través de una vía de acceso interna de 32 bits (63 bits con el Pentium), conocida como bus local, a la velocidad más alta del reloj de la CPU (25MHz, 33MHz, etc.). Sin embargo, tradicionalmente ha tenido acceso a sus dispositivos periféricos en forma más lenta, en un bus ISA de 16 bits sólo a 8MHz. Incluso en el bus EISA de 32 bits inherentemente más rápido corre en forma lenta para acomodar las tarjetas ISA, que se conectan a éste. Los estándares de bus VL de VESA y de bus local PCI de Intel se crearon para aprovechar las velocidades más altas de la CPU. El PC corre a 33MHz; el bus VL hasta a 40MHz; esperándose más altas velocidades. Las tarjetas base ISA y EISA se construyen ahora con ranuras adicionales para el bus VL o las tarjetas PCI, o ambos.


EL BUS LOCAL PCI

Cuando IBM diseño su primer ordenador, el PC, diseño un bus para la conexión de periféricos, que aunque en aquel entonces era mas que suficiente para los dispositivos existentes, quedo rápidamente obsoleto con la aparición de los nuevos microprocesadores rápidos y de los dispositivos que necesitaban una gran velocidad de transferencia para comunicarse con el procesador del sistema.
Este bus fue denominado ISA, se encontraba disponible en dos versiones, una de 8 bits (que la integraban los primeros PC) y otra de 16 bits (que apareció junto con los primeros AT con procesador 80286). Ambas versiones del bus ISA funcionaban a una velocidad de 8 Mhz. si bien existen ordenadores compatibles en los que la velocidad del bus se puede elevar hasta 10 o 12 Mhz.
Esta característica hizo que en poco tiempo los usuarios poseedores de ordenadores con procesadores 386 a 40 Mhz o 486 a 33 Mhz. se vieran frenados de forma considerable al hacer accesos al bus ISA.
Dejando a parte las soluciones propietarias desarrolladas por algunos fabricantes de ordenadores, el primer bus local que tuvo una plena aceptación por parte del publico en general fue el bus local VESA.
Esta tecnología aprovechaba el bus local del propio procesador para implementar dos o tres ranuras de expansión, mediante los cuales el usuario conectaba las tarjetas que normalmente contenían los dispositivos que podían representar en cuello de botella durante el funcionamiento del ordenador (Tarjeta grafica, y controladora de disco). Sin embargo, esta tecnología tenia como todo ventajas e inconvenientes. La ventaja principal era su bajo coste de implementación. Por otro lado los fabricantes se encontraron con una especificación del bus que era un poco vaga, por lo que rápidamente aparecieron problemas de incompatibilidad entre algunas placas base y determinadas tarjetas de expansión. Además el diseño eléctrico de este bus hacia que solo se pudieran diseñar placas con dos o a lo sumo tres ranuras de expansión VESA.
Para completar este relativamente desolador panorama, el bus VESA era de 32 bits, y al menos en un primer momento no existía una especificación de 64 bits.
Para crear un bus local que fuese aceptado tanto por la industria informática como por los usuarios, una serie de compañías, entre ellas Intel, se unieron en un comité, el cual fue el encargado de crear las especificaciones de lo que hoy en día conocemos como bus PCI.
El bus local PCI es un bus de alto rendimiento de 32 o 64 bits de anchura (casi todas las implementaciones actuales soportan solo la versión de 32 bits) dotado de líneas de datos y direcciones multiplexadas. Este bus esta diseñado como mecanismo de interconexión entre componentes de la placa base, tarjetas de expansión y subsistema de memoria, y el propio procesador.
En un sistema PCI típico, el subsistema formado por el procesador, la memoria cache externa o de segundo nivel y la memoria principal se conectan al bus PCI mediante un bridge o puente PCI. Este puente proporciona un acceso mediante el cual el procesador puede acceder directamente a los dispositivos PCI, ya sea mediante entrada/salida mapeada en la memoria del sistema o utilizando un espacio de direcciones separado para las operaciones de entrada/salida.
La especificación PCI permite la existencia de dispositivos PCI maestros o masteres, los cuales con capaces de acceder a la memoria principal de ordenador sin que sea necesaria la intervención del microprocesador. El bridge puede disponer de algunas otras funciones destinadas a optimizar el rendimiento general del sistema, como por ejemplo buffer de escritura y de arbitro del bus.
Las configuraciones PCI típicas permiten la conexión de hasta cuatro tarjetas de expansión.
En cuanto al tamaño de las tarjetas de expansión, se han definido tres tamaños, tarjetas largas, cortas y cortas de longitud variable. No es necesario que todos los sistemas soporten estos tres tipos de tarjetas.
Los dos tipos de voltajes soportados por el bus PCI (5 y 3'3 voltios) han tenido su influencia en el diseño de las tarjetas de expansión, de forma que se han definido tres tipos de tarjetas: una tarjeta de cinco voltios, que solo se puede conectar a las ranuras PCI de este tipo, una tarjeta "universal" que se puede conectar a ranuras de 5 y 3'3 voltios, y por ultimo otro tipo de tarjeta que solo se puede conectar a las ranuras de 3'3 voltios.
La velocidad estándar de funcionamiento del PCI es de 33 Mhz, por lo que asumiendo un ancho de banda de 32 bits es posible obtener velocidades superiores a los 120 MB/seg.



 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 direcciones.
Bus de direcciones: El bus de Direcciones es un medio de comunicación unidireccional, debido a que los datos fluyen en un único sentido, de la CPU a la memoria u otros dispositivos.
La CPU alimenta niveles lógicos en las líneas de dirección, con lo cual se generan 2n posibles direcciones diferentes. Cada una de estas direcciones corresponde a una localidad de la memoria ó dispositivo.
En el bus de direcciones se coloca la dirección del elemento a accesar y con ayuda del bus de datos movemos la información de un elemento a otro. Ejemplo: Si la CPU quiere leer unos datos de memoria para después enviarlo a la impresora o la pantalla, primero pone en el bus de direcciones la dirección del dato en memoria, lo lee (lo obtiene a través del bus de datos), después pone en el bus de direcciones la otra dirección (la de pantalla o impresora) y escribe (con ayuda del bus de datos). ¿Quién controla todo este proceso......?
http://www.unicrom.com/Cmp_estructura.asp

Bus de direcciones
Es utilizado por el microprocesador para señalar la celda de memoria (o el dispositivo de E/S) con el que se quiere operar. El tipo de operación será de lectura o de escritura y los datos implicados viajarán por el bus de datos.
Por él circula la expresión binaria de la dirección de memoria a la cual el microprocesador quiere acceder. Tiene sentido de flujo unidireccional desde el microprocesador hacia la memoria. Una vez localizados los datos perdidos, su transmisión hacia el microprocesador (o hacia donde sea) se hará a través del bus de datos.
Los dispositivos de E/S intercambian la información con el microprocesador mediante los puertos de E/S. Cada puerto está asociado con un determinado dispositivo y tiene una dirección que lo identifica.
El ancho de este bus también es una medida de la potencia del microprocesador, ya que determina la cantidad de memoria a la que éste puede acceder, es decir, la cantidad de espacio direccionable. El espacio de direcciones es el rango de valores distintos que el microprocesador puede seleccionar. La cantidad máxima de direcciones disponibles será 2 a la n, siendo n el número de líneas del bus de direcciones.
http://html.rincondelvago.com/bus-de-direcciones_dispositivo-dma.html 



El bus de control

     El bus de control es una colección de líneas que transportan un conjunto de señales cuyo propósito es la sincronía de todas las operaciones efectuadas por el CPU con los diferentes subsistemas de un equipo de cómputo, destacan las líneas para escritura (write) y lectura (read) de datos, el reloj del sistema, líneas de interrupción, líneas de estado, etc. El uso de éstas líneas se comprenderá mejor conforme se avance en éste curso. Los procesadores de la familia 80x86 proveen dos espacios diferentes de direccionamiento, uno para la memoria y otro para la E/S, mientras que el direccionamiento de memoria varía según el procesador, las líneas de E/S son siempre de 16 bits, lo que permite direccionar 65,536 localidades diferentes. Algunas líneas de control son las encargadas de decidir qué direcciones son para memoria y cuáles son para E/S.
El Bus de Control es utilizado para sincronizar las actividades y transacciones con los periféricos del sistema.  Algunas de estas señales, como R / W , son señales que la CPU envía para indicar que tipo de operación se espera en ese momento.  Los periféricos también pueden remitir señales de control a la CPU, como son INT, RESET, BUS RQ.   Las señales más importantes en el bus de control son las señales de cronómetro, que generan los intervalos de tiempo durante los cuales se realizan las operaciones.  Este tipo de señales depende directamente del tipo del microprocesador.
Bus de control, que transporta las señales de control y de estado, indicando la
dirección de la transferencia de datos, controlando la temporización de eventos
durante la transferencia, transmitiendo las señales de interrupción, etc. En
definitiva, son las señales para controlar y sincronizar todos los componentes. Las
señales de control parten desde la unidad de control hacia el resto de elementos, y
las de estado parten del resto de los elementos hacia la unidad de control.
Además, se suele distinguir dos tipos de buses dependiendo de las partes del sistema que conectan: el bus que conecta la CPU con la memoria (bus interno o de CPU) y el que conecta la CPU con el resto de elementos (bus de expansión, que es una prolongación del bus interno).
El bus de CPU es interesante en relación con los tipos de memoria que exige, puesto que se dedica a transferir datos entre la CPU y la memoria. Destaca por su velocidad, y existen arquitecturas con velocidades de más de 100 Mhz. Pero la clase realmente interesante de los buses son los buses de expansión.

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


El bus del sistema 

 El bus del sistema conecta a los elementos que forman una computadora Von Neumann, en una máquina Intel 80x86 existen tres buses principales: el bus de datos, el bus de direcciones y el bus de control. Un bus es un conjunto de alambres por los cuales pasan señales eléctricas entre los componentes de un sistema, éstos buses varían de procesador en procesador, sin embargo cada bus transporta información equivalente para todos los procesadores. Un típico componente de un sistema 80x86 utiliza niveles TTL estándar de señal, esto significa que cada alambre en un bus utiliza un nivel de voltaje estándar para representar los niveles lógicos de 1 y 0.
Papel del bus de control: a traves de este bus, la unidad de control activa el MAR el MDR y los demas registros involucrados en los procesos de lectura-escritura. Sincroniza el momento en que se activan AB y DB, esto corresponde a un conjunto de microoperraciones necesarias para producir una lectura o escritura en memoria.

Buses normalizados.
Buses normalizados más comunes
El Chipset marca las características del bus de la CPU
Tipos de buses de expansión
ISA Usado en los primeros PC. Es de ocho bits por que usa ocho líneas para comunicarse con tarjeta de placas. También hay de 16 bits.
Características:
Baja capacidad y amplia difusión.
8 bits 16 bits
NCA Es un ISD extendido de 32 bits. Es compatible con el ISA. No se usa para orden de alto nivel avanzado y más avanzado.
EISD Es un ISD extendido de 32 y compatibles con ISD. No se usaba para ordenes de alto nivel.
Bases locales Obtienen alto rendimiento entre la placa y las ranuras de expansión. Trabaja a 33 Mhz.
TIPOS
VL-BUS Instalado en los 468 de gama alta. No había acceso directo a RDM, y tenía que intervenir o la CPU o un canal DMD y esto tardaba mucho.
PCI Evita el problema anterior creado por Intel.
Características:
- Bus de 32 bit de datos y direcciones.
- Velocidad de 33 Mhz.
- Capacidad de transferir datos de 132 Mb/seg.
- Soporta el bus masterin´ (Bus master RMD)
- Permite realizar casos concurrentes de escritura.
- Reparte de forma inteligente la capacidad. Otorga más capacidad al dispositivo que más lo necesite.
- Permite realizar casos concurrentes de escritura.
- Soporta máximo 3 ó 4 slots por cada bus PCI
- Puede coexistir con buses de otro tipo.
- Preparado para multitud de plataformas. No sólo para PC.
- Incorpora facilidades ( Plug & Play)
- El coste de este tipo de buses es muy bajo.
AG`P Específico para controladores de vídeo. Bus de alto rendimiento de 32 bits y velocidad de 66 Mhz, su capacidad es muy superior.
Buses normalizados de periféricos
SCSI Entándart universal para la conversión de todo tipo de periféricos. Utilizado para dispositivos de almacenamiento.
Características
- Sencillez
- Los dispositivos conectados son específicos para el Scasi, es decir, son de tipo SCASI, esto conlleva a que todos los dispositivos llevan conector de “E” y de “S” para el SCASI.
- Contienen altas prestaciones.
- Alto coste de adquisición
SCSI 1 Ocho bits permite conectar hasta 8 dispositivos. Realmente son sólo siente dispositivos, ya que uno lo ocupa la controladora. La transferencia es de 3,3. Mb/seg. Hasta 5 Mb/seg.
SCSI 2 Se mejora la velocidad. Hay cuatro tipos de SCSI .
Normal 8 bitss 5 Mb/seg
Fast 8 bits 10 Mb/seg
Wide 16 bits 10 Mb/seg
Fast-Wide 16 bits 20 Mb/seg
Ultra SCSI: Salió en 1996, aumenta las prestaciones del SCSI. Compatible con Fast-SCSI 2 y con Fast/Wide-SCSI 2.
Para buses de 8 bits. Alcanza los 20 Mb/seg, y para buswes de 16 bits llega hasta 40 Mb/seg.
SCSI 3: Es otro conjunto de estándares, muy especializado. Por ejemplo, uno de esos conjuntos está orientado a serie en fibra óptica, y alcanza una gran velocidad en este campo. SCSI 3 ya no es compatible con los otros, a favor de la velocidad.
USB: (universal serial Bus). La información se transmite en serie. Su objetivo es superar los inconvenientes de la conexión entre periféricos y ordenador.
IEEE 1394 Tiene los mismos objetívos (wire-fire)



2.2 Direccionamiento.
MODOS DE DIRECCIONAMIENTO Y FORMATOS
Introducción
El campo de operación de una instrucción especifica la operación que se debe realizar. Esta debe ser ejecutada sobre algunos datos almacenados en registros del computador o en palabras de memoria, es decir, sobre los operandos. El modo de direccionamiento especifica la forma de interpretar la información contenida en cada campo de operando para localizar, en base a esta información, el operando.
Los ordenadores utilizan técnicas de direccionamiento con los siguientes fines:
- Dar versatilidad de programación al usuario proporcionando facilidades tales como índices, direccionamientos indirectos, etc., esta versatilidad nos servirá para manejar estructuras de datos complejas como vectores, matrices, etc.
- Reducir el número de bits del campo de operando.

Al usuario que tiene poca experiencia, la variedad de modos de direccionamiento en un ordenador le puede parecer excesivamente complicada. Sin embargo, la disponibilidad de diferentes esquemas de direccionamiento le da al programador experimentado flexibilidad para escribir programas que son más eficientes en cuanto a número de instrucciones y tiempo de ejecución.
Es tal la importancia de los modos de direccionamiento que la potencia de una máquina se mide tanto por su repertorio de instrucciones como por la variedad de modos de direccionamiento que es capaz de admitir.
Definición: Los modos de direccionamiento de un ordenador son las diferentes formas de transformación del campo de operando de la instrucción en la dirección del operando.
En esta definición el término dirección debe interpretarse en su sentido más general de localización del operando, en cualquier lugar, y no en el sentido más estricto de dirección de memoria.
A la dirección obtenida de las transformaciones anteriores la llamaremos dirección efectiva. Esta dirección, en el caso de tratarse de una dirección de memoria, es la que se cargará en el M.A.R. o registro de dirección de memoria.
Llamando x a la información del campo de operando y Aef. a la dirección efectiva, la función f que a partir de x nos da Aef. constituirá el modo de direccionamiento empleado:
Aef. = f(x)
En la evaluación de la función f pueden intervenir otras informaciones además de la información presente en el campo de operando de la instrucción. Estas informaciones pueden residir en registros del procesador o en memoria.
La especificación del modo de direccionamiento puede ir en el código de operación o en el campo de cada operando. Normalmente se codifica en el código de operación si el número de modos es pequeño, en caso contrario se codifica con cada operando, esta última forma de codificación favorece la ortogonalidad.
Modos de direccionamiento más usuales
En los párrafos siguientes se irán describiendo los modos de direccionamiento más frecuentes. La mayoría de estos modos son comunes a muchas máquinas, sin embargo, hay otros que sólo se usan en determinados procesadores.
- Direccionamiento implícito
En este modo, llamado también inherente, el operando se especifica en la misma definición de la instrucción. El modo implícito se usa para hacer referencia a operandos de dos tipos:
- Registros: En el caso de que el código de operación se refiera en particular a un registro.
- Operandos en la pila: En el caso de que la operación se realice siempre sobre el dato situado en la cima de pila.
El primer caso es típico de las organizaciones de un solo acumulador. Generalmente en un ordenador de este tipo todas las instrucciones que actúan sobre el acumulador utilizan direccionamiento implícito.
En el segundo caso están la mayoría de las instrucciones de los ordenadores con organización de pila. Estas operaciones llevan implícitos los operandos que son los elementos de la cima de pila. Esto se debe a que en este tipo de máquinas la mayoría de las operaciones no tienen campos de dirección. También están en este caso las instrucciones PUSH y POP de la mayoría de los ordenadores cuyo operando implícito también es, como en el caso anterior, la cima de pila.
- Direccionamiento inmediato (o literal)
En este modo es el operando el que figura en la instrucción no su dirección. En otras palabras el campo de operando contiene él mismo, sin transformación alguna, la información sobre la que hay que operar. Este modo es útil para inicializar registros o palabras de memoria con un valor constante.
- Direccionamiento directo por registro
Se mencionó anteriormente que el campo de dirección de una instrucción puede especificar una palabra de memoria o un registro M procesador. Cuando se da este último caso se dice que el operando está especificado con direccionamiento directo por registro, en tal caso, el operando reside en uno de los registros del procesador que es seleccionado por un campo de registro de k bits en la instrucción. Un campo de k bits puede especificar uno de 2k registros. Este modo es típico de los ordenadores con organización de registros de uso general.
Las ventajas de este modo son:
- El acceso a los registros es muy rápido, por tanto el direccionamiento por registro debe usarse en las variables que se usen con más frecuencia para evitar accesos a memoria que son más lentos, un ejemplo muy típico del uso de este direccionamiento son los índices de los bucles.
- El número de bits necesarios para especificar un registro es mucho más pequeño que el necesario para especificar una dirección de memoria, esto es debido a que el número de registros del procesador es muy pequeño comparado con el número de direcciones de memoria. Sin embargo, hay que tener en cuenta que en los ordenadores modernos el número de registros ha aumentado considerablemente.
- Direccionamiento directo (o absoluto)
Este es el modo de direccionamiento más sencillo. El campo de dirección no necesita transformación alguna para dar la dirección efectiva, es decir la función que transforma el campo de operando en la dirección efectiva es la identidad. Esto significa que el campo de operando es ya la dirección efectiva.
Este direccionamiento sólo se usa en ordenadores pequeños en que el programa siempre se sitúa en la misma zona de memoria ya que dificulta la relocalización de los programas, es decir que el código de los programas no dependa de su situación en memoria. Ordinariamente este modo sólo se usa para acceder a direcciones del sistema que normalmente se refieren a operaciones de entrada y salida ya que estas direcciones no dependen del programa.
- Direccionamiento indirecto
En este modo el campo de operando de la instrucción indica la localización de la dirección efectiva del operando. El modo de direccionamiento indirecto puede adquirir diferentes formas según cuál sea el lugar donde se encuentre la dirección del operando. En general, todos los modos de direccionamiento tienen su versión indirecta que añade un eslabón más a la cadena del direccionamiento. Por ejemplo existe el direccionamiento indirecto por registro, en el que el registro especificado contiene la dirección del operando, no el operando mismo.
Este direccionamiento es útil cuando se trabaja con punteros ya que los punteros son variables que contienen las direcciones de los operandos, no los operandos mismos.
http://www.mailxmail.com/curso/informatica/arquitecturaordenadores/capitulo19.htm


2.1.1 Modo real.
Esta forma de representación segmentada de las direcciones es en realidad una imagen de como son manejadas internamente en el procesador.
Los procesadores 8088 tienen registros de 16 bits que pueden servir para almacenar los desplazamientos, es decir, cualquier dirección dentro de una zona de 64 KB (que se conoce como segmento).  Disponen además de 4 registros de segmento de 16 bits (CS, SS, DS y ES H3.2), en los que se almacenan las direcciones de inicio del segmento activo en cada momento.  Resulta así, que pueden direccionar un total absoluto de 1MByte, y hasta 64 x 4 = 256 KB sin necesidad de cambiar los registros de segmento.  Esto es lo que se conoce como funcionamiento en modo real (como puede verse, en realidad es una forma de manejar la memoria).
La figura adjunta muestra como se utilizan los registros para señalar las direcciones de inicio de los diversos módulos de un programa cargado en memoria ( E1.3.2) dentro del espacio de memoria direccionable con 20 bits (00000-FFFFFh).




 En la figura 1 se muestra una división de este "Mega" en 16 segmentos cuyos desplazamientos son justamente 0h, 1h, 2h ... Fh.
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.


 Modo protegido.
El modo protegido provee el acceso al sofisticado manejo de memoria y paginado.
Dentro del modo protegido, el software puede realizar un cambio de tarea para entrar en tareas en modo 8086 virtual (V86 mode) (esto es nuevo con este microprocesador). Cada una de estas tareas se comporta como si fuera un 8086 el que lo está ejecutando, lo que permite ejecutar software de 8086 (un programa de aplicación o un sistema operativo). Las tareas en modo 8086 virtual pueden aislarse entre sí y del sistema operativo (que debe utilizar instrucciones del 80386), mediante el uso del paginado y el mapa de bits de permiso de entrada/salida (I/O Permission Bitmap). Finalmente, para facilitar diseños de hardware de alto rendimiento, la interfaz con el bus del 80386 ofrece pipelining de direcciones, tamaño dinámico del ancho del bus de datos (puede tener 16 ó 32 bits según se desee en un determinado ciclo de bus) y señales de habilitación de bytes por cada byte del bus de datos.
Un 286 en modo protegido no podía volver al modo real salvo con un reset, lo que supuso una seria traba al desarrollo de software que explotase este modo de funcionamiento (no olvidemos que por entonces el estándar de facto en sistemas operativos era MSDOS). Además, seguíamos estando limitados a segmentos de 64k, y con el 386 al caer (siempre que se lanza un procesador nuevo, están los de las siguientes generaciones en diferentes estados de desarrollo) no compensaba el esfuerzo. Debido a la escasa relevancia del modo protegido del 286, nos referiremos genéricamente a modo protegido cuando hablemos de 386+.
Modo protegido y memoria extendida
La especificación EMS de Lotus/Intel/Microsoft, permitía manejar grandes cantidades de datos (ahora no nos parecen tan grandes), pero no resolvía el problema de grandes cantidades de código, ya que el segmento de código no podía manejarse de esta forma.  Esto presentaba problemas no solo para programas grandes, sino para cualquier intento de multiprogramación ( 1.7), cuando varios programas deben coexistir en memoria.
Como siempre, la solución vino de la mano de otro avance tecnológico; en este caso, la aparición del procesador Intel 80286, que en 1982 inició la era del PC AT.  Este micro permite un acceso a memoria que recuerda vagamente la especificación EMS, pero de forma nativa, ya que los mecanismos están incluidos en el procesador.  Como la política de Intel ha sido mantener compatibilidad con los micros anteriores, el 80286 podía trabajar en modo real, imitando el funcionamiento del 8088 , mientras que la nueva forma se denominó modo protegido.

El modo protegido utiliza los
registros de segmento como punteros a unos nuevos registros de dirección de 24 bits denominados tablas de descripción ("Descriptor tables"), que permiten acceder a un máximo de 224 (16 MBytes) de memoria física, de forma que los registros de segmento son selectores que marcan el inicio de una dirección de 24 bits.  La memoria que se hacía accesible mediante este sistema se denominó memoria extendida, para distinguirla de la antigua EMS [3].  La posterior introducción del 80386, con registros de 32 bits, permitió direccionar hasta 232 (4 GBytes) de memoria externa.
Los nuevos micros incluyeron otras mejoras que permitían al Sistema Operativo un funcionamiento más cómodo y seguro de las aplicaciones cuando operaba en modo protegido.  Los mecanismos pertinentes estaban incluidos en el hardware o al menos este proporcionaba recursos al SO para realizarlos cómodamente, aunque desde luego, para sacar provecho de estas mejoras el Sistema debía estar preparado ex profeso.  El DOS no podía utilizarlas, sí en cambio los sistemas más avanzados del momento, como OS/2, Unix o Windows.  Básicamente estas mejoras se referían a dos cuestiones:
·         Manejo de memoria virtual
·         Soporte nativo para multiprogramación


 Modo real virtual.

El 80386 (DX)

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

Fue el primer procesador de 32 bits, el 386DX tiene un bus de datos e instrucciones de 32 bits tanto interno como externo; por lo tanto duplica el ancho del bus con respecto al de su predecesor: el 80286.

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

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

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

Esta modalidad de trabajo fue el principio de funcionamiento de los sistemas operativos de 32 bits que surgieron bastante tiempo después que el primer 386DX: OS/2 a partir de la versión 2.0, Windows a partir de la versión 95 y Windows NT en todas sus aplicaciones.

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

El 386DX puede procesar el doble de datos que el 80286 en la misma cantidad de tiempo, gracias a su juego de comandos mejorados y el ancho del bus de datos.

http://personales.com/peru/lima/ensamblaje/procesador.htm
Desde que el bus de direcciones se expandió a 32 bits, el chip puede direccionar directamente 4.294.967.296 (2 elevado a la 32) localizaciones de memoria, o 4 gigabytes de RAM . Esto hace posible direccionar incluso 64 terabytes de forma virtual, lo que permite otro modo de operación, llamado el modo real virtual. Con este modo de operación, es posible efectuar la multitarea bajo MS- /PC-DOS porque cada aplicación involucrada en el proceso de multitarea recibe una CPU virtual con 1 MB de memoria.


2.3   Temporización.
En máquinas de arquitectura Von Neumann la mayoría de las operaciones son serializadas, esto significa que la computadora ejecuta los comandos en un orden preestablecido. Para asegurarnos de que todas las operaciones ocurren justo en el tiempo adecuado, las máquinas 80x86 utilizan una señal alternante llamada el reloj del sistema.
     En su forma básica, el reloj del sistema maneja toda la sincronización de un sistema de cómputo. El reloj del sistema es una señal eléctrica en el bus de control que alterna entre los valores de cero y uno a una tasa dada. La frecuencia en la cual el reloj del sistema alterna entre cero y uno es llamada frecuencia del reloj de sistema. El timepo que toma para cambiar de cero a uno y luego volver a cero se le llama periodo de reloj, también llamado ciclo de reloj. La frecuencia del reloj es simplemente el número de ciclos de reloj que ocurren en un segundo, en sistemas actuales, éste valor excede los 200 ciclos por segundo, siendo ya común frecuencias del orden de los 366 Mhz. (MegaHertz, que equivale a un millón de ciclos por segundo). Observe que el periodo de reloj es el valor inverso de la frecuencia, por lo tanto, para un sistema de 200 Mhz el periodo es igual a 5 nanosegundos. Para asegurar la sincronización, el CPU inicia una operación ya sea en el flanco ascendente (cuando la señal cambia de cero a uno) ó en el descendente (cuando la señal cambia de uno a cero). Como todas las operaciones de un CPU están sincronizadas en torno a su reloj, un CPU no puede ejecutar operaciones más rápido que la velocidad del reloj.


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


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.


Reset del Sistema
Reset, del inglés reponer o reiniciar.
Se conoce así a la puesta en condiciones  inicialesde un sistema.
Este puede ser: Mecánico, electrónico o de  otrotipo. Normalmente se realiza al conectar el mismo,aunque existe un pulsador, que sirve para realzar  la puesta en condiciones iniciales manualmente.
Los microcontroladores pueden provocar una inicialización por tres causas:
·         Al conectarse la alimentación, mediante el circuito de auto inicialización (power on reset).
·         Al poner a cero el terminal MCLR (negado de Master Clear Reset ) durante el funcionamiento o el estado de reposo del microcontrolador .
·         Al rebasar la capacidad el temporizador del circuito de vigilancia o WDT (watch dog timer.
Perro guardián o “Watchdog”
Consiste en un contador que, cuando llega al máximo, provoca un reset automáticamente en
el sistema. Se debe diseñar el programa de trabajo que controla la tarea de forma que resetee al Perro Guardián de vez en cuando antes de que provoque el reset. Si falla el programa o se
bloquea (si cae en bucle infinito), no se refrescará al Perro guardián y, al completar su temporización, provocará el reset del sistema.


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.
  • 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.
  • Un estado de espera es un tiempo (Tw)
  • adicional de reloj introducido entre T2 y T3
  • para alargar el ciclo del bus.
  • Si se introduce un estado de espera, entonces el
  • tiempo normal de acceso a la memoria (que es de
  • 460 nseg con un reloj de 5 MHz) se alarga por un
  • periodo de reloj (200 nseg) hasta 660 nseg.
Como se genera un estado de espera?
Se agrega un estado ocioso (0 ó Tw) entre T2 y T3 a partir de la señal READY ( que es
la señal de verificación de control de sincronía), extendiendo así la longitud del
ciclo del bus para igualarlo a una tarjeta lenta o parar el bus del sistema hasta que
se sincronice con el ciclo de la tarjeta (este control de sincronía vuelve a recaer sobre la

señal READY).

2.4  Interrupciones de Hardware.
Uso de interrupciones
Un computador debe disponer de los elementos suficientes para que el programador tenga un control total sobre todo lo que ocurre durante la ejecución de su programa. La llegada de una interrupción provoca que la CPU suspenda la ejecución de un programa e inicie la de otro (rutina de servicio de interrupción). Como las interrupciones pueden producirse en cualquier momento, es muy probable que se altere la secuencia de sucesos que el programador había previsto inicialmente. Es por ello que las interrupciones deber controlarse cuidadosamente.
De esta forma, podemos resumir todas las etapas seguidas ante una interrupción en un sistema dotado de vectorización. Estos pasos son los siguientes:
1.- El dispositivo envía la solicitud de interrupción mediante la línea INTR.
2.- El procesador termina la ejecución de la instrucción en curso y analiza la línea de petición de interrupción, INTR. Si esta línea no está activada continuará normalmente con la ejecución de la siguiente instrucción, en caso contrario se pasa a la etapa siguiente.
3.- La CPU reconoce la interrupción, para informar al dispositivo de ello, activa la línea de reconocimiento de interrupción, INTA.
4.- El dispositivo que reciba la señal INTA envía el código de interrupción por el bus de datos.
5.- La CPU calcula la dirección de memoria donde se encuentra la rutina de servicio de interrupción (vector de interrupción).
6.- El estado del procesador, y en particular el contador de programa, se salva en la pila de la misma forma que en una llamada a procedimiento.
7.- La dirección de la rutina de servicio de interrupción se carga en el contador de programa, con lo que se pasa el control a la citada rutina.
8.- La ejecución continúa hasta que el procesador encuentre la instrucción de retorno de interrupción.
9.- Cuando se encuentre la instrucción de retorno de interrupción se restaura el estado del procesador, en especial el contador de programa, y se devuelve el control al programa interrumpido.
Normalmente la primera instrucción de la rutina de servicio tendrá como fin desactivar las interrupciones para impedir el anidamiento, por otra parte, antes de devolver el control al programa interrumpido se volverán a habilitar si es necesario.
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.

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

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

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

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

Cuando el procesador recibe una de estas instrucciones no se genera ningún ciclo de reconocimiento de la instrucción (INTA), y el procesador le asigna un 2 como número de excepción.


2.1  Acceso Directo a memoria.

Acceso Directo a Memoria (DMA)

El acceso directo a memoria se inventó con el propósito de liberar al CPU de la carga de atender a algunos controladores de dispositivos. Para comprender su funcionamiento vale la pena revisar cómo trabaja un controlador sin DMA. Cuando un proceso requiere algunos bloques de un dispositivo, se envia una señal al controlador con la dirección del bloque deseado. El controlador lo recibe a través del 'bus' y el proceso puede estar esperando la respuesta (trabajo síncrono) o puede estar haciendo otra cosa (trabajo asíncrono). El controlador recibe la señal y lee la dirección del bus. Envía a su vez una o varias señales al dispositivo mecánico (si es que lo hay) y espera los datos. Cuando los recibe los escribe en un buffer local y envía una señal al CPU indicándole que los datos están listos. El CPU recibe esta interrupción y comienza a leer byte por byte o palabra por palabra los datos del buffer del controlador (a través del device driver) hasta terminar la operación.
Como se ve, el CPU gasta varios ciclos en leer los datos deseados. El DMA soluciona ese problema de la manera siguiente. Cuando un proceso requiere uno o varios bloques de datos, el CPU envía al controlador la petición junto con el número de bytes deseados y la dirección de en dónde quiere que se almacenen de regreso. El DMA actuará como un 'cpu secundario' [Stal92] en cuanto a que tiene el poder de tomar el control del 'bus' e indicarle al verdadero CPU que espere. Cuando el controlador tiene listos los datos, el DMA 'escucha' si el 'bus' está libre aprovechando esos ciclos para ir leyendo los datos del buffer del controlador e ir escribiéndolos en el área de memoria que el CPU le indicó. Cuando todos los datos fueron escritos, se le envía una interrupción al CPU para que use los datos. El ahorro con el DMA es que el CPU ya no es interrumpido (aunque sí puede ser retardado por el DMA) salvando así el 'cambio de contexto' y además el DMA aprovechará aquellos ciclos en que el 'bus' no fue usado por el CPU.
El hecho de que los controladores necesiten buffers internos se debe a que conforme ellos reciban datos de los dispositivos que controlan, los deben poder almacenar temporalmente, ya que el CPU no está listo en todo momento para leerlos.

SISTEMAS DE VIDEO.
Los Sistemas de Vídeo son dispositivos de salida, permite la presentación de información al
usuario, tanto alfanumérica como gráfica. A grandes rasgos consta de un controlador, adaptador o
tarjeta de vídeo y un monitor. A continuación nos encargaremos de analizar cualitativamente el
funcionamiento de estos elementos.
EL MONITOR.
Representa el soporte en el que se suministra la información visual. Pueden ser de dos tipos, o bien de tubo de rayos catódicos (CRT), o bien de cristal líquido. Las señales generadas por el controlador o adaptador de vídeo son las que se visualizarán por pantalla. El monitor incorpora controles típicos de brillo y contraste.


sistema de discos










No hay comentarios:

Publicar un comentario