MICROPROCESADORES PARTE 3
BUSES, RELOJES Y ARQUITECTURA DEL SISTEMA

Continuamos con la serie de artículos en los que describimos los libros electrónicos de Krismar Computación. En la edición anterior describimos los registros del microprocesador, la lógica de control, las interfaces externas, el bus del procesador de la memoria y bus de datos entre otros temas, en esta tercera parte continuamos con el tema. Si desea saber más, puede visitar nuestro sitio de internet en www.webelectronica.com.ar, donde encontrará abundante información y las formas de acceder a lo que usted necesita.

BUS DE DIRECCIONES

El bus de las direcciones es el conjunto de vías que llevan la información acerca de dónde, en la memoria, se obtendrán los datos que serán transferidos hacia o desde ella. Por este bus circulan direcciones de memoria que indican de qué localidad de memoria se leen o escriben datos que viajan en el bus de datos. La velocidad del bus de direcciones es la misma a la del bus de datos. El ancho del bus de direcciones dá la dirección-habilidad del procesador, que es cuánta memoria puede ser direccionada por el procesador. Un bus con 16 líneas, por ejemplo, puede trabajar directamente con 216 direcciones de memoria; eso es 65,536 (o 64 KB) localidades de memoria posibles. Los diversos microprocesadores usados en varias PCs, por lo regular, cuentan con un bus de direcciones de 20 a 32 bits. El Pentium y el Pentium Pro tienen un bus de direcciones de 32 bits, otros fabricantes de chips han prolongado el alcance de algunos de sus productos a 64 bits.

El tamaño del bus de direcciones no tiene un impacto directo en el rendimiento.

Los procesadores normalmente direccionan más memoria física de la existente, y de hecho normalmente los chipset o algunos factores en la motherboard ponen las restricciones a la cantidad máxima de memoria del sistema. Por ejemplo, un Pentium puede direccionar teóricamente 4GB de memoria RAM, pero la mayoría de las motherboard normales no soportará ni siquiera la cuarta parte.

Tamaño del Bus de direcciones y RAM máxima en diferentes procesadores
En la tabla 1 se muestra el ancho del bus de direcciones y la memoria RAM Máxima para varios microprocesadores.

 
RELOJES DEL SISTEMA
La PC original tenía un reloj del sistema único; un solo reloj (con una frecuencia muy baja como de 8MHz), controlaba la operación del procesador, la memoria (no había ningún caché entonces) y el bus de E/S. Ya que las PCs han evolucionado y diferentes partes han ganado velocidad más que otras, la necesidad de los relojes múltiples ha aumentado. Cuando nos referimos al "reloj del sistema" en forma genérica, normalmente nos referimos a la velocidad en que funciona el bus de la memoria en la motherboard (y no al reloj del procesador).

Los diferente relojes en la PC moderna son generados usando un solo circuito de reloj (en la motherboard), el cual genera la frecuencia "principal" del sistema, y utilizando varios multiplicadores y divisores de reloj son creadas las otras frecuencias o relojes de la PC. Tal es el caso de la frecuencia del procesador, el cual utiliza un multiplicador.

Las frecuencias de estos relojes son las que controlan la operación de todos los circuitos de la PC.

Este tema es tratado con más detalle en el capítulo de Características Eléctricas, en el tema relojes del sistema.

 
MULTIPROCESAMIENTO
El Multiprocesamiento consiste en hacer funcionar un sistema de cómputo con más de un procesador. En teoría se duplica el desempeño, usando dos procesadores en lugar de sólo uno.

Pero en la realidad no es tan simple, aunque el multiprocesamiento puede producir un mejor desempeño bajo ciertas condiciones. Para poder emplear el multiprocesamiento es necesario contar con las siguientes características:

  • Soporte de la Motherboard:
    Una motherboard capaz de manejar múltiples procesadores. Esto significa sockets adicionales o slots para los chips extras, y un chipset capaz de controlar una configuración de múltiples procesadores.

  • Soporte del Procesador:
    Un procesador capaz de ser utilizado en un sistema multiprocesador. No todos cuentan con este soporte, hay versiones que lo tienen y otras que no.

  • Soporte del Sistema Operativo:
    Un sistema operativo que soporta el multiprocesamiento, como WINDOWS NT o uno de los varios sabores de UNIX.

