-=|=======================[ x-eZine #0 / Art. 003 ]=======================|=- -=|========[ Arquitectura de Computadores (I): Buses del sistema ]========|=- -=|===================[ By Raciel ]====================|=- Arquitectura de Computadores (I): Buses del Sistema ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Introduccion. ~~~~~~~~~~~~~ A alto nivel, un ordenador está formado por una CPU, unos módulos de memoria y unos módulos de Entrada/Salida. Estos componentes, se interconectan de modo que la computadora pueda llevar a cabo su función principal, "la ejecución de programas". Para ello , va a ser necesaria una forma de poder interconectar los distintos componentes del ordenador que es a través de los buses del sistema, tema principal a discutir en este articulo. Un poco de historia. ~~~~~~~~~~~~~~~~~~~~ Como muchos ya sabemos, la arquitectura de un computador se basa en la arquitectura de Von Neumann cuyas tres caracteristicas son las siguientes: * Los datos y las instrucciones se almacenan en una sola memoria de Lectura/Escritura. * Los contenidos de esta memoria se direccionan indicacando su posicion. * La ejecución se produce siguiendo una secuencia de instrucción tras instrucción a no ser que se modifique esta secuencia. Este mecanismo es una clara consecuencia de una modificacion del primer ordenador (el ENIAC) en el que se decide el uso de una memoria para no estar continuamente teniendo que programar todo el Hardware que conllevaba largas horas y en muchos casos incluso días. Con esto se consigue aislar al programador del hardware, teniendo este exclusivamente que mandar unas señales de control que van a pasar a través de unos módulos de Entrada / Salida, de tal forma que un dispositivo de entrada proporcionará los datos y las instrucciones de forma secuencial (a no ser que se produciese un salto), se almacenaran estos datos ( tanto datos como instrucciones ) de forma temporal, en un dispositivo de almacenamiento principal que se va a denominar "memoria". Este intercambio de datos con la memoria va a manejarlo la CPU a través del uso de dos registros internos: * Un registro de direcciones interno (MAR - Memory Address Register) que especifica cual va a ser la dirección de memoria de la siguiente Lectura o Escritura. * Un registros de datos (MBR - Memory Buffer Register) que contiene el dato que se va a escribir en memoria en el caso de tratarse de una escritura o en caso de lectura se va a escribir el dato que se va a leer de memoria. Además de estos dos registros, la CPU también va a necesitar pasar datos a los módulos de entrada/salida, para ello va a contar con dos regis- tros muy parecidos a los dos anteriores que son: * Un registro de direcciones de Entrada/Salida (E/S AR - Address Re- gister) que especifica la dirección de memoria de la siguiente Lectura o escritura. * Un registro de datos de Entrada /Salida (E/S BR - Buffer Register) que va a almacenar el dato tanto para lectura y escritura y va a permitir el intercambio de datos entre la CPU y el módulo de Entrada/Salida. ¿Qué es un Bus? ~~~~~~~~~~~~~~~ Un bus es un camino de comunicación entre dos o más dispositivos. Normalmente, un bus está formado por varios caminos de comunicación de lineas por los que se van a transmitir los datos entre los distintos módulos, dispositivos o componentes del ordenador. Como logicamente se puede pensar, se transmitirán por la linea 0's o 1's y dependiendo del ancho del bus (Núme- ro de líneas del bus) se podrán transmitir más o menos bits simultaneamente por el mismo bus de datos. Estructura de un Bus. ~~~~~~~~~~~~~~~~~~~~~ Un bus del sistema está constituido normalmente por entre 50 o 100 lineas. Estos buses del sistema van a contar con una serie de lineas en las que dependiendo de lo que vayan a transmitir se van a clasificar en tres tipos diferentes: * Líneas de datos. * Líneas de dirección. * Líneas de control. Las líneas d datos proporcionan un camnio para transmitir datos entre los distintos módulos del sistema. El conjunto de estas líneas se denomina "bus de datos" DBUS (data bus) que suele estar formado por 8, 16 o 32 líneas diferentes. Este número de líneas del DBUS se conoce como "anchura" del bus de datos que va a transmitir un número de bits fijado, ej: en caso del uso de 8 lineas de datos podríamos transmitir simultaneamente un byte en un ciclo de reloj. En el caso de que se mandasen instrucciones de 16 bits y se dispu- siese de un ancho de 8 necesitariamos se necesitaría acceder dos veces a memoria por cada ciclo de instrucción. Las líneas de direcciones se utilizan para saber donde tiene que leerse o escribirse el dato situado en el DBUS. Ej. Si la CPU necesita leer un dato, pondrá su dirección en el ABUS, se seleccionará la posición corres- pondiente al dato en la memoria y se volcará el dato al DBUS. Las líneas de control se utilizan para controlar el acceso y el uso de tanto las lineas de datos como las lineas de direcciones. Algunas líneas de control son: - Escritura en Memoria: Señal que indica que se quiere escribir en memoria. - Lectura de memoria: Señal que indica que se quiere leer de memoria. - Escritura de Entrada/Salida. - Lectura de Entrada/Salida. - Transfer ACK: Indica que el dato ha sido aceptado y colocado en el ABUS. - Petición de Bus (Bus Request): Para indicar que cierto módulo necesita un bus determinado (cualquiera de los comentados antes). - Cesión de Bus (Bus Grant): La CPU necesita ceder a un módulo cierto BUS y manda una señal de control. - Petición de Interrucción: Cierto módulo pide que se genere una interrucción especifica. - ACK de la interrucción: Indica que ha sido aceptada la interrucción. - Reloj (Clock): Sirve para sincronizar operaciones. - Inicio (Reset): Pone un módulo en su estado inicial. Jerarquias de Buses. ~~~~~~~~~~~~~~~~~~~~ Debido a que se pueden conectar varios dispositivos a un mismo bus se pueden observar dos consecuencias: * Mayor retardo de propagación y mayor tiempo que necesitan los dis- positivos para comunicarse. * Si se realizan demasiadas peticiones a los diversos dispositivos se produce una congestión. Una posible solución a esto sería aumentar el número de líneas del bus pero no siempre es posible. Para solucionar ambos problemas, se adapta el siguiente método que es el uso de varios buses de forma jerárquica. Los buses que se van a utilizar son los siguientes y desde arriba a abajo va a ser lo que va a constituir la jerar- quías de buses: * Bus local: Conecta el microprocesador a una memoria caché al que pueden conectarse uno o más dispositivos locales. * Bus del sistema: También se va a conectar a la memoria caché y a este se van a conectar todos los módulos de la memoria principal o bien controladores de Entrada/Salida. * Bus de expansión: Para conectar los controladores de Entrada/Salida anteriormente comentados en la actualidad se suele contar con un bus de expansión o varios al que se van a conectar los diferentes periféricos o controladores de Entrada/Salida. (bien una tarjeta SCSI, un modem, un dispositivo al puerto serie.. etcétera). Diseño de Buses ~~~~~~~~~~~~~~~ A la hora de diseñar un bus se van a tomar distintos criterios conforme a la necesidad o el uso que se le quiera dar al bus de datos. Estos criterios van a ser los siguientes: - Tipo de Bus. - Necesidad o método de arbitraje del bus. - Temporización. - Anchura del bus. En cuanto al tipo de bus variará en cuanto a los dos diferentes tipos de lineas de buses que hay: dedicados y multiplexados. * Dedicado: Como su nombre lo indica se refiere a una línea dedicada, es decir, va a estar permanentemente asignada a una función o un componente físico del ordenador. P.Ejemplo una línea dedicada a datos o una línea dedicada a direcciónes. * Multiplexada: También existe la posibilidad de que se use una misma línea para dos funciones diferentes (datos y direcciones a través de una misma línea) asignando un tiempo para cada una de las funciones. Esto se conoce como multiplexado en el tiempo y su principal ventaja es el uso de una misma línea y un ahorro. Necesidad o método de arbitraje del bus: Puede que un módulo de Entrada / Salida necesite escribir o leer directamente en memoria sin enviar el dato al microprocesador. Para ello, hay varias formas de dar el control del Hardware sobre el bus: * Centralizado: El dispositivo hardware (controlador del BUS) es el que se encarga de asignar tiempos sobre el bus a utilizar. * Distribuido: No existe controlador de dispositivo, unicamente lo que se hace es que los módulos van a actuar de forma conjunta para compartir el BUS. Para esto, habrá un módulo maestro (master) sobre el BUS que es el que se encarga de iniciar la transferencia de datos por el BUS con los otros dispositivos que van a ser los esclavos (eslave). Temporización: Puede ser tanto sincrona como asíncrona. En el caso de ser sincrona el bus va a incorporar una línea de reloj en el que se van a transmitir intervalos regulares de 0s o 1s de igual duracción que va a marcar el cambio de 0s a 1s o viceversa dependiendo del tipo que se haya fijado. En caso de tratarse del cambio de 0s a 1s estaremos hablando d flanco de subida o viceversa tratandose de flanco de bajada y a este intervalo se le va a llamar "ciclo de reloj". En caso de tratarse de una temporización asíncrona lo que va a suceder es que el microprocesador va a mandar unas determinadas señales de sincronización (señal conocida como MSYN en caso de sincronización del maestro "master sync") para decir que son válidas las líneas de dirección y control y el módulo de memoria va a responder con una señal SSYN (slave sync "sincronización del esclavo") y va a hacer disponer el dato en la línea para que lo pueda recibir el módulo maestro. Anchura del Bus: Ya como ultimo criterio este, anteriormente comentado, en el que va a ser el número de líneas del bus del sistema y a cuanto mayor ancho mayor número de bits se podrán mandar simultaneamente. Ejemplo de un bus del sistema: el bus PCI ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Actualmente, el BUS PCI es uno de los buses más generalizados debido a su ancho de banda elevado y a su independencia al microprocesador. Las especificaciones del bus PCI son las siguientes: - Permite hasta el uso de 64 líneas de datos. - Velocidad de 66 Mhz. - Velocidad de transferencia de 328 Mb/s - Se ajusta a los dispositivos de Entrada/Salida. Fue presentado en 1992 por Intel para su incorporación en los procesadores 80486, contaba con una velocidad entonces a 20 mhz y funcionaba actualmente a 32 bits, actualmente cuenta con hasta 64 bits y una velocidad de transferencia de 33mhz. Despedida ~~~~~~~~~ Por el resto, no hay nada más que decir, unicamente que espero poder continuar un siguiente articulo en el que trataré el tema de la memoria interna. Antes de despedirme, querría saludar a la gente del grupo de LinUPS por su colaboración y al resto de la gente que ha hecho posible la creación de esta revista. Hasta Pronto ;-) -- [ Raciel / x-eZine ] --