Transferencia de Datos.
Los Sistemas de BUS
Los buses son el mecanismo más común para la comunicación entre los
dispositivos del computador. Físicamente son conductores por donde viajan señales
eléctricas.
Los buses son casi todos esos caminos que se ven en las tarjetas madre de las
imágenes anteriores.
El bus es un dispositivo en común entre dos o más dispositivos, si dos
dispositivos transmiten al mismo tiempo señales las señales pueden distorsionarse y
consecuentemente perder información. Por dicho motivo existe un arbitraje para
decidir quién hace uso del bus.
Por cada línea se pueden trasmitir señales que representan unos y ceros, en
secuencia, de a una señal por unidad de tiempo. Si se desea por ejemplo transmitir
1 byte, se deberán mandar 8 señales, una detrás de otra, en consecuencia se tardaría
8 unidades de tiempo. Para poder transmitir 1 byte en 1 sola unidad de tiempo
tendríamos que usar 8 líneas al mismo tiempo.
Existen varios tipos de buses que realizan la tarea de interconexión entre las distintas
partes del computador, al bus que comunica al procesador, memoria y E/S se lo
denomina bus del sistema.
a) Bus de datos: Por estas líneas se transfieren los datos, pueden ser de 8, 16, 32 o
más líneas, lo cual nos indica cuantos datos podemos transferir al mismo tiempo, y
es muy influyente en el rendimiento del sistema. Por ejemplo si el bus es de 8 líneas
y las instrucciones son de 16 bits, el sistema va a tener que acceder 2 veces a
memoria para poder leer la instrucción, el doble de tiempo en leer instrucciones
comparando con un bus de datos de 16 líneas.
b) Bus de direcciones: Por estas líneas se envía la dirección a la cual se requiere
hacer referencia para una lectura o escritura, si el bus es de 8 líneas por ejemplo, las
combinaciones posibles para identificar una dirección irían del 00000000 al
11111111, son 256 combinaciones posibles, en consecuencia el ancho del bus de
datos nos indica la cantidad de direcciones de memoria a la que podemos hacer
referencia. Dentro de las direcciones posibles, en general el sistema no usa todas
para hacer referencia a la memoria principal, una parte las usa para hacer referencia
a los puertos de E/S.
c) Bus de control: Estas líneas son utilizadas para controlar el uso del bus de
dirección y del bus de datos. Se transmiten órdenes y señales de temporización. Las
órdenes son muy diversas, las más comunes son:
 Escritura en memoria.
 Lectura de memoria.
 Escritura de E/S.
 Lectura de E/S.
 Transferencia reconocida.
 Petición del bus.
 Sesión del bus.
 Petición de interrupción.
 Interrupción reconocida.
 Señal de reloj.