Adicionalmente, el multiprocesamiento es más eficaz cuando es utilizado con aplicaciones diseñadas específicamente para ello. El Multiprocesamiento es gestionado por el sistema operativo, el cual asigna diferentes tareas a ser procesadas por los distintos procesadores. Las aplicaciones diseñadas para utilizarse en multiprocesamiento se diseñan para ser divididas en pequeñas rutinas que pueden ser ejecutadas independientemente. Esto permite al sistema operativo que estas pequeñas rutinas puedan ser ejecutadas simultáneamente en diferentes procesadores, lo que resulta en un aumento en el desempeño global. Si la aplicación no está diseñada de esta manera, entonces no puede tomar las ventajas del multiprocesamiento, a pesar de que el sistema operativo todavía pueda hacer uso del procesador(es) adicional(es) para las multitareas.

El multiprocesamiento puede ser asimétrico o simétrico. Esto se refiere a cómo el sistema operativo divide las tareas entre los procesadores en el sistema.

El multiprocesamiento asimétrico designa algunos procesadores para realizar sólo procesos del sistema operativo, y otros para sólo ejecutar aplicaciones o procesos del usuario.

Éste es un diseño rígido que produce una pérdida de rendimiento, durante las veces en que es necesario ejecutar muchos procesos del sistema y ningún proceso de usuario, o viceversa.

El multiprocesamiento simétrico, a menudo abreviado como SMP, permite tanto a los procesos del sistema operativo como a los de usuario, poder ser ejecutados en cualquier procesador, este diseño es más flexible y por consiguiente conlleva a un aumento en el rendimiento. El multiprocesamiento SMP es el más usado en las motherboards de las PCs. En el multiprocesamiento SMP, múltiples procesadores comparten la memoria RAM y el bus del sistema.

Una desventaja es que conforme se añaden procesadores, el tráfico en el bus de memoria se satura. Al añadir memoria caché a cada procesador se puede reducir algo del tráfico en el bus, pero el bus generalmente se convierte en un cuello de botella al manejarse alrededor de ocho o más procesadores.

Para que un procesador soporte el multiprocesamiento, debe soportar un protocolo de multiprocesamiento que dicta la manera en que los procesadores y el chipset se comunicarán para poder implementar el multiprocesamiento SMP. Los procesadores de Intel como el Pentium y Pentium Pro, usan un protocolo SMP llamado APIC, y los chipsets de Intel que soportan el multiprocesamiento (como los 430HX, 440FX y 450GX/KX) son diseñados para trabajar con estos procesadores.

APIC es un estándar propietario de Intel, y se encuentra patentado para impedir a AMD o a Cyrix su utilización, a pesar de que AMD y Cyrix pueden hacer procesadores compatibles con los de Intel, no pueden hacerlos trabajar en las configuraciones SMP de las motherboards y chipset estándares de Intel. De esta manera Intel tiene el mercado SMP para sí mismo.

AMD y Cyrix crearon su propio estándar SMP, llamado OpenPIC, el cual es excelente excepto por el hecho de que no hay motherboards que lo implementen.

Por lo que hasta este momento, los chips de Intel son la única opción para aquellos que quieren multiprocesamiento.

Además, el Pentium Pro o Pentium II fueron buenas opciones para multiprocesamiento porque cada chip tenia su propio Caché L2 autónomo.

En un sistema con más de un procesador y una caché L2 en la motherboard, los procesadores deben compartir el Caché. Cada nuevo procesador que se agregue dará como resultado una menor cantidad de memoria caché para cada procesador, lo que degrada el rendimiento. Cada Pentium Pro o Pentium II, sin embargo, traen consigo su propio caché L2, evitando este problema y mejorando el rendimiento. Para realizar multiprocesamiento cuádruple (cuatro CPUs) el Pentium Pro era la única opción, a pesar de su antigüedad, ya que era el único CPU para el que se encontraba disponible un chipset que soportaba multiprocesamiento cuádruple. Los chipsets posteriores permitieron cuatro o a más Pentium II en un sistema.

Otro diseño de multiprocesamiento es el procesamiento masivamente paralelo (Massively parallel processing / MPP). Para evitar los cuellos de botella en el bus de la memoria, el MPP no utiliza memoria compartida.

En su lugar, distribuye la memoria RAM entre los procesadores de modo que se semeja a una red (cada procesador con su memoria distribuida asociada es similar a un computador dentro de una red de procesamiento distribuido).

Únicamente cuando un procesador no dispone de la memoria RAM suficiente, utiliza la memoria RAM sobrante de los otros procesadores.

La parte negativa de MPP es que la programación se vuelve difícil, debido a que la memoria se rompe en pequeños espacios separados. Sin la existencia de un espacio de memoria globalmente compartido, correr (y escribir) una aplicación que requiere una gran cantidad de RAM (comparada con la memoria local), puede ser difícil.

