Página principal del curso de Diseño y Evaluación de Configuraciones

Otros cursos y tutoriales: comercio electrónico, WAP, Webmaster

Página principal del grupo GeNeura

Capítulo 2:

Placa madre



2.1 Introducción


Antes de comenzar con los componentes de un ordenador, habría que detenerse unos instantes en los conceptos fundamentales de la Informática hoy en día. Evidentemente, la informática en los 90 es totalmente diferente de la informática en los 80, como esta a su vez era muy diferente de los 70. Mientras que los 80 fueron la era del ordenador personal, los 90 son la década de las comunicaciones y las redes de ordenadores. Si en los 80 el principio era A un hombre, un ordenador, en los 90 es A cada persona, al menos un ordenador (una de las leyes de Pournelle dice que un ordenador no se debe de compartir, ni siquiera con uno mismo).

Esta conexión entre ordenadores no sería posible si no fuera por la interoperabilidad. Dos o más ordenadores se pueden conectar entre sí si tienen la capacidad lógica de entenderse, aparte de la capacidad física de mandarse electrones. Esta interoperabilidad se debe a un amplio conjunto de estándares (que regulan todo tipo de conexión) a los cuales obedecen prácticamente todos los fabricantes de ordenadores y de software. Cuando se habla de sistemas abiertos se está hablando en realidad de ordenadores que son capaces de conectarse y entenderse con otros ordenadores, sin depender además de un sólo fabricante.

Esta interoperabilidad hace que en un entorno de trabajo típico haya ordenadores con diferentes arquitecturas y sistemas operativos: Macs, máquinas UNIX, PCs y PCs con Windows. Esto ha hecho que el número de plataformas diferentes para el cual está disponible un programa se disperse; esta dispersión hace que un programa determinado sirva para Windows, MS-DOS y el Mac. Los códigos serán diferentes, pero la forma de trabajar con el programa y los ficheros serán iguales, de forma que se puedan compartir ficheros con la red. Esto ha facilitado la creación de una serie de estándares de ficheros, desde gráficos hasta video o sonido.

Dado que es habitual que un programa se comercialice para varios ordenadores diferentes, sería absurdo que hubiera que escribir este programa desde el principio cada vez. Por tanto, esta interoperabilidad se extiende también a las herramientas de desarrollo de programas, como los lenguajes de programación o los de cuarta generación.

De esta forma, prácticamente todos los ordenadores son compatibles entre sí; la compatibilidad no significa ya compatibilidad física (se pueden utilizar los mismos periféricos, aunque en la mayoría de los casos es asi) o compatibilidad lógica, sino compatibilidad desde el punto de vista del usuario o el programador; resulta indiferente cuál sea la arquitectura o sistema operativo subyacente, en la mayoría de los casos se trabajará de la misma forma. Incluso algunas veces se puede ejecutar los mismos programas sin necesidad de recompilación en nuevos ordenadores (por ejemplo, sólo el 15% del sistema operativo del PowerMac está escrito en código nativo del PowerPC; el resto es interpretado por un emulador del 680LC40).

Todos estos factores, junto con la dispersión de los medios de comunicación digitales (como la telefonía gsm) hace que sea tan fácil encontrar un ordenador en el capó de un coche como uno en las rodillas de un entrenador de fútbol. Esto añade otro factor a la informática actual: la ubicuidad.

La placa madre es la parte principal del ordenador. De hecho, es el ordenador; el resto de los componentes del "ordenador" (discos, monitor, por ejemplo), son periféricos.

Por lo tanto, la placa madre es el componente fundamental del ordenador (insisto). Es, además, la unidad mínima que podemos cambiar si queremos modificar alguna de las características fundamentales del ordenador: no se podrán cambiar componentes de la placa madre, salvo que ésta venga preparada para ello; cualquier ordenador, además, se diseñará alrededor de la placa madre. Esto se podría resumir en un principio de inviolabilidad de la placa madre: no se pueden pinchar cosas en la placa madre, a no ser que esta se deje. A la hora de ampliar o cambiar cualquier configuración de la placa madre, habrá que tener esto en cuenta.

En la placa madre se encuentra el microprocesador, el coprocesador matemático en algunos casos, y en otros casos el zócalo para colocarlo, la memoria RAM y ROM, los slots de expansión, todo el resto del chipset (unidad de manejo de interrupciones, unidad de E/S, de manejo de memoria; esto lo veremos en el apartado 1.4), y, en algunos casos, los chips de interfaz con algunos periféricos, como el teclado, la red de área local o el monitor.

La principal tendencia en la fabricación de placas madres es hacia una integración cada vez mayor. Cuanto más modernas, menos chips tienen, porque un solo chip asume las funciones que tenían anteriormente varios chips. Por tanto, consume menos energía y va también más rápido. El sitio que van dejando en la placa va siendo ocupado por otros chips o unidades funcionales que se ocupan de funciones anteriormente realizadas por tarjeta, como controlador de disco, video, y otros periféricos.

Las placas madres se encuentran habitualmente en carcasas procedentes de diferentes fabricantes, y por ello, su forma y las posiciones de elementos característicos como microprocesador y ranuras de expansión suelen ser estándar. Los formatos más célebres son la baby AT, de pequeño tamaño, la LPX, y la siguiente versión de Intel, la ATX.

Analizaremos cada uno de esos componentes por separado, viendo las diferentes opciones que existen actualmente en el mercado, empezando por el microprocesador o CPU. Un excelente artículo sobre el tema aparece en el PC Actual de Abril de 1996, p. 56 ss, y el Byte de octubre de 1995, p 52.





2.2 Microprocesadores


Antes de hablar de familias y modelos, se impone hacer una clasificación general de los microprocesadores. Hoy en día, los microprocesadores se dividen en dos grandes familias: risc (o de conjunto reducido de instrucciones) y cisc (o de conjunto complejo de instrucciones). La tendencia actual es dotar a los microprocesadores de cada vez más características de tipo risc; aunque los risc suelen incorporar los últimos avandes; y además suelen ser más rápidos, tener menos transistores, y por tanto, ocupan menos superficie en silicio. Esto hace que sean más baratos de producir que los cisc, aunque también importa el volumen de producción a la hora de establecer un precio.