Todo elemento que esté conectado al bus tiene que saber reconocer si la
dirección que está en el bus de datos le corresponde, tiene que reconocer algunas
órdenes transmitidas por el bus de control, y puede emitir algún tipo de señal por el
bus de control (señal de interrupción, señal de reconocimiento de alguna petición,
etc.).
En general, cuanto más dispositivos conectamos al bus, disminuye el
rendimiento del sistema; las causantes de esto son varias, pero las más importantes
son el tiempo de sincronización que se necesita para coordinar el uso del bus entre
todos los dispositivos, y que el bus tiene una capacidad máxima, la cual puede llegar
a convertirse en un cuello de botella del sistema. Una de las formas de tratar este
problema es implementando jerarquía de buses.
Tipos de buses
Una clasificación que podemos hacer es según la funcionalidad de este, los
podríamos dividir en dedicados o multiplexados.
Un ejemplo común de dedicados serian el bus de datos y el bus de
direcciones, cada uno se utiliza solo para una función específica. Esta situación de
bus de datos y de direcciones dedicados es lo más común, pero podría llegar a
implementarse con un solo bus multiplexado el tiempo. Esto funcionaria a grandes
rasgos de la siguiente forma:
Al comienzo de la transferencia se sitúa en el bus la dirección de donde se
quiere leer o a donde se desea escribir, luego se emite por el bus de datos una señal
indicando que en el bus se encuentra una dirección valida.
A partir de ese momento se dispone de una unidad de tiempo para que los
dispositivos identifiquen si es su dirección, luego de esto se pone en el mismo bus
los datos y se realiza la transferencia en el sentido que lo indique una orden emitida
por el bus de control. La Ventaja de este método es la reducción de la cantidad de
líneas, lo cual ahorra espacio y costos, la desventaja son que para poder implementar
la forma de operar la circuitería en cada módulo tiene que ser más compleja, y que
el rendimiento del sistema será menor por no poder transmitir los datos
simultáneamente, en paralelo (datos y dirección).
Otro tipo de clarificación podría ser según su dedicación física: Podríamos
poner como ejemplo el bus de E/S, el cual se encarga de conectar solo los
dispositivos de E/S, este bus se conecta al bus principal mediante algún adaptador,
la ventaja está en que al ser dedicado solo a E/S, el rendimiento de este va a ser
mejor, ya que solo van a operar con él los módulos de E/S, y no va a haber tanta
competencia por el bus.
Método de arbitraje.
Por la razón de que en un momento dado solo puede usar el bus un solo
dispositivo, debe existir un método para decidir quién hace uso de él. Todos los
métodos que existen en general pueden ser clasificados en 2 grandes grupos:
 Arbitraje centralizado: Una parte del hardware del sistema denominada
controlador del bus se encarga de decidir el uso del bus en cada momento, este
dispositivo puede ser un módulo separado o puede estar incorporado al procesador.
 Arbitraje distribuido: En este esquema no existe un controlador centralizado,