La sincronización de datos entre tareas ampliamente distribuidas también se vuelve difícil, particularmente si un mensaje debe pasar por muchas fases hasta alcanzar la memoria del procesador destino.

El Procesamiento paralelo escalable (Scalable Parallel Processing / SPP) es un híbrido de SMP y MPP, que utiliza una memoria jerárquica de dos niveles. La primera capa de memoria consiste de un nodo que es esencialmente un sistema SMP completo, con múltiples procesadores y su memoria globalmente compartida. Se construyen sistemas SPP grandes interconectando dos o más nodos a través de la segunda capa de memoria, de modo que esta capa aparece lógicamente, ante los nodos, como una memoria global compartida.

 
ARQUITECTURA INTERNA DEL MICROPROCESADOR
La arquitectura de un procesador describe sus estructuras internas y cómo funcionan. Éstas son estructuras lógicas; todos los procesadores son hechos de material semiconductor, y es el cómo este material es estructurado lo que determina cómo trabajará el procesador. Esto es similar al software: todo software simplemente es una cadena larga de unos y ceros, pero es el cómo se diseña y ponen estos bits lo que determinan si el software es bueno o no.

Los procesadores son de alguna manera “cajas negras”. Todos realizan la misma función básica (viéndolo desde el exterior): procesan las instrucciones.

De hecho, las instrucciones que soportan, por lo menos en el mundo de las PCs, no han cambiado mucho en los últimos años. Pero en el interior de los procesadores, la forma en que éstos ejecutan las instrucciones se vuelve cada vez más complicada y poderosa. Además de mejorar el rendimiento por medio de la "fuerza bruta" (aumentando las velocidades de reloj) los fabricantes de procesadores han encontrado maneras innovadoras de aumentar más el rendimiento de cada ciclo del reloj. Por ejemplo, el Intel 486DX-25 tiene dos veces el rendimiento del Intel 386DX-25, aunque los dos funcionan a la misma velocidad de reloj. La mejora en el rendimiento del 486 se debe a los avances en la arquitectura interna.

La arquitectura interna tiene un impacto en qué tan rápido, el procesador, puede funcionar. Ya que cada vez es más difícil diseñar circuitos que puedan funcionar en cantidades más pequeñas de tiempo. El crear procesadores que puedan funcionar a velocidades mayores hace necesario no sólo cambiar las características físicas, sino también su diseño lógico interno.

Esta sección discute los diferentes componentes que constituyen la estructura interna del procesador moderno. Como cualquier pieza compleja de un equipo, el procesador se divide internamente en partes funcionales diferentes.

La mayoría de los diseños del microprocesador dividen su circuitería lógica interna en cuatro partes funcionales: los registros internos del procesador, la unidad de entrada-salida “E/S” o BIU (Bus Interface Unit), la unidad de control, y la unidad lógico aritmética (o ALU por sus siglas en inglés, Aritmetic Logic Unit). A los registros internos, al ALU y a la unidad de control en común se les llama unidad central de proceso (o CPU por sus siglas en inglés, Central Processing Unit), aunque a menudo el término CPU se utiliza como sinónimo para el microprocesador entero. Otro sinónimo para el CPU es Unidad de Ejecución, que por lo regular se utiliza dentro de los diagramas de bloques de los procesadores.

Algunos fabricantes de chips subdividen estas unidades, les dan otros nombres, o incluyen más de una de cada una en un microprocesador determinado. En cualquier caso, las funciones de estas cuatro unidades son una parte inherente de cualquier microprocesador.

Las cuatro partes del microprocesador interaccionan juntas. En todos, pero principalmente en diseños simples de microprocesadores, la BIU está bajo el control de la unidad de control, y la operación de la unidad de control es determinada por los resultados de los cálculos de la ALU, la cual toma los datos de los registros internos del procesador. La combinación de las cuatro partes determina la potencia y el desempeño del microprocesador.

Cada pieza del microprocesador también tiene su propio efecto en la velocidad de procesamiento del sistema.

La unidad de control opera el reloj interno del microprocesador, y determina la razón de tiempo a la que el microprocesador opera. La BIU determina la anchura del bus del microprocesador, que influye en la velocidad para que los datos y las instrucciones se puedan mover dentro y fuera del microprocesador, los registros internos determinan cuántos datos puede manejar el microprocesador a la vez, y el ALU es la que realiza todos los cálculos aritméticos y decisiones.

 
REGISTROS
Los registros son áreas del almacenamiento local dentro del procesador, que son usadas para almacenar datos con los cuales está trabajando el procesador en un momento dado de la ejecución de una instrucción. Cada procesador contiene cierto número de éstos, algunos dedicados a tareas específicas y otros disponibles para uso general por los programadores. Los registros son la memoria más rápida disponible en la PC, aún más rápida que el caché L1, ya que éstos son la base de la estructura lógica del procesador.

La mayoría de las operaciones se realizan en los registros; el procesador por ejemplo, no puede realizar directamente una operación aritmética en la memoria principal (RAM). Si se desea sumar 1 a una localidad de memoria, el procesador normalmente hará esto cargando el valor inicial de la memoria en un registro, sumar 1 al registro, y guardando de vuelta el valor modificado a la memoria. Esto sucede muy rápidamente y de forma transparente al programador (claro, si no se está utilizando el lenguaje ensamblador).

El ancho (en bits) de los registros del procesador, determina cuánta información puede manejar a la vez. Esto, a veces, es usado para determinar el tamaño del procesador. Por ejemplo, es común escuchar hablar sobre un procesador de 16 bits o uno de 32 bits. El tamaño del procesador normalmente se refiere al tamaño de los registros internos del CPU. Sin embargo, el término a menudo es mal empleado, y a veces las personas se refieren al tamaño de un procesador basándose en el ancho del bus de datos lo que no es muy correcto.

Entre más registros internos tenga el procesador, existirá mayor flexibilidad para la programación. Sin embargo, aumenta la complejidad del procesador.

Los registros son explicados con más detalle en la parte de Modelo de Programación de este mismo capítulo.

Esto debido a que es más fácil entender cómo es que son utilizados por las demás unidades del procesador, por medio de la explicación de cómo es que se programa al microprocesador.

 
UNIDAD DE INTERFAZ DEL BUS (BIU)
La unidad de interfaz del bus o unidad E/S, es la parte del procesador que se une con el resto de la PC. Debe su nombre al hecho de que realiza los movimientos de datos hacia el bus de datos del procesador, el primer conducto en la transferencia de información hacia y desde el CPU. La BIU es la responsable de responder a todas las señales que van al procesador, y de generar todas las señales que van del procesador a las demás partes del sistema. También sirve de paso a las instrucciones de programa y los datos para que éstos puedan alcanzar los registros de la unidad de control y de la ALU. La BIU sincroniza los niveles de las señales de la circuitería interna del microprocesador con los de los otros componentes dentro de la PC. Los circuitos internos de un microprocesador, por ejemplo, se diseñan para consumir poca electricidad de modo que puedan funcionar más rápidamente y evitar el calentamiento excesivo. Estos circuitos internos delicados no pueden manejar los voltajes más altos necesarios para los componentes externos. Por lo tanto, cada señal que sale del microprocesador pasa a través de un buffer de señal intermedio en la BIU que incrementa su voltaje.

La BIU o Unidad E/S puede ser tan simple como algunos buffer o puede implicar muchas funciones complejas.

En los últimos microprocesadores Intel usados en algunas de las PCs más poderosas, la BIU incluye una memoria caché L1 y un reloj duplicador o triplicador para igualar la alta velocidad de funcionamiento del microprocesador con una memoria externa más lenta.

Los microprocesadores usados en las PCs tienen dos clases de conexiones externas a sus unidades BIU: aquellas conexiones que indican las localidades de memoria “a o desde” las cuales, el microprocesador enviará o recibirá los datos o las instrucciones, y aquellas conexiones que transportan el significado de los datos o instrucciones. Lo primero es llamado el bus de direcciones del microprocesador; el último, el bus de datos.

Además del bus de datos y de direcciones en la BIU, existe el bus de control, el cual se encuentra inmerso en la unidad de control, y sirve para enviar las señales de control dentro del microprocesador, como por ejemplo señales de carga o lectura de registros, corrimientos, escoger la operación a realizar dentro del ALU, etc.

Por lo tanto, podemos decir que un microprocesador se basa en el tamaño de sus buses. El bus de datos determina de qué tamaño es la palabra que se va a utilizar (cuántos bits son procesados al mismo tiempo), mientras que el bus de direcciones es el encargado de definir la cantidad de memoria RAM que puede direccional un microprocesador.

 
Sobre un producto de Krismar Computación
TABLA 1
 
FIGURA 1
 
FIGURA 2
 
FIGURA 3
 
FIGURA 4
 
FIGURA 5
 
FIGURA 6
 
FIGURA 7
 
FIGURA 8
 
FIGURA 9