Incluso se empieza a hablar de híbridos, que, aunque utilizan un conjunto complejo de instrucciones, internamente son risc. Esto se debe a la necesidad de utilizar una arquitectura heredada, aumentando al mismo tiempo las prestacines.

Las tendencias más avanzadas son hoy en día los vliw, e incluso los tta, transport-triggered architecture, o arquitectura guiada por transporte, que son procesadores en los cuales la única instrucción es move. Son procesadores divididos en varias unidades funcionales a las cuales se puede acceder explícitamente desde programa; cada unidad tiene tres registros, el de entrada, el trigger y el de salida; cuando el de entrada y el trigger tienen algún valor, se deposita el resultado de la operación en el de salida. Aparte, hay una serie de registros de propósito general. Como sucede en los vliw, todo el control de la aplicación se desplaza al compilador, que debe de ordenar las instrucciones de forma que todas las unidades funcionales actúen simultáneamente. Un artículo sobre este tipo de procesadores aparece en el Byte de Feb. de 1995.

Un microprocesador de tipo risc tiene alguna o todas las características siguientes:

Conjunto reducido de instrucciones. Además, las instrucciones suelen ocupar todas el mismo número de bytes (1 palabra de memoria).

Conjunto reducido de modos de direccionamiento, que a veces se reduce a sólo 1, direccionamiento directo.

1 instrución, 1 ciclo: la mayoría de las instrucciones más usuales están optimizadas, para ejecutarse en un sólo ciclo. Con respecto a los cisc, substituyen una instruccion compleja, pero lenta, por varias instruciones simples, muy rápidas. No suelen utilizar microcódigo o sea, que suelen estar cableados.

Muchos registros: tienen muchos más registros que un cisc, y los manejan por bancos de registros (por ejemplo, de 16 en 16 registros), de forma que cada programa puede tener su propio grupo de registros asignado, en un entorno multiprograma. El conjunto de todos los registros se llama fichero de registros o register file. Los registros son, además, de propósito general: no hay un contador específico, ni un registro de pila específico.

Trabajo intensivo con los registros: casi todas las operaciones aritméticas y lógicas trabajan sobre los registros, de forma que para operar con un dato, hay que transferirlo previamente al banco de registros. Para ello, hay también instrucciones rápidas que mueven bloques de memoria al banco de registros. Esos bloques pueden proceder de la caché.

Pipeline: de forma que, en cada ciclo, pueden terminar varias instrucciones simultáneamente. En este caso, se llaman superescalares, son capaces de ejecutar más de una instrucción por ciclo. Lo más habitual es que los risc o seudorisc tengan varios pipelines, incluso uno de coma flotante y dos de enteros. Los algoritmos necesarios para mantener los pipelines llenos la mayor parte del tiempo son bastante complejos.

Arquitectura tipo Harvard: el bus de datos y el de instrucciones están separados, cada uno llega al procesador por caminos diferentes, y por tanto se procesan en paralelo.

Compiladores complejos: debido a lo anterior, para sacar un máximo partido, los compiladores deben de optimizar el código de forma que los pipelines estén llenos durante el mayor tiempo posible. Lo más habitual es que no se programen en código máquina ni ensamblador.

Normalmente los microprocesadores se agrupan en familias, cuyos miembros son compatibles entre sí, en el sentido que los miembros más modernos de la familia están diseñados para entender el código máquina de los miembros más antiguos (lo cual no garantiza que el programa funcione, claro está). Esto es lo que se suele denominar compatibilidad binaria. Eso garantiza que existan muchas aplicaciones para los nuevos microprocesadores en el momento que salen al mercado. Aparte, cada microprocesador nuevo añade alguna característica (a menudo sólo una mayor velocidad), de forma que, habitualmente, no son compatibles en pines con los modelos más antiguos; incluso aunque tengan el mismo número de pines, estos tienen funciones diferentes. O sea que, en la mayoría de los casos, no se puede simplemente despegar un microprocesador y pegar otro.

Acompañando al microprocesador está habitualmente el coprocesador matemático o FPU (Floating Point Unit, o unidad de punto flotante). Es un procesador encargado de realizar operaciones con números reales representados según algún estándar, habitualmente el IEEE 754. Estos coprocesadores funcionan de dos formas diferentes:

Los memory-mapped funcionan de forma que sus operandos e instrucciones son colocadas en unas posiciones de memoria determinadas por parte del microprocesador. Cuando tiene el resultado, genera una interrupción y el procesador recoge el resultado de otra posición de memoria. Tienen la ventaja de que son independientes del microprocesador, como por ejemplo los Weitek. Evidentemente, se trata de coprocesdores externos. Como coprocesadores matemáticos están prácticamente en desuso; sin embargo, algún otro coprocesador funciona también de esta forma.

Otros, sin embargo, comparten el flujo de instrucciones con el microprocesador, de forma que cuando el microprocesador detecta una instrucción que no es suya, la envía al coprocesador, que la ejecuta y devuelve los resultados al microprocesador. En este caso son específicos de un microprocesador. Es siempre el caso de las FPU incluidas dentro de los microprocesadores.

Los parámetros a tener en cuenta en un microprocesador son los siguientes:

A qué familia pertenece, o de qué procesador es clónico. En algunos casos, hay algunos modelos de procesadores totalmente compatibles entre sí, es decir, funcionalmente indistinguibles, con el mismo número de pines y la misma velocidad. En ese caso se le denomina procesador clónico.

Velocidad en MHz: indica cuánto dura un t-estado, o ciclo del microprocesador. No es totalmente indicativo de las verdaderas prestaciones del microprocesador, hacen falta muchos otros parámetros, referidos, habitualmente, al ordenador en el que está incluido. A veces la velocidad interna no coincide con la externa, puede suceder que la externa sea la mitad de la interna.

Palabra interna y externa: de qué tamaño son los registros del microprocesador, y cuál es la longitud del camino de datos con que se comunica con la memoria. No tienen porqué coincidir; a veces sucede que la palabra externa es la mitad de la interna, o incluso la cuarta parte (en el caso del fenecido Sinclair QL).

Coprocesador matemático integrado o no: en algunos casos la FPU (unidad de punto flotante, o coprocesador matemático) está incluído dentro del microprocesador.

Caché interna o no: algunos microprocesadores incluyen una caché interna, para que el microprocesador pueda trabajar más rapidamente (de hecho, casi a la misma velocidad que con los registros) con los datos incluídos en la caché.