en su lugar, cada dispositivo que hace uso del bus tiene que tener incorporada la
lógica necesaria para poder interactuar con los demás dispositivos y decidir quién
hace uso del bus.
En cualquiera de los dos casos lo que se busca es que se decida quién va a
tener la posesión del bus en un momento dado, procesador, módulo de E/S o
memoria, al cual se lo denomina maestro del bus, el maestro del bus establecerá una
comunicación con otro dispositivo (lectura o escritura) al cual se lo denominara
esclavo.
Temporización:
La temporización clasifica al método utilizado para coordinar los eventos
dentro del bus. Según la temporización usada podemos clasificar los buses en 2
grupos.
Temporizaciónsíncrona:Todos los eventos del bus se rigen a través del reloj
del computador. Una de las líneas del bus transmite continuamente una señal de
reloj, simplemente una secuencia de unos y ceros, la cual puede ser leída por todos
los dispositivos conectados al bus. Al intervalo transcurrido en la emisión de un uno
y un cero se lo llama ciclo de reloj, todos los eventos ocurridos dentro del bus
comienzan el principio del ciclo y puede durar uno más. En este método de
temporización todos van al ritmo del reloj como mostramos en la figura 4.4.
Figura 4.4 Temporización Síncrona
En el diagrama anterior podemos apreciar como seria en forma simplificada
una lectura de datos a través del bus. Tener en cuenta que hay muchísimas más
líneas que no se figuran en el gráfico, por ejemplo la línea del reloj, que sería algo
más constante como la figura 4.5.
Figura 4.5. Señal de Reloj
Las líneas solo pueden tener uno de dos estados, uno o cero. La velocidad en
el ritmo que se alterna de un uno a un cero en la línea del reloj nos da la velocidad
del bus, y como todas las operaciones se van a realizar al ritmo del reloj, al aumentar
la velocidad del ciclo vamos a aumentar la velocidad del sistema.
Con referencia al gráfico de un ciclo de lectura de datos, el maestro (el que
tiene permiso para el uso del bus) pone en el bus de direcciones la dirección de la
cual desea leer su contenido, luego de haber puesto la dirección en las líneas
correspondientes, envía por una línea del bus de control una señal indicando que
desea hacer una lectura, el dispositivo correspondiente a esa dirección reconoce la
dirección, y pone en el bus de datos la información solicitada, tras lo cual, manda
otra señal por una línea del bus de control indicando que se le ha reconocido su
petición (que los datos situados en el bus de datos son válidos, son los datos
solicitados)
Todo con este método de temporización empieza o finaliza rigiéndose de las
señales del reloj, en general la mayoría de los eventos tiene una duración de un ciclo.
Temporización asincrónica:
Los eventos no se rigen por la línea del reloj, en general todo evento es
disparado por otro evento anterior. Así como mostramos en la figura 4.6.
Figura 4.6 Temporización Asíncrona.
El procesador pone en el bus de direcciones la dirección a ser leída y en el bus
de control por la línea correspondiente señal de lectura, luego de un breve tiempo
para que las señales eléctricas se estabilicen, se manda señal por la línea MSYN
(sincronización del maestro) indicando que hay señales validas en el bus de dirección
y de control, el modulo correspondiente reconocerá su dirección, pone el dato
solicitado en el bus de datos y emite una señal SSYN(sincronización del esclavo) por
el bus de control indicando en las señales del bus de datos que la información es
válida.
La temporización síncrona es más fácil de implementar y comprobar, pero es
menos flexible que la asíncrona. Por ejemplo, en el caso de que hubiesen varios
dispositivos conectados al bus, de distintas velocidades, todos tienen que funcionar
a la velocidad del reloj, si hay uno más rápido, este tiene que bajar su velocidad: En
cambio con el asíncrono, cada uno funcionaria a su velocidad, en el mismo bus se
trabajaría a distintas velocidades, cada transferencia se haría con la velocidad óptima
de sus dos partes (maestro-esclavo).
Anchura del bus:
La anchura del bus es simplemente la cantidad de líneas que posee, y está
directamente relacionado con el rendimiento del sistema, cuanto más ancho el bus
de direcciones, mayor va a ser la cantidad de direcciones posibles utilizadas para
direccionar memoria y dispositivos de E/S, y cuanto más ancho el bus de datos,
mayor será la cantidad de bits que se va a poder transmitir en paralelo.
4.4. Tipo de transferencia de datos:
Todos los buses permiten la transferencia de datos, ya sea para escritura
como para lectura. La transferencia de dichos datos se muestra en la figura 4.7.
Figura 4.7. Transferencia de Datos
En el gráfico tenemos ejemplificado una escritura y una lectura, en este caso
el bus esta multiplexado en el tiempo, primero se utiliza para transmitir la dirección
y luego los datos.
Para optimizar el rendimiento existen algunas operaciones combinadas en las
cuales se pasa la dirección una sola vez, por ejemplo "lectura-modificación-
escritura", sería la lectura del dato, se le aplica alguna modificación y luego se escribe
nuevamente. Todo esto es una sola operación, nadie puede acceder al bus en el
medio de la operación, se utiliza para proteger los recursos de memoria compartida
en sistemas con multiprogramación para mantener la integridad de los datos. Otra
instrucción es "lectura después de escritura" que serviría para comprobar el
resultado.
Otra operación muy común es la transferencia por bloque, se pasa al principio
de la operación la dirección inicial y luego se realiza lectura o escritura a las
siguientes direcciones, la cantidad de direcciones siguientes también es un
parámetro que hay que pasar. Dichas operaciones se muestran en la figura 4.8.
Figura 4.8. Bloque de Transferencia de Datos
4.5. El BUS ISA (Industry Standard Architecture)
Desarrollado por IBM en 1981 fue el primer bus de expansión incorporado
en los ordenadores personales. Posee una velocidad de funcionamiento de 4.77 Mhz
y 8 bits (con un ancho de banda máximo de 2 MB/seg). Posteriormente con la
aparición de los ordenadores AT, este bus de expansión de vio ligeramente
modificado, denominándose bus AT-ISA. Las modificaciones consistieron en la
ampliación del conector para obtener 16 bits.
Con el paso de los años, en 1986 el bus AT se modificó con un estándar
complementario y desde entonces se ha denominado bus ISA. Desde hace ya algún
tiempo, el bus ISA ha dejado paso al bus PCI aunque algunas placas base continúan
incluyendo una o dos ranuras ISA.
A partir de las placas base para Pentium II ya no se montaron ranuras de 8
bits aunque esto no supuso ninguna desventaja ya que las tarjetas de 8 bits podían
seguir instalándose en la ranura ISA.

Transferencia de datos (buses)

  • 1.
    Transferencia de Datos. LosSistemas de BUS Los buses son el mecanismo más común para la comunicación entre los dispositivos del computador. Físicamente son conductores por donde viajan señales eléctricas.
  • 3.
    Los buses soncasi todos esos caminos que se ven en las tarjetas madre de las imágenes anteriores. El bus es un dispositivo en común entre dos o más dispositivos, si dos dispositivos transmiten al mismo tiempo señales las señales pueden distorsionarse y consecuentemente perder información. Por dicho motivo existe un arbitraje para decidir quién hace uso del bus. Por cada línea se pueden trasmitir señales que representan unos y ceros, en secuencia, de a una señal por unidad de tiempo. Si se desea por ejemplo transmitir 1 byte, se deberán mandar 8 señales, una detrás de otra, en consecuencia se tardaría 8 unidades de tiempo. Para poder transmitir 1 byte en 1 sola unidad de tiempo tendríamos que usar 8 líneas al mismo tiempo. Existen varios tipos de buses que realizan la tarea de interconexión entre las distintas partes del computador, al bus que comunica al procesador, memoria y E/S se lo denomina bus del sistema. a) Bus de datos: Por estas líneas se transfieren los datos, pueden ser de 8, 16, 32 o más líneas, lo cual nos indica cuantos datos podemos transferir al mismo tiempo, y es muy influyente en el rendimiento del sistema. Por ejemplo si el bus es de 8 líneas y las instrucciones son de 16 bits, el sistema va a tener que acceder 2 veces a memoria para poder leer la instrucción, el doble de tiempo en leer instrucciones comparando con un bus de datos de 16 líneas. b) Bus de direcciones: Por estas líneas se envía la dirección a la cual se requiere hacer referencia para una lectura o escritura, si el bus es de 8 líneas por ejemplo, las combinaciones posibles para identificar una dirección irían del 00000000 al 11111111, son 256 combinaciones posibles, en consecuencia el ancho del bus de datos nos indica la cantidad de direcciones de memoria a la que podemos hacer referencia. Dentro de las direcciones posibles, en general el sistema no usa todas
  • 4.
    para hacer referenciaa la memoria principal, una parte las usa para hacer referencia a los puertos de E/S. c) Bus de control: Estas líneas son utilizadas para controlar el uso del bus de dirección y del bus de datos. Se transmiten órdenes y señales de temporización. Las órdenes son muy diversas, las más comunes son:  Escritura en memoria.  Lectura de memoria.  Escritura de E/S.  Lectura de E/S.  Transferencia reconocida.  Petición del bus.  Sesión del bus.  Petición de interrupción.  Interrupción reconocida.  Señal de reloj. Todo elemento que esté conectado al bus tiene que saber reconocer si la dirección que está en el bus de datos le corresponde, tiene que reconocer algunas órdenes transmitidas por el bus de control, y puede emitir algún tipo de señal por el bus de control (señal de interrupción, señal de reconocimiento de alguna petición, etc.). En general, cuanto más dispositivos conectamos al bus, disminuye el rendimiento del sistema; las causantes de esto son varias, pero las más importantes son el tiempo de sincronización que se necesita para coordinar el uso del bus entre todos los dispositivos, y que el bus tiene una capacidad máxima, la cual puede llegar a convertirse en un cuello de botella del sistema. Una de las formas de tratar este problema es implementando jerarquía de buses.
  • 5.
    Tipos de buses Unaclasificación que podemos hacer es según la funcionalidad de este, los podríamos dividir en dedicados o multiplexados. Un ejemplo común de dedicados serian el bus de datos y el bus de direcciones, cada uno se utiliza solo para una función específica. Esta situación de bus de datos y de direcciones dedicados es lo más común, pero podría llegar a implementarse con un solo bus multiplexado el tiempo. Esto funcionaria a grandes rasgos de la siguiente forma: Al comienzo de la transferencia se sitúa en el bus la dirección de donde se quiere leer o a donde se desea escribir, luego se emite por el bus de datos una señal indicando que en el bus se encuentra una dirección valida. A partir de ese momento se dispone de una unidad de tiempo para que los dispositivos identifiquen si es su dirección, luego de esto se pone en el mismo bus los datos y se realiza la transferencia en el sentido que lo indique una orden emitida por el bus de control. La Ventaja de este método es la reducción de la cantidad de líneas, lo cual ahorra espacio y costos, la desventaja son que para poder implementar la forma de operar la circuitería en cada módulo tiene que ser más compleja, y que el rendimiento del sistema será menor por no poder transmitir los datos simultáneamente, en paralelo (datos y dirección). Otro tipo de clarificación podría ser según su dedicación física: Podríamos poner como ejemplo el bus de E/S, el cual se encarga de conectar solo los dispositivos de E/S, este bus se conecta al bus principal mediante algún adaptador, la ventaja está en que al ser dedicado solo a E/S, el rendimiento de este va a ser mejor, ya que solo van a operar con él los módulos de E/S, y no va a haber tanta competencia por el bus. Método de arbitraje. Por la razón de que en un momento dado solo puede usar el bus un solo dispositivo, debe existir un método para decidir quién hace uso de él. Todos los métodos que existen en general pueden ser clasificados en 2 grandes grupos:  Arbitraje centralizado: Una parte del hardware del sistema denominada controlador del bus se encarga de decidir el uso del bus en cada momento, este dispositivo puede ser un módulo separado o puede estar incorporado al procesador.
  • 6.
     Arbitraje distribuido:En este esquema no existe un controlador centralizado, en su lugar, cada dispositivo que hace uso del bus tiene que tener incorporada la lógica necesaria para poder interactuar con los demás dispositivos y decidir quién hace uso del bus. En cualquiera de los dos casos lo que se busca es que se decida quién va a tener la posesión del bus en un momento dado, procesador, módulo de E/S o memoria, al cual se lo denomina maestro del bus, el maestro del bus establecerá una comunicación con otro dispositivo (lectura o escritura) al cual se lo denominara esclavo. Temporización: La temporización clasifica al método utilizado para coordinar los eventos dentro del bus. Según la temporización usada podemos clasificar los buses en 2 grupos. Temporizaciónsíncrona:Todos los eventos del bus se rigen a través del reloj del computador. Una de las líneas del bus transmite continuamente una señal de reloj, simplemente una secuencia de unos y ceros, la cual puede ser leída por todos los dispositivos conectados al bus. Al intervalo transcurrido en la emisión de un uno y un cero se lo llama ciclo de reloj, todos los eventos ocurridos dentro del bus comienzan el principio del ciclo y puede durar uno más. En este método de temporización todos van al ritmo del reloj como mostramos en la figura 4.4. Figura 4.4 Temporización Síncrona En el diagrama anterior podemos apreciar como seria en forma simplificada una lectura de datos a través del bus. Tener en cuenta que hay muchísimas más
  • 7.
    líneas que nose figuran en el gráfico, por ejemplo la línea del reloj, que sería algo más constante como la figura 4.5. Figura 4.5. Señal de Reloj Las líneas solo pueden tener uno de dos estados, uno o cero. La velocidad en el ritmo que se alterna de un uno a un cero en la línea del reloj nos da la velocidad del bus, y como todas las operaciones se van a realizar al ritmo del reloj, al aumentar la velocidad del ciclo vamos a aumentar la velocidad del sistema. Con referencia al gráfico de un ciclo de lectura de datos, el maestro (el que tiene permiso para el uso del bus) pone en el bus de direcciones la dirección de la cual desea leer su contenido, luego de haber puesto la dirección en las líneas correspondientes, envía por una línea del bus de control una señal indicando que desea hacer una lectura, el dispositivo correspondiente a esa dirección reconoce la dirección, y pone en el bus de datos la información solicitada, tras lo cual, manda otra señal por una línea del bus de control indicando que se le ha reconocido su petición (que los datos situados en el bus de datos son válidos, son los datos solicitados) Todo con este método de temporización empieza o finaliza rigiéndose de las señales del reloj, en general la mayoría de los eventos tiene una duración de un ciclo. Temporización asincrónica: Los eventos no se rigen por la línea del reloj, en general todo evento es disparado por otro evento anterior. Así como mostramos en la figura 4.6.
  • 8.
    Figura 4.6 TemporizaciónAsíncrona. El procesador pone en el bus de direcciones la dirección a ser leída y en el bus de control por la línea correspondiente señal de lectura, luego de un breve tiempo para que las señales eléctricas se estabilicen, se manda señal por la línea MSYN (sincronización del maestro) indicando que hay señales validas en el bus de dirección y de control, el modulo correspondiente reconocerá su dirección, pone el dato solicitado en el bus de datos y emite una señal SSYN(sincronización del esclavo) por el bus de control indicando en las señales del bus de datos que la información es válida. La temporización síncrona es más fácil de implementar y comprobar, pero es menos flexible que la asíncrona. Por ejemplo, en el caso de que hubiesen varios dispositivos conectados al bus, de distintas velocidades, todos tienen que funcionar a la velocidad del reloj, si hay uno más rápido, este tiene que bajar su velocidad: En cambio con el asíncrono, cada uno funcionaria a su velocidad, en el mismo bus se trabajaría a distintas velocidades, cada transferencia se haría con la velocidad óptima de sus dos partes (maestro-esclavo). Anchura del bus: La anchura del bus es simplemente la cantidad de líneas que posee, y está directamente relacionado con el rendimiento del sistema, cuanto más ancho el bus de direcciones, mayor va a ser la cantidad de direcciones posibles utilizadas para direccionar memoria y dispositivos de E/S, y cuanto más ancho el bus de datos, mayor será la cantidad de bits que se va a poder transmitir en paralelo.
  • 9.
    4.4. Tipo detransferencia de datos: Todos los buses permiten la transferencia de datos, ya sea para escritura como para lectura. La transferencia de dichos datos se muestra en la figura 4.7. Figura 4.7. Transferencia de Datos En el gráfico tenemos ejemplificado una escritura y una lectura, en este caso el bus esta multiplexado en el tiempo, primero se utiliza para transmitir la dirección y luego los datos. Para optimizar el rendimiento existen algunas operaciones combinadas en las cuales se pasa la dirección una sola vez, por ejemplo "lectura-modificación- escritura", sería la lectura del dato, se le aplica alguna modificación y luego se escribe nuevamente. Todo esto es una sola operación, nadie puede acceder al bus en el medio de la operación, se utiliza para proteger los recursos de memoria compartida en sistemas con multiprogramación para mantener la integridad de los datos. Otra instrucción es "lectura después de escritura" que serviría para comprobar el resultado. Otra operación muy común es la transferencia por bloque, se pasa al principio de la operación la dirección inicial y luego se realiza lectura o escritura a las siguientes direcciones, la cantidad de direcciones siguientes también es un parámetro que hay que pasar. Dichas operaciones se muestran en la figura 4.8.
  • 10.
    Figura 4.8. Bloquede Transferencia de Datos 4.5. El BUS ISA (Industry Standard Architecture) Desarrollado por IBM en 1981 fue el primer bus de expansión incorporado en los ordenadores personales. Posee una velocidad de funcionamiento de 4.77 Mhz y 8 bits (con un ancho de banda máximo de 2 MB/seg). Posteriormente con la aparición de los ordenadores AT, este bus de expansión de vio ligeramente modificado, denominándose bus AT-ISA. Las modificaciones consistieron en la ampliación del conector para obtener 16 bits. Con el paso de los años, en 1986 el bus AT se modificó con un estándar complementario y desde entonces se ha denominado bus ISA. Desde hace ya algún tiempo, el bus ISA ha dejado paso al bus PCI aunque algunas placas base continúan incluyendo una o dos ranuras ISA. A partir de las placas base para Pentium II ya no se montaron ranuras de 8 bits aunque esto no supuso ninguna desventaja ya que las tarjetas de 8 bits podían seguir instalándose en la ranura ISA.