Consumo: en el diseño de portátiles y notebooks, interesa cuál es el consumo, así como el voltaje al que trabaja. En algunos casos, se han hecho versiones de 3.3 voltios (en vez de los 5 habituales) de algunos procesadores, que, por tanto, consumen menos. Estos microprocesadores, a su vez, incluyen algunas características, como de reducción a 0 de la velocidad en MHz (modo sleep), para que no consuman casi energía. Casi todos los microprocesadores actuales, debido a su gran consumo, deben de reducir el voltaje a 3,3, para evitar calentamientos excesivos.

Los microprocesadores son hoy en día comunes en la mayoría de los electrodomésticos y herramientas. En algunos casos, se trata de microcontroladores, microprocesadores de propósito general, de pequeño tamaño y consumo, que incluyen además todo lo necesario para controlar un dispositivo: conversión A/D y D/A, E/S, RAM, etc. Habitualmente son versiones de microprocesadores más antiguos de cada compañía.

2.2.1 Ejemplos: compatibles PC

La familia de microprocesadores que han alojado los compatibles PCs se denomina genéricamente 80x86(1), donde x va desde nada a 4 en la actualidad, aunque se abandona esa denominación con el Pentium. Las características de alguno de los modelos son las que se muestran en la tabla 1.

Esta familia sigue siendo en los 90 la más popular del mecado, lo cual no quiere decir que sea la mejor (aunque sí la más barata). Ultimamente están surgiendo nuevos miembros, como el K5 de AMD, el M1 de Cyrix, y el NexGen Nx586, aparte de otros modelos de TI e IBM. Los dos últimos serán fabricados por IBM Microelectronics. Casi todos estos tratan de ser compatibles con el 486, a veces compatibles en pines con el Pentium, y la mayoría de las veces son más rápidos que el Pentium (y no se equivocan al dividir).

La sexta generación se denominó en clave P6, es una versión multichip del Pentium, es decir, un par de chips en un solo módulo, que mejoran el diseño superescalar del mismo. Comercialmente se ha denominado Pentium Pro, y se utiliza sobre todo en servidores y ordenadores de gama alta.

En 1997 se han comenzado a comerzializar el denominado Pentium MMX, por multimedia extensions. Este microprocesador, por primera vez desde el i386, añade nuevas instrucciones al conjunto clásico de Intel; en concreto, algunas instrucciones para operaciones lógicas sobre 80 bits, aplicables en multimedia. Aparte de estas instrucciones, el MMX tiene una caché de datos y de instrucciones separadas, lo cual lo hace ligeramente más rápido que los Pentium clásicos, incluso sin las nuevas instrucciones. Para más información, Byte, Julio 1996, p 59-60.

La siguiente generación, comercializada probablemente a finales de 1997, se denomina Klamath en clave, y será un procesador de tipo Pentium Pro que incorporará las extensiones MMX, y además sacará fuera del procesador la caché de nivel 2. Y luego esta el Deschutes, que será tambien un procesador de tipo P6, que alcanzará hasta los 300 Mhz de velocidad.

Y como siguiente generación, Intel introducirá el P7/Merced, desarrollado en conjunción con Hewlett-Packard, que tendrá una arquitectura de 64 bits, pero que a la vez será compatible con las versiones más antiguas de la familia. Como se va a tratar de un procesador VLIW, los compiladores tendrán que encargarse de optimizar la ordenación de las instrucciones. Se supone que, además, tiene que ser compatible con la arquitectura PA-RISC. Para más información, Byte, Nov. 1996, p 89ss, "The x86 gets faster with age".

Hay algunas compañías, como Cyrix y AMD, que tratan de mantenerse al día sacando ciertos microprocesadores totalmente compatibles con los que saca Intel. Las últimas generaciones son, respectivamente, el M2 y el K7, con ejecución especulativa, y 2 y 4 instrucciones por ciclo de reloj. Ambos funcionan a 225 MHz.

Hay información adicional en el Byte, Nov. 1996, "The x86 gets faster with age".

2.2.2 Ejemplos: familia Mac, Atari ST y Amiga

Todos estos ordenadores llevan microprocesadores Motorola de la familia 680x0. En este caso no hay clónicos, y x llega hasta 6 (el 68060 ha salido hace poco, saltándose el 68050). Desde el 68040 tienen el coprocesador y la MMU integrados. Hay versiones de bajo consumo (que llevan lc dentro del nombre), pero no versiones a 3.3 V. También a partir del 68040 llevan caché interna.

Evidentemente, todos estos ordenadores no son compatibles PC, aunque pueden convertirse en compatibles software mediante un emulador, un programa que interpreta el código máquina 80x86 e intercepta las llamadas al sistema operativo MS-DOS y las convierte en llamadas al SO del Mac, Atari o Amiga. Evidentemente, estos emuladores hacen que un Mac muy rápido parezca un 386sx lento.

Algunas características:

Palabra externa/interna: es siempre 32/32

Velocidad: hasta 40 Mhz, en el 68040.

Hay también otra gama de ordenadores que lleva esta familia: las estaciones de trabajo NeXT, (cuyo fabricante ha sido recientemente comprado por Canon). Este es su mayor problema, porque el 68040 o 68030 que llevan no está muy a la altura de las circunstancias. Los primeros modelos de estaciones de trabajo Sun, hasta Sun-3, también lo llevaban.

Los últimos miembros de esta familia, los PowerMac, llevan microprocesadores de tipo risc, aunque se siguen vendiendo Macintosh con los anteriores procesadores de Motorola. Por ello, esta familia está empezando a quedarse obsoleta, y probablemente este apartado "se caiga" de la siguiente versión de estos apuntes.



2.2.3 Estaciones de trabajo con microprocesadores RISC

Los microprocesadores RISC se encuentran principalmente en estaciones de trabajo, aunque también los hay en se pueden encontrar en:

impresoras láser, donde su usan para interpretar el lenguaje de descripción de página y generarla en la memoria de la propia impresora,

pdas (Personal digital assistants, asistentes personales inteligentes), o pequeños ordenadores del tamaño de la palma de la mano, que se usan corrientemente como agendas; aunque pueden incluir también dispositivos de comunicaciones,

y muy posiblemente en la próxima generación de PCs, o bien en los llamados network computer. u ordenadores de red, que sirven principalmente para conectarse a la World Wide Web, y visualizar las páginas o interpretar applets de Java.

En los diseños de arquitectura interna de los RISC actuales se pueden apreciar arquitecturas superescalares, y arquitecturas superpipeline.

Las arquitecturas superescalares se basan en la creación de varias unidades dentro del mismo microprocesador, cada una de las cuales puede tener a su vez un pipeline. De esa forma, los resultados de varios pipelines pueden salir simultáneamente en un solo ciclo; pero puede haber problemas de dependencias si para calcular un resultado necesitas el producto de otro pipeline.

Las arquitecturas con superpipeline tratan de dividir el proceso de búsqueda, decodificación, ejecución y vuelta a escribir en la memoria (ciclo Harry el sucio) en el mayor número de etapas posibles, de forma que se ejecuten todas concurrentemente. Así no hay problemas de dependencias, aunque, por ser menos paralela que la anterior, pueden ser más lentos.

Hay muchas familias compatibles entre sí; las principales son las siguientes:

sparc: son los microprocesadores de las SPARCstation y compatibles. No son demasiado rápidos, comparados con otros. Van hasta a 40 Mhz, y llevan el coprocesador integrado. Hay varias versiones: microSPARC, superSPARC, cuya principal diferencia son las prestaciones; en general son compatibles en pines. Un SPARC a 25 MHz es aproximadamente tan potente como un 486 a 33. La última versión se denomina ultraSPARC, es de 64 bits, y tendrá unas prestaciones similares a los más rápidos del mercado, incorporando además operaciones sobre gráficos.

mips Rxx00: los llevan principalmente las DECstation, y las estaciones de trabajo Silicon Graphics (Crimson, Iris, Indigo, Onyx, Indy, O2, Extreme, Octane)Son muy rápidos, sobre todo el R4400, con una arquitectura 64/64. La rapidez (en el R4000) se debe a la arquitectura superpipeline (de 8 etapas); además, avanzan 2 etapas del pipeline por cada ciclo de reloj (reloj doblado). Las últimas versiones (en 1997) son el R5000 y el R10000, aparte de los procesadores que llevan las Nintendo64.

Alpha (21x64, x es 1 o 2) de Digital: el recién llegado al mercado, es posiblemente el más rápido de todos, con versiones hasta a 150 Mhz, con reloj doblado. También tiene 64/64; hasta ahora sólo lo llevan los DEC Alpha AXP. Las versiones más rápidas irán hasta 300 Mhz. Este tipo de ordenadores son bastante populares en las aplicaciones denominadas data warehousing, unas macroaplicaciones que combinan acceso a múltiples bases de datos con análisis sobre las mismas.

arm610 de ARM. Es el microprocesador que van a llevar los PDA Newton, de Apple, aunque versiones anteriores iban incluidas en el Acorn Archimedes. Es un microprocesador de 32 bits, que incluye una MMU específica para un sistema operativo orientado al objeto. Además incluye una caché de instrucciones y datos de 4 Ks. Su velocidad es de 25 Mhz, y es de bajo consumo (consume aproximadamente 10 veces menos que un 68030) [Byte, Nov. 1992, pp 293 ss]. El último representante, incorporado en los Newton, se denomina StrongARM.

PA-RISC (Precision architecture, de Hewlett Packard). Las últimaso noticias sobre este procesador indican que Intel ha llegado a un acuerdo con HP para desarrollar una nueva versión. Este nuevo procesador (que saldrá, con un poco de suerte, en 1996/97, o sea, más o menos cuando Windows 95) será capaz de ejecutar instrucciones 80x86 y PA-RISC.

ROMP o Power, o como diablos se llame (de IBM), PC6xx (de IBM/Apple), es el que llevan los PowerMac, las estaciones de trabajo de IBM y los PowerPC de IBM (cuando salgan). Hay una version (PC615) que es capaz de ejecutar código 80x86.

Hobbit (de AT&T, usado sobre todo para dispositivos de comunicaciones).

Chips Java: se suponen que son chips que aceleran la ejecución del bytecode de Java. Las aplicaciones en Java se compilan a unos ficheros .class, que son independientes de la máquina. Teóricamente, Sun dice que pueden ejecutar programas en Java hasta 12 veces más rápido que un procesador normal. Para más información, Byte, Nov 1996, p79ss., "Sun gambles on Java Chips".

Para más información, se puede consultar en los sitios Web de las compañías: Intel, Motorola, Cyrix, AMD, NexGen (que pertenece a AMD), MIPS, y en artículos de Byte, Nov '95, p. 169, artículo "Super Chips", y Diciembre 1996, "How chips changed the world".



2.3 Buses


El bus de expansión consiste en una serie de conectores que utiliza el ordenador (es decir, la placa madre) para comunicarse con el exterior. A estos conectores van enchufadas tarjetas o placas, específicas para cada periférico, ya que son el interfaz entre el periférico y el ordenador. Así, a la placa o tarjeta de video va conectado el monitor; a la controladora de disco van conectados los disquetes y el o los discos duros.

El bus de expansión forma parte del bus del sistema, que se compone a su vez en bus de control, bus de direcciones y bus de datos (aparte de las líneas de potencia). Este bus del sistema se conecta al bus de expansión mediante el interfaz de periféricos (en el caso del PC, se llama PPI, Programmable Peripheral Interface o 8255).

El bus local, por el contrario, va conectado directamente a las patillas de datos del microprocesador; los periféricos conectados en bus local tienen la misma facilidad o rapidez de acceso que la memoria.

La mayoría de los buses actuales son estándar, es decir, que su especificación no es propiedad de una empresa, sino que son de dominio público, y cualquier empresa diferente de su promotor inicial puede fabricar tarjetas para ellos. Además, la mayoría de los ordenadores van provistos de varios tipos de buses, con diferentes características.

Actualmente, lo más habitual es que los ordenadores lleven varios buses diferentes, aunque habitualmente hay un bus principal y puentes entre diferentes tipos de buses. Por ejemplo, el bus principal puede ser el PCI, y a él van conectados periféricos de tipo SCSI, e ISA.

Los parámetros que definen un bus son los siguientes:

Anchura del camino de datos: hay buses de 8 a 64 bits; indica cuantos bits pueden intercambiar simultáneamente el periférico y el microprocesador. En algunos casos, el bus puede tener un solo bit (bus serie).

Velocidad: habitualmente se mide en MHz, es el número de veces que el bus puede cambiar de estado por segundo. También se expresa mediante la velocidad de transferencia, en Mbps, megabits por segundo, que indica la velocidad real de transferencia de información, teniendo en cuenta modos especiales, como DMA o modo burst.

Bus mastering: una tarjeta bus master es una tarjeta inteligente, es decir, con microprocesdor, que sustituye al procesador central como órgano de control del ordenador; por tanto, puede acceder no solamente a memoria, sino a cualquiera de los periféricos. La principal diferencia entre un bus master y un acceso a DMA, es que durante este, habitualmente la CPU tiene que estar parada. En realidad, un bus master es el dispositivo que controla las línes de dirección y de control del bus. Todos los demás dispositivos son esclavos.

Familia: en algunos casos, puede ocurrir que las tarjetas para un bus sirvan también para algún "hermano mayor" de ese bus. Se forma entonces una familia de buses compatibles, que, como siempre sucede, tienen compatibilidad ascendente.

Data streaming o modo burst: consiste en la transmisión rápida de datos secuenciales; se necesitan muchas menos transacciones por byte transmitido (es decir, se eliminan los "reconocimientos" Ack's).

Plug'n'play: se refiere a aquellos buses que configuran automáticamente un periférico, sin necesidad de establecer a mano interrupciones y direcciones de puertos de entrada/salida a base de los DIP. Normalmente esto implica dos cosas: que el periférico se pueda identificar ante el ordenador, y que contenga código para poder inicializarse.

Hot swapping: consiste en el añadido y la eliminación de periféricos con el ordenador encendido, y reconfiguración automática correspondiente. Normalmente va asociado a la capacidad anterior.

Vamos a ver algunos ejemplos de buses, empezando por los que se utilizan habitualmente en el PC.

isa: fue el bus habitual del PC, hasta que se introdujeron los Pentium, significa arquitectura estándar de la industria (industry standard architecture). Tiene 8 o 16 bits, no admite dispositivos bus master, y su velocidad es de 8 MHz. Esto provoca serios problemas de prestaciones en las placas con microprocesadores más rápidos, resueltos con los siguientes modelos de bus. Aunque tiende a desaparecer, todavía se utiliza para los periféricos más lentos (puertos serie y paralelo a los cuales se conectan impresoras, por ejemplo).

eisa (arquitectura estándar de la industria extendida) y MicroChannel: de 32 bits. Además, admiten bus masters, con una velocidad máxima de transferencia de 33 MBps. Otra característica importante, tanto de esta arquitectura como de la siguiente, es la configuración automática. [Byte, Nov. 1989, p 417ss, y Byte, Mar '92]]

Local bus, vlb o vesa local bus: local bus no era inicialmente un bus estándar, sino una serie de arquitecturas, alguna de ellas propietaria (es decir, perteneciente a una empresa), cuyo denominador común es que las líneas de datos van conectados directamente al procesador y a la misma velocidad, por tanto no tienen los problemas de velocidad del ISA. El problema es que someten al procesador a bastante carga, pues roban ciclos de otras aplicaciones. Aun así fueron durante un tiempo la solución más rápida, sobre todo con periféricos rápidos como tarjetas de video. El estándar más establecido fue VL-Bus o VESA (Video Electronics Standards Association), de 32 bits. Es una arquitectura que permite hasta 3 bus masters; la máxima velocidad de transmisión es de 250 MBps. Se prevee una futura ampliación a 64 bits. Evidentemente, son específicas del procesador.

pci: Hay otro estándar de bus local, llamado pci; está destinado no solamente a tarjetas de expansión, sino también a colocar interfaces de periféricos en la placa madre, y va a 33 MHz. Su promotor es Intel. Funciona a 33 MHz. No es específico de un microprocesador; si se tiene que implementar para un nuevo microprocesador, sólo hay que cambiar el chip que une el bus local del microprocesador con el bus PCI; en principio, va a servir tanto para PCs como PowerPC como Alphas (de hecho, el Alpha tiene el interfaz PCI en el propio chip). Funciona tanto a 3.3 V como a 5 V. Funciona también en modo burst. Utiliza multiplexación de las líneas de datos, de forma que una tarjeta puede ser implementada con sólo 47 pins (a diferencia del ISA, que tiene más de 90). Se pueden instalar un máximo de 10 periféricos. Tiene configuración automática. Hay también una versión de 64 bits. [Byte, Oct. '92; Byte, Feb '94].

pcmcia, últimamente denominado PCCard, promovido por los fabricantes de tarjetas de memoria para portátiles. Se diseñó originalmente para que fuera utilizado por tarjetas de almacenamiento masivo en estado sólido, las llamadas memorias flash. Hoy en día, con la versión 2.0, se ha convertido en una especificación estándar para cualquier tipo de periférico, incluidos discos duros (pequeñitos, eso sí: del tamaño de una caja de cerillas). Hay diferentes tipos de ranuras (typos I, II y III), que se diferencian principalmente en el tamaño, y diferentes especificaciones (1.0, 2.0, 2.1), que se diferencian en los servicios ofrecidos. Es el bus P'n'p por excelencia, sin embargo, hasta recientemente no se ha empezado a aprovechar esta capacidad. Está previsto desarrollarlo en una versión llamada CardBus, que incluye bus-mastering, 32 bits y todo lo demás. [Byte, Nov 1994]

scsi: (Small Computer System Interface, pronúnciese "escosi") especificación de bus ligeramente diferente de las anteriores, debido a que el interface debe de ir incluido en el propio periférico; se trata por tanto de periféricos "inteligentes", aunque no en el mismo sentido que las tarjetas inteligentes; en este caso se refiere a que todos los componentes del interfaz están en el periférico, incluyendo la tarjeta sólo el puente (el equivalente al chip de interfaz en otros casos). Su otra característica es que permite conectar periféricos en cadena; cada dispositivo SCSI incluye tanto una entrada como una salida, que va tapada o bien conectada al siguiente dispositivo. En PCs, las tarjetas SCSI son interfaces entre el bus ISA y el SCSI. Viene también de serie en las estaciones de trabajo, en los Mac y en los Amiga. Hay una versión más rápida, llamada SCSI-2, y SCSI UltraWide, y SCSI3. En fin, muchas versiones.

NuBus: bus habitual en los Macs. Hay versiones a 16 y 32 bits, y admite tarjetas bus master.

pds: (processor direct slot, o ranura directa al procesador). Es el equivalente Mac del bus local en el PC; hay una versión diferente para cada Mac: 020, 030, 040... las patillas de este bus van conectadas directamente a las patillas del microprocesador; son por tanto diferentes para cada procesador.

Otros buses: s-bus: bus de los ordenadores compatibles SPARCstation; es un bus de 32 bits bastante simple, que permite construir tarjetas baratas. M-bus: nueva especificación de Sun, hace énfasis en tarjetas pequeñas, y dispositivos montados en superficie (en vez de pinchados, como es habitual). Tiene 64 bits, y su velocidad habitual es de 80MBps. Por lo demás, es parecido a los buses locales. vmebus (Silicon Graphics; utilizado principalmente en instrumentos científicos), TurboChannel (estaciones de trabajo DECstation).

Buses serie: últimamente están empezando a surgir especificaciones de buses serie de alta velocidad, en concreto el Access.bus y el FireWire. Estos buses permiten los últimos adelantos de la tecnología, como plug'n'play, hot-swapping, permiten conectar cientos de periféricos en serie, y velocidades de 125 KBps (Access.bus) o de hasta 20 MBps (FireWire). En este último caso, sería comparable a las velocidades de buses más habituales. Probablemente, uno de los que tenga más éxito será el USB, Universal Serial Bus, que va a ser implementado en las nuevas placas madres de los Pcs, y que servirá para conectar cualquier periférico, inclyendo monitores.

En el futuro están las conexiones de fibra óptica. Se están empezando a desarrollar estándares de conexiones con fibra óptica, en concreto Fibre Channel. Estos conectores podrían desarrollar velocidades del orden del GBps.

Para saber más: Byte, Aug. '94.

2.4 Memoria

En casi todos los sistemas actuales, la memoria se organiza en una jerarquía, organizada según velocidades. La memoria más rápida son los registros, luego está la(s) caché(s) incluidas dentro del microprocesador, luego la(s) caché(s) externa(s) (denominadas a veces caché L2, o de segundo nivel), y luego la memoria principal; aparte está el almacenamiento masivo. A rapidez creciente, la cantidad de información por unidad de volumen decrece, y el precio aumenta. Generalmente, los datos contenidos en cada nivel son un subconjunto de los datos en los niveles superiores.

El conjunto de todos los registros se llama register file o fichero de registros; la tendencia es a aumentarlo de tamaño cada vez más (ya se sabe que en los risc, puede ser más de 100).

La caché de CPU de dos niveles ya se encuentra habitualmente en casi todos los diseños (dentro/fuera del microprocesador), si la velocidad de la memoria es muy diferente de la del microprocesador, hay cachés externas de varios niveles, hasta la más lenta que se acerca a la velocidad de la memoria.

Las cachés se basan en el principio de localidad, que tiene 2 dimensiones: una espacial y otra temporal: un programa tiende a acceder posiciones de memoria que son las mismas (dimensión espacial) o están cerca de las posiciones a las que ya ha accedido (dimensión temporal). Por tanto, una caché es un dispositivo que recibe los artículos accedidos recientemente, y los que están cerca de ellos, a un medio de almacenamiento (típicamente SRAM), más rápido que la DRAM (tecnología con la que se fabrican los chips de RAM habituales). De las políticas de gestión se encarga el chip de gestión de memoria o mmu, que a veces está integrado en el microprocesador (como en el caso de los Intel de 486 en adelante).

Las cachés se diferencian por cómo actualizan la memoria principal:

Una caché write-through escribe en la memoria principal siempre que se escribe en una posición almacenada en la caché. El controlador de memoria 83385, que forma parte del chipset del 80386, utiliza este método.

una caché write-back escribe a la memoria principal sólo cuando una posición determinada tiene que salir de la caché, es decir, cuando tiene que dejar libre el espacio ocupado para que entre otro bloque de memoria principal.

una caché con burst-pipeline funciona de modo síncrono, y es ligeramente más rápida que las otras.

El primer tipo de cachés asegura la coherencia total entre la caché y la memoria principal; sin embargo, hace más uso del bus caché-memoria principal.

Hay diversas formas de organizar la caché [Byte, Aug 1994], según la dirección a la que van a parar los bloques de memoria. Los datos se transfieren en bloques (habitualmente de 64 bits), un bloque en la caché se denomina línea. Una caché está organizada en líneas; el problema principal es decidir en qué línea de la caché se va a almacenar un bloque de memoria determinado. Según esto, las cachés tienen tres tipos.

Mapeo directo: se divide la dirección de memoria (32 bits, por ejemplo) en 3 partes. Los últimos bits (6, por ejemplo) determina el offset dentro del bloque. Los siguientes 10 bits determinan la línea de la caché en la cual se va a almacenar, el resto, denominado tag, se almacena junto con la línea de la caché. De esta forma, a partir de la dirección de memoria de calcula directamente la línea de caché en la cual está almacenada; se comprueba el tag a ver si coincide, y si no se genera un fallo de página. Tiene el problema denominado data thrashing, en el cual dos bloques de memoria se pelean por ocupar la misma línea en la caché.

Plenamente asociativa: cualquier bloque se puede colocar en una línea de caché determinada; el tag se almacena junto con el bloque. Para ver si un bloque está en la caché, hay que comprobar uno por uno todos los tags. Por ello, se utiliza el llamado TLB, o translation lookaside buffer, que almacena las posiciones de los bloques referenciados más recientemente. Normalmente se elimina de la caché el bloque menos recientemente referenciado.

Asociativa por conjuntos: en este caso, la caché se divide en conjuntos; cada conjunto tiene varias líneas, y dentro de ellos, se comporta como si fuera una caché plenamente asociativa. Los bits de enmedio de la dirección determinan en qué conjunto de la caché se va a introducir cada bloque. Si es una asociativa por conjuntos de n vías, eso significa que hay n líneas en cada conjunto, necesitándose por tanto dos comparaciones de tags para saber si un bloque está almacenado o no.

La organización de una caché determina sus prestaciones; una caché de tamaño n con mapeo directo tiene la misma eficiencia que una de tamaño n/2 asociativa por conjuntos.

En algunos casos la caché está dividida en caché de datos y caché de instrucciones; dado que un programa tiene implícitamente dos punteros, el de programa y el de acceso a datos, almacenados en alguna otra parte, esta separación tiene sentido. Sin embargo, la proporción de caché dedidaca a datos y a programa es fija, con lo cual puede ser más eficiente una caché genérica.

Los chips de memoria almacenan cada bit en pequeños (incluso muy pequeños, vamos, pequeñísimos) condensadores; los bits están organizados en el chip como una matriz de filas y columnas. Para leer un bit en particular, la circuitería del sistema debe de dar la dirección de fila y la de columna, en ese orden. Algunos nanosegundos más tarde, la memoria produce un valor de un bit, que representa la carga en el condensador en las direcciones de fila y columna especificada. Desde ese momento, el sistema tiene que esperar que el chip supere su tiempo de precarga, antes de que se acceda a él otra vez. Por todo esto, acceder a la RAM es bastante lento. Además, la DRAM tiene que refrescarse cada cierto tiempo para mantener la carga. Se puede refrescar una fila de cada vez, accediendo a los bits contenidos en esa fila.

Por todo lo anterior, una DRAM con un tiempo de acceso t=60 ns. requiere casi el doble de ese tiempo para completar un ciclo completo de lectura o escritura. t se refiere al tiempo que tarda desde que recibe una dirección de fila hasta que saca el valor correspondiente, pero no se cuentan otros tiempos, como el tiempo de precarga, el tiempo de preparación de la dirección de fila, etc. Sin embargo, los 386/486 pueden acceder a la memoria de forma mucho más rápida, aprovechando la mayoría de las veces, el microprocesador lo hace secuencialmente.

Uno de los modos de acelerar este acceso es hacerlo en modo página, o FPM-RAM (Fast page mode). Una vez se indica la dirección de fila inicial (es decir, la página), la DRAM puede realizar accesos rápidos (por debajo de 20 ns para chips de 60 ns.) dentro de esa página especificando las direcciones de columna. Pero a veces la CPU es más rápida y no le da tiempo a la RAM a mantener la salida que la CPU debe leer, por eso la EDORAM (extended data out) almacena la salida en un registro el tiempo suficiente para que la lea la CPU. Si además tiene un modo burst, la CPU puede coger grupos de direcciones de memoria, por ejemplo de cuatro en cuatro, en vez de uno de cada vez.

Otra técnica es la operación en modo entrelazado. En este caso, la memoria en la placa madre se divide en dos o más bancos. Cada banco opera a la anchura del camino de datos, 32 bits, p.ej. para un 386. Las páginas se disponen de forma que cuando la CPU lee instrucciones secuencialmente de la memoria, accesos a palabras sucesivas se harán de bancos alternativos. De esta forma, mientras que se accede a un banco, el otro banco puede precargarse o refrescarse.

A veces, la memoria que se encuentra en las tarjetas de video de gama alta es de una tecnología ligeramente diferente, denominada vram; en estos casos se trata de memorias de puerta dual, en las cuales el microprocesador y el procesador de la tarjeta pueden acceder a memoria simultáneamente. Son algo más caras que las memorias dram habituales.

Para más información consultar Byte, Nov. '91, p360, y Byte, Mar. '92, Byte, Junio '95, "Mejorando tu memoria", p 185.





2.5 Chipset


El chipset incluye, entre otras cosas, la lógica principal del sistema (que vaya usté a saber lo que es), los controladores de interrupciones, los controladores DMA, el controlador de memoria caché, y los buffers para el bus. Dentro de este chip set se puede incluir también el oscilador, circuito que controla la operación síncrona de toda la placa madre.

La tendencia actual es reducir el chipset a un número mínimo de componentes, incluso incluir todo el chipset en una sola pastilla: microprocesador, controlador de I/O, controlador de DRAM, controlador de video y controlador de disco. Esto es lo que hicieron Chips & Technologies, con su PC/Chip, o Vadem, con su VG240. Este tipo de chips pueden ser útiles en los palmtops, pequeños ordenadores que se pueden sostener en la palma de la mano, y los pdas.

Lo más habitual es incluir todas las funciones del chipset en uno o dos chips, como por ejemplo, el chipset Triton FX de Intel.

2.6 Procesamiento digital de señal


Ultimamente, desde que ha aparecido en una serie de ordenadores personales y estaciones de trabajo, el procesamiento digital de señal se está convirtiendo en una necesidad, o, por lo menos, en un vicio accesible. Sus principales aplicaciones son el procesamiento de voz y tratamiento de imágenes, todo ello en tiempo real, aunque también se utilizan como procesadores de comunicaciones. [Byte, Nov. 1992]

La principal operación que realizan los DSP es

es decir, que están optimizados para hallar productos escalares de vectores, y sumar el resultado a otro resultado anterior. Para ello, incluyen operaciones del tipo v1*v2 + ACC -> ACC, donde ACC es el acumulador. El acumulador es un registro especial con mayor anchura de la normal, para evitar errores de redondeo en el resultado final.

Estas operaciones se suelen realizar muchas veces, en un bucle; los DSP están también optimizados en la ejecución de bucles, de forma que el salto al principio de un bucle se hace prácticamente en un ciclo.

A veces, para aumentar aún más la velocidad, tienen buses múltiples de datos, separados a su vez del bus de instrucciones. Todos los operandos y el opcode llegan simultáneamente al microprocesador, que los procesa en paralelo.

Algunos DSPs incluyen también puertos de comunicación con otros chips, aparte de puertos de conversión A/D y D/A. Hay versiones de punto flotante y de enteros.

Los DSPs suelen aparecer en un ordenador personal de dos formas: como una tarjeta, incluida en el bus (como por ejemplo, la Sound Blaster, o alguna tarjeta de adquisición de datos analógicos), o como chips incluidos en la placa madre (próxima versión de los Mac, en el Amiga, o el Motorola 56001 en el NeXT).

Con la explosión de las aplicaciones multimedia, los DSPs se están empezando a utilizar cada vez más, sobre todo para procesamiento de imagen, sonido y voz, síntesis de sonido y voz, y compresión y descompresión de datos en tiempo real. Teniendo en cuenta que una imagen de un segundo ocupa un mega sin comprimir, esto es realmente una necesidad para el procesamiento de vídeo en tiempo real.

Una de las tendencias actuales son los procesadores multimedia, que incluyen características de RISC, CISC y DSP, y que están pensado especialmente para este tipo de tareas y también como procesadores empotrados, es decir, incluidos en algún dispositivo o electrodoméstico. Un ejemplo es el Mediaprocessor. También se empiezan a incluir capacidades multimedia en procesadores tradicionales, como el Nx686. Esto significa habitualmente que se optimiza la operación de multiplicación con acumulación que, como se ha visto al principio, es la base de las aplicaciones multimedia y también del proceso digital de señal.

A la vez, han surgido una serie de tarjetas que incluyen todo lo necesario para el proceso digital de señal, y que incluyen todas las posibles aplicaciones: módem, tarjeta de sonido, tarjeta de telefonía y fax.

Algunos recursos Internet donde se pueden encontrar referencias sobre el tema son los siguientes:

Tarjeta MWave: http://watson.mbb.sfu.ca

Creative Labs, creadores de la gama Sound Blaster: http://www.creaf.com, ftp://ftp.creaf.com.

2.7 Multiprocesadores de sobremesa


Debido a la limitación de las arquitecturas monoprocesador, y a la relativa facilidad de diseño de placas madres con varios procesadores, se están empezando a utilizar, sobre todo como servidores de red, algunos modelos de ordenadores compatibles PC multiprocesador.

Vamos a ver previamente los tipos de multiproceso que hay.

Funcional: los diversos procesadores son diferentes, en capacidad y en función. Este es el más habitual, hasta el punto que ya ni se considera multiproceso. Suele haber un procesadorde propósito general, que ejecuta los programas, y envía órdenes a los otros procesadores.

Simétrico: en el caso de que haya varios procesadores iguales.

Dentro del multiproceso simétrico, las diversas arquitecturas se clasifican por el grano, es decir, por el grado de división de las tareas entre diferentes procesadores.

Grano fino: Cada procesador puede ejecutar diferentes partes de un programa, o diferentes procesos. Se caracteriza porque la comunicación es más importante que la computación.

Grano grueso: la computación es más importante que la comunicación. Cada microprocesador ejecuta, por ejemplo, diferentes partes del sistema operativo.

Con respecto a como comparten la memoria, las arquitecturas multiprocesador se clasifican en memoria compartida y memoria distribuida, aunque hay una tercera arquitectura que es un híbrido de las dos.

Memoria compartida: los diferentes procesadores tienen una caché local, y mediante el bus común, acceden a la memoria compartida. El problema con esta arquitectura es que sus prestaciones no son escalables; cuantos más procesadores se añaden más se degradan las prestaciones. Por otro lado, se plantean problemas de coherencia de los valores contenidos en la memoria principal, que se resuelven de diversas formas. Todos los compatibles multiprocesador funcionan de esta forma. También se denomina SMP, o multiproceso simétrico, como anteriormente.

Memoria distribuida: cada procesador tiene una memoria local, y se comunica con los otros mediante paso de mensajes. La forma de programación de estos procesadores es totalmente diferente; no se suelen encontrar en compatibles. Se denomina también MPP, o proceso masivamente paralelo, puesto que, en principio, se pueden añadir todos los procesadores que se desee.

Proceso paralelo escalable: mezcla los dos tipos anteriores: cada nodo suele estar compuesto por varios procesadores con memoria compartida, que a su vez pueden acceder a una memoria distribuida. Algunos de los superordenadores actuales, como el IBM SP2, son de este tipo.

Ejercicios


1. Una NeXT y un PC, ¿son compatibles? ¿Y un Mac?.

2. ¿Como se puede convertir un Mac en un PC? ¿Y un PC en un Mac?

3. ¿Un ordenador con un SPARC, puede ser compatible PC?

4. ¿Un compatible SPARC, puede llevar bus de tipo ISA?

5. ¿Una IBM System/6000 puede llevar un bus MCA?

6. ¿Qué es más rápido a 25 MHz, un SPARC, un 68040 O UN MIPS R4000?

7. ¿En qué se parecen y diferencian WordPerfect para Windows de WordPerfect para el Mac?

8. ¿Un Spectrum se puee conectar a una red con SPARCstation? ¿Y un PC?

9. ¿Un i486 puede ser RISC? ¿Y un 68060?

10. ¿Cómo se puede convertir un PC en una SPARCstation cambiando el número mínimo de componentes?

11. ¿Cómo se aumenta la caché de CPU?

12. ¿Puede haber un ordenador que lleve MCA y EISA a la vez?

13. ¿Un ordenador con un 8088, puede llevar un bus PCMCIA?

14. ¿Se puede conectar una VGA a un Mac? ¿Y a un ordenador a través del bus PCMCIA?

15. Una estación de trabajo NeXT y un Mac, ¿son compatibles? ¿Pueden serlo?

16. ¿Cómo se aumenta una caché?

17. ¿Una láser, es compatible PC?

18. ¿Cambiar un bus de 16 bits por otro de 32 bits, implica que se dobla la velocidad?

19. ¿Se pueden conectar dos ordendores por el puerto SCSI?

20. ¿Qué es necesario para convertir un multiprocesador en un PC?

21. Ejemplo de multiprocesador funcional.

22. ¿En qué sentido un ordenador que admite busmaster es multiprocesador?

23. Desde MS-DOS, ¿Se pueden utilizar DSPs? ¿Y desde Windows?

Bibliografía adicional

-Guía del programador para el IBM PC, de Peter Norton. Anaya/Microsoft Press.

Realizado por

Juan Julián Merelo Guervós

Depto. de Electrónica y Sistemas Informáticos

Universidad de Granada

Fecha de última modificación: 24 April 1997

1. Aunque a partir del 80286, Intel le cambió el nombre a los demás miembros de la familia, renombrándolos i386SX, i386DX e i486SX y DX, y el 386SL. Además, se incluye el 8088, que llevaba el PC original. Y eso por no mencionar los miembros clónicos de la familia, que llevan nombres en vez de números, y los de la familia Pentium.