Artículos > Desde que encendemos la PC hasta que termina la carga de Windows... (1):

CONTENIDO:

Un interesante y detalladísimo artículo sobre todo lo que sucede desde que iniciamos nuestra PC
hasta que Windows 9x termina su carga (dividido en cuatro partes)

- BIOS
- Secuencia POST
- Inicializacion del Hardware
- Puesta en marcha de los buses y Recursos IRQ, DMA y Puertos
- Busqueda del sistema operativo: MBR, FATs y Boot Sectors
- Sistema de arranque: IO.SYS, MSDOS.SYS y COMMAND.COM
- Config.sys y Autoexec.bat
- Carga de Windows, registro, controladores y modulos.
- Inicializacion de protocolos, clientes y servicios de red.
- Y mas... mucho mas...

INTRODUCCION:

Acabamos de pulsar el boton de encendido. ¿y que pasa?.. bien, nada mas encender el ordenador, se empieza a ejecutar un programa que está grabado internamente en nuestro PC. La maquina lo que hace es ir a una determinada posicion de la memoria, y lo que está allí se lo dá drectamente al procesador para que empieze a ejecutarlo.
Por tanto, nuestra "memoria" del PC, no está tan vacia como parece.... algo debe contener. Este algo es un programa que reside en un chip de memoria llamado BIOS ROM y que al encender el PC, ocupa un posicion FIJA de memoria en cualquier PC. Siempre la misma.

BIOS

Antes lo hemos descrito como un programa. Realmente es un programa y ademas es el unico programa que conoce exactamente (o debe conocer) las tripas de nuestro PC.
Debemos pensar que realmente en el mundo, hay bastantes fabricantes de placas madre. Y muy pocos fabricantes de BIOS. Los fabricantes de BIOS (Award, AMI, Phoenix, etc) lo que tienen son unos modemlos de bios semi-estandard (por ejemplo la version 4.51 PG de Award) y lo que hacen, bajo pedido del fabricante de la placa madre, es adaptar "su" estandard de bios, a "esa" placa madre. Por tanto, fijemonos que la version 4.51 PG de Award, se ejecuta en muchas maquinas totalmente diferentes, y resulta que la bios es totalmente diferente. Es especifica para "esa" placa madre (y de cara al exterior, lo que pasa es que cumple la funcionalidad de la 4.51 PG -que será una norma intenrna fijada por el fabricante de la bios-).
Por eso, y por ser un programa, cuando hablamos de "actualizar" la bios, podemos efectivamente "sustituirlo" por una version superior. Pero, para ello, debemos buscar la "version" de la bios 4.51 PG de Award para "nuestra" placa madre. Y unicamente, podremos buscarlo en el web del fabricante de "nuestra" placa madre. Sí el fabricante es una marca "puntera" se preocupará de pedir a Award revisiones y mejoras de sus bios. Si es una marcar "cutre", pues probablemente la placa madre "muera" con la misma revision de la bios que teniamos al adquirirla.
Y ahora una pregunta ¿por qué se llama ROM? ROM quiere decir "Real Only Memory", es decir "Memoria de Solo Lectura", y si es de solo lecutra ¿como podemos actualizar la bios?. Bueno,.... en un principio, las ROM eran de solo lectura. Actualmente el termino ROM es un poco mas amplio: se entiende por ROM aquella memoria que cuando se apaga de la corriente, no tiene perdida de datos, y por tanto es susceptible ademas de ser actualizable (memorias de tipo EPROM). Por tanto con un programa especifico podremos actualizarlo.
Esto tiene un problema: sí existen programas capaces de actualizarla, ¿no podran existir virus que sean capaces de borrarla?.... Pues por desgracía: si. Y tiene muy malas soluciones el tema. Pensemos que si nuestra bios está dañada, bien por un virus, o bien porque hemos instntado actualizarla y se ha ido la corriente en ese momento, o bien porque nos hemos equivocado y hemos bajado del web un archivo de actualizacion que no es para nuestro "exacto" modelo de placa madre... en ese caso, nuestro ordenador no volverá a la vida. Es más, ni se iluminará la pantalla, ni hara intento de arrancar de disco o desde disquete. Nada: muerto.
Las BIOS son configurables. Es decir podemos entrar en una serie de pantallas al iniciar el ordenador para poner o quitar algunos parametros que puede hacer que nuestra maquina responda mejor ante un determinado hardware, o determinado sistema operativo. En muchas de las BIOS, podemos entrar justo nada mas encender el ordenadro, pulsando la tecla "DEL" (borrar) o la tecla "ESC". Otras bios pueden requerir otra conbinacion de teclas.

CONFIGURACION DE LA BIOS

Siempre es aconsejable, nada mas adquirir un ordenador, el entrar en la BIOS y apuntarnos TODO lo que tienen las pantallas de definicion. En ciertas maquinas (y ademas, con ciertas impresoras), la tecla "Imprimir Pantalla" funciona. Pero no suele ser lo habitual, por lo que nos tendremos que armar de paciencia, boligrafo y papel, y a escribir...
Esto puede que nos saque de algun apuro alguna vez.
En principio, no se debe andar toqueteando en la bios, pero es conveniente intentar dejarla lo mas acorde con las necesidades de nuestro sistema operativo. Hay que recordar que el MSDOS y todas las versiones de Windows (excepto el NT), se apoyan "excesivamente" en la bios.
Recordemos los parametros que podemos tocar (sin apenas riesgo) y ademas que es conveniente tocarlos:
* Puerto paralelo: se debe intnetar definir (pongo las opciones de "mejor" a "peor")
ECP+EPP (con DMA 3)
ECP (con DMA 3)
EPP
SPP
Esto no quiere decir que sea lo mejor para nuestro sistema. Dependerá de que dispositivos tengamos en el puerto paralelo. Existen impresoras (pocas) que unicamente funcionana e modo EPP puro (no sirve ECP+EPP), y existen algunos scanner que tambien les sucede lo mismo. Es solo cuestion de probar cual se adapta mejor a nuestro sistema. Pero para ser un poco ordenados ¿por qué no probar por el orden que he dado antes?
* Pantalla PnP:
Bien, esto puede ser un mundo. En principio, muchas BIOS preguntan como primera opcion:
PnP OS (Operating System) : YES | NO
Pues aunque parezca mentira, mi consejo es poner NO. (al menos con win98 en Español. Con Win98 en Inglés dá igual lo que pongamos, pero el Español, tiene un "bug" en este sentido. Bug que no aparece en "todas" las placas madre, pero sí en un numero alto de ellas, y sobre todo si tenemos dispositivos PnP ISA -mas adelante hablaremos de ello-)
Y luego, en esta pantalla, casi todas las bios, nos permiten poner IRQ por IRQ, si en PnP, o PCI, o Legacy ISA o simplemente ISA. Estas opciones depeneden de cada bios. En principio no tocarlo, y posteriormente cuando veamos los "BUSES" y posibles conflictos de dispositivos, veremos para que pueden servir.
* Pantalla APM (o Power Management).
Importantisimo: aquí tenemos que poner Power Management: "Enabled" y posteriormente todos los timer (contadores de tiempo) para los disitintos modos (suspender -suspend-, dormir -sleep-, etc...), dejarlos a "cero" o "disabled". De esta manera, windows podrá establecer sus propios contadores y no entrará en posible conflicto con la bios.
Igualmente, hay ciertas bios que en dicha pantalla pregunta por ACPI (enabled/disabled). ACPI es una caracterisitica de control "avanzado" del sistema. Mi consejo, si vuestra lo bios lo pregunta es que pongais activo "siempre" el modo ACPI. Mas adelante hablaremos tambien de él, en la instalacion del sistema operativo.
** Con esto, ya hemos realizado una tarea "importante". La tarea, fijaros que no es configurar la bios como he comentado antes. Sino ESCRIBIR como está la bios por defecto (al adquirir nuestro PC) y que se supone, que mejor o pero, nuestro sistema operativo, al menos funciona.
Antes de ver que hace el programa de la bios hasta arrancar nuestro sistema operativo, debemos conocer un poco de hardware. Que nos suenen un poco los temas...

HARDWARE

Bueno, al menos, ya nos suenan tres cosas: CPU, memoria (por la "pasta" que tenemos que pagar por ella, aunque no está muy clara su funcion todavia) y BIOS.
Pero ¿que mas hay en la placa madre? Vamos a enumerar un poco, como si realmente existiesen estos componentes por separado. Digo como si existiesen porque actualmente dichos componentes, la mayoria estan "embebidos" en algun chip multifuncion de la placa madre. Pero existir: existen.
Enumeremos un poco:
1) BUSES : PCI, ISA, AGP
2) Controlador de disco duro
3) Puertos: serie, paralelo
4) BUS USB
Y ahora algunos "chips" importantes:
1) Controlador Programable de interrupciones (IRQ)
2) Chip de DMA.
Y luego otra serie de "cosas" de las que hemos oido hablar: puertos, IRQs, etc.....
** Empecemos un poco con el concepto de un: DISPOSITIVO

DISPOSITIVOS

Vamos a definir los "dispositivos" como el resto del hardware independiente de la CPU y memoria con los que la CPU interactual.
Hagamos un poco de historia. El PC actual que conocemos, aunque parezca mentira, es basicamente el mismo que surgió en el año 82. Su arquitectura es la misma y lo unico que ha ido evolucionando han sido los "perifericos" o dispositivos. Algunos de ellos, actualmente, se incorporan ya en la placa base (controladores de disco, disquete, puertos serie y paralelo, por poner un ejemplo). Y otra evolucion evidente han sido las CPU, pero recordemos, que por suerte o por desgracia han tenido que mantener su compatibilidad descendente y por tanto, su juego basico de instrucciones es el del antiguo 8086.
Vemos a empezar por la CPU y memoria y luego veremos con detalle el resto de "perifericos". Recordemos que no nos queda más remedio que ceñirnos a la historia. Al año 82.

CPU

La primera CPU con una arquitectura de 16 bits que triunfó en el mercado (que conste que no era la unica arquitectura existente en sus años), fué el 8086 de Intel.
Su triunfo, al igual que el del Windows actual, fué una decisión de un gigante del hardware: IBM, y un monton de suerte de una persona que empezaba en aquel momento: Billy Gates.
Hagamos historia. IBM hasta ese momento estaba dedicado a los grandes ordenadores (mainframes) y bajo el supuesto de que empezaba a surgir un mercado potencial (la microinformatica) decidió empezar a dedicarse a este mercado. Para ello encargó a Intel el diseño (mejor dicho, la mejora de un antiguo 8008 - equivalente a un Z80) de un procesador de 16 bits. Y abrió publica subasta (por decirlo de alguna manera), sobre un futuro sistema operativo para dicha arquitectura.
El propio IBM definió las caracterisiticas basicas de las placas madre: el bus PC que rapidamente evoluciocó al bus AT, y que por desgracia todavia seguimos sufriendo.
Con respecto al software, en aquellos años existian unos sistemas operativos serios para los ordenadores de 8 bits que empezaban a surgir. Decimos sistemas operativos "serios" porque realmente lo eran para su epoca. Estamos hablando del CPM cuya propiedad intelectual era de Digital.
En la propia Digital, una vez abierta la "subasta" (y la apuesta) por parte de IBM para el futuro sistema operativo de 16 bits, empezaron a desarrollarse dos proyectos: el CPM 86 (o "concurrent" CPM) y un sistema basado en DOS.
En las fases finales del desarrollo, Digital "apostó" por el CCPM (o CMP 86, o Concurrent CPM, como queramos llamarlo), y abandonó el proyecto basado en el DOS.
Pero Digital era (y sigue siendo) una Empresa "curiosa" con sus ingenieros de Software. El ingeniero de Software tiene la "patente" de lo que desarrolle dentro de la Empresa (esta caracterisitica la hace unica en el mundo del software), y una vez implementado un producto de ingenieria, el equipo, o la persona que lo ha desarrollado percibe "royaltis" por cada venta, al igual que la propia empresa. Y si esta persona se vá de la Empresa, se vá con su "patente" o su "parte de la patente" o sus derechos, y sobre todo si el producto ha sido desechado por la propia empresa se lleva completamente "su" desarrollo y "su" propiedad intelectual.
Y este fué el caso. El ingeniero de Digital encargado del proyecto DOS se fué (o bien "cabreado", o bien por una oferta que le hizo nuestro avispado Gates). Y nuestro avispado Gates, hizo una carrera contra-reloj para tener finalizado su primer MsDOS (version 1.0) seis meses antes de que Digital finalizase su CCPM.
IBM tenia prisa por sacar el producto al mercado. Y formó alianza con la incipiente Microsoft para empezar a implementar el MsDOS (PCDOS) en sus ordenadores.
¿Fué una decision acertada?. Personalmente creo que nó. Pensemos que el incipiente CCPM ya era capaz de soportar multitarea (hasta 4 tareas) en modo consola (no existía todavia interfaz grafica) -Por cierto, todavia lo tengo y funciona!!!-.
Fué una triple decision de IBM, que nos condiciona hasta el momento actual:
1) Se definió una arquitectura (bus PC que evolucionó inmediatamente hasta el bus AT. Este bus AT basicmanete se sigue conservando en nuestros actuales PCs y condiciona un monton de cosas que iremos viendo en estos capitulos)
2) Se definió un procesador: arquitectura X86 (el 8086)
3) Se definió un Sistema Operativo (por llamarlo "algo"...), el PC-DOS 1.0
Y de allí surge la todavía frase hecha: "ordenador COMPATIBLE". Pero ¿compatible con que? pues compatible IBM. Con los años se ha perdido la palabra IBM.
Y surge la frase CPU compatible. ¿con qué? pues con la arquitectura X86 de Intel.
** Bien, repasemos un poco dicha CPU. Como todas las CPUs tiene un monton de "patitas", estás se agrupan logicamente en las siguientes funcionalidades:
a) "patitas" de DATOS
b) de DIRECCIONES
c) de CONTROL
Es decir, los buses que salen directamente de la CPU, son de "datos" de "direcciones" y de "control". Para escribir un dato en memoria, es necesario enviar el dato y "además" enviar su direccion. Y el bus de "control", es para comunicarse con el resto "del mundo", con los perifericos, con la circuiteria externa, etc...
Esta primera CPU, tenia unicamente 20 "patitas" de direcciones. Y ademas los registros generales (todas las CPUs tienen una serie de registros generales internos con los que saben hacer ciertas operaciones) eran de 16 bits.
Por tanto con 16 bits en principio, solo se podian direccionar 2 elevado a la 16 direcciones. Es decir 64 Kbs de memoria. Intel, introdujo en esa CPU, el concepto de "segmentacion" (concepto por el que todavía seguimos pagando "muy caro", muchas, demasiadas "malas herencias").
El concepto de "segmentacion, consiste en utilizar 2 registros generales para formar una direccion fisica. Un registro llamado "segmento" (o base) y un registro llamado "desplazamiento" (offset).
Bien, recordemos que 16 bits, son realmente 16 unos y ceros puestos a continuacion. Agrupemoslos en grupos de 4 bits. Esto forma 4 grupos de 4 bits. Cada grupo de 4 bits, puede tener los valores:
0000 0 (posibles "cuartetos")
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F
En total 16 valores. Por abreviar, podemos representar cada grupo de 4 bites, con el numero o la letra que he puesto a continuacion. Esta es la representacion hexadecimal (base 16).
Recordemos que hay 4 grupos de 4 bits, es decir, puesto entonces en representacion hexadecimal un registro, puede tener el contenido 01A5 o bien 23EF, etc. Es decir desde el 0000 hasta el FFFF (en total desde el numero cero al numero 2 elevado a 16 (menos 1 del cero), es decir 65535 o lo que es lo mismo 64 Kbs.
En España, utilizamos la palabra "octeto" en lugar de byte por una mala traduccion del frances que fué quien implementó esta palabra. Al igual, la palabra "ordenador" proviene de "ordinateur" (frances). Y la palabra "cuarteto" como la mitad de un "octeto" (byte).
** Continuemos un poco más...
Pero como estamos limitados a 20 lineas de direcciones, tal y como comentabamos antes, se definió, que la manera de "sumar" esos dos registros fuese, poniendo uno a continuzacion del otro y desplazando el codigo de segmento un "cuarteto" (o "nible") añadiendolo un cero. Por tanto, por ejemplo: (segmento A012, offset 2312)
Segmento: A0120
Offset 2312

Direccion A2432
Cinco "cuartetos" es decir 20 bits, por tanto se podian direccionar 10 elevado a 20 posiciones de memoria: todo un "mega". Imposible pensar en un mega en aquel entonces !!!!
Curiosamente hay que fijarse que la manera de construir esto 20 bites, no es unica. Es deir, la misma solucion, nos podría haber dado por ejemplo:
Segmento A0000
Offset 2432
-
Direccion A2432
(esto ya nos puede empezar a dar los problemas de que con dos direcciones de segmento diferentes, se "alcanzan" posiciones de memoria iguales. Por tanto puedo "machacar" desde una direccion de segmento, otra direccion que "teoricamente" pertenece a "otro" segmento.... malo de cara a programacion ¿no?)
A este modo de funcionamiento, es lo que ahora llamamos modo "real" del procesador y a ese mega, es lo que llamamos memoria "real" del procesador.
Y ademas por definicion, cualquier "compatible" (y los actuales lo són), su CPU, arranca siempre en modo REAL. Es decir, al encender un ordenador actual (PIII por ejemplo), su funcionamiento es "exactamente" igual al funcionamiento del 8086 primitivo. Pero *EXACTAMENTE* igual.
Las CPUs actuales, no han sido más que una evolucion de esta primitiva. Poco despues de nacer el 8086, surgió ya el 80286 capaz de direccionar 16 megas de memoria. Duró muy poco, ya que fué una transición al 80386. El famoso 386 con el cual se conserva actualmente compatibilidad absoluta (excepto una y solo una nueva instruccion en el Pentium). Por tanto la arquitectura actual se la llama tambien arquitectura 386. El 386, tenía (tiene) un nuevo modo de funcionamiento. El modo "protegido", ademas del modo "real" y otro modo hibrido entre ellos, que es el modo "Virtual 8086".
Sepamos simplemente que por compatibilidad hacia abajo, el modo real sigue limitado al famoso "mega" inicial, y el modo protegido ya es capaz de ver toda la memoria.
Igualmente recordemos que los registros generales de la CPU, pasan a ser de 32 bits. (excepto los de segmento que siguen en 16).
Por tanto con una direccion de 32 bits, podemos direccionar 4 gigas de memoria (2 elevado a la 32).
Por compatibilidad, la parte inferior de los 32 bits (los 16 bits inferiores) de cada registro, corresponden a los antiguos registros del 8086.
Los registros generales, podian haberse numerado por ejemplo R0, R1, R2...., tal y como sucede en otras arquitecturas. Pero Intel decidió ponerles "nombre" y ademas, que en ciertas operaciones aritmeticas, fuese obligatorio realizarlos unicamente con ciertos registros y no con todos. Los nombres, fueron tambien tan "raritos" como AX, BX, CX, DX, SI, DI, SP, CS, IP, ES, SS, DS. Y estos son los unicos registros con los que se puede operar.
La evolucion posterior al 80486, y Pentium unicamente trajo consigo la posibilidad de incorporar un chip matematico, el 387, que era capaz de realizar operaciones en coma flotante y de paso incorporar una pequeña pero importantisima cantidad de memoria dentro del procesador: la memoria caché de primer nivel.
Posteriormente en el Pentium, se incorporó el juego de instrucciones MMX. Son unas "macro" instrucciones especiales que son muy repetitivas en todo el tratamiento de graficos y video, y que al implementarlas precisamente como "instruccion" hardware, facilitaban la programacion y la "rapidez" a los programas que eran capaces de utilizarlas. No nos llevemos a engaño: ningun sistema operativo las utiliza y ademas pocos, realmente pocos programas (fundamentalmente los juegos), las utilizan.
El Pentium, solo se distingue de sus predecesores en que tiene una instruccion "más". una sola: el "cpmexchg" es decir: compara dos registros y en funcion de la comparación, los intercambia entre sí. Por compatibilidad hacia abajo, "tampoco" la utilizan los sistemas operativos, ya que si no, tampoco funcionaria dicho sistema en una CPU anterior.
Posterirmente surgió, el Pentium Pro, que basicamente es un pentium optimizado para ejecutar codigo "puro" de 32 bits, pero que se queda ridiculo cuando se le mete codigo de 16. Para solventar esto, nació el PII, que basicamente es un Pentium Pro mejorado para codigo de 16 bits y que ademas se le incorpora de base la tecnologia MMX.
Y por ultimo estamos en el PIII. La unica diferencia es que se amplia el juego de instrucciones MMX a las llamadas MMX avanzadas.
** Internamente existen muchas diferencias para "acelerar" la CPU. En las primeras CPUs, una instruccion maquina, por ejemplo ADD AX,3 (suma 3 al registro general AX), representaba 3 ciclos de reloj. Tengamos presente que un procesador a 25 MHz (de los 386 primitivos), tenía 25 millones de ciclos de reloj por segundo).
Segun han ido evoluvionando, en los Pentium, esta instruccion utiliza un solo ciclo de reloj (y encima los pentium, pueden llegar ya a 500 millones de cilos de reloj por segundo), y ademas, en el pentium, en "ese" ciclo de reloj, se está utilizando tecnica de "pipeline" (como las fotocopiadoras), es decir aunque este procesando una instruccion, está preparando otra - en total hasta 5 simultaneamente. (en una fotocopiadora, mientras se está haciendo una fotocopia, el papel de la siguiente fotocopia, ya está entrando en la maquina para acelerar el proceso. Esto es la tecnica de "pipeline").
Ademas, para acelerar las CPUs, se ha incrementado su memoria caché de primer nivel, y ademas se ha creado un "predictor de saltos" optimizado.
Pensemos que cada vez que un programa efectua un "salto", es decir, realiza una operacion del tipo: "Sí esta fecha es mayor que 80, ejecuta la rutina tal y tal...". Bien, este condicional, es un "salto" en las direcciones de memoria de programa. Cada vez que se ejecuta un salto, lo que hay en la caché de primer nivel, no sirve para nada. Es necesario vaciarla y cargarla con el nuevo codigo de programa que empieza en donde apunta dicho "salto". Por tanto, es necesario "invalidar" la caché y cargar desde la direccion que apunta el "salto" otra vez en la caché. Esto es una operacion "costosa". Solucion: ¿y que tal, si tenemos un circuito inteligente dentro de la CPU que sea capaz de "predecir" un salto, y por tanto se vaya encargando de invalidar la caché y cargarlo con lo que ha "predicho"?. Pues genial, la unica condicion es que acierte lo mas posible. Si no, la CPU se nos viene abajo.
Bueno, pues ahora, Intel tiene un juicio pendiente con la tecnologia ALPHA de Digital, por "piratear" su predictor de saltos en la arquitectura "Alpha". (Aprentemente le juicio no va a realizarse ya que Intel "ha comprado" toda la fabrica de desarrollo de los chips Alpha y su tecnologia hace unos meses.... curioso, tambien ¿no?)
Y otra cosa: fijaros que este predictor de saltos, es importantisimo. Esto es lo que realmente "acelera" una CPU (aparte de la tecnologia "pipeline").
Y la pregunta del millón: ¿la competencia de Intel, tiene suficientemente desarrollada este tipo de tecnologia?. Personalmente opino que nó. No existe ningun indice de velocidad que sea capaz de medirnos esto, y esto, precisamente es lo que sucede en un programa real.

MEMORIA

Poco podemos contar de ella. Es donde se guardan los datos. La evolucion de ella, ha sido unicmanete respecto a la velocidad, y poco más. Variantes: EDO, DIMM, etc..... pero informaticamente, excepto la compatibilidad con nuestra placa madre, y su velocidad, poco mas puede interesarnos.

PLACA MADRE (NORMA DE COMPATIBILIDAD IBM)

Bien, llegado a este punto, y debido a las con-notaciones que tiene actualmente, es necesario introducir un par de chips basicos que se definieron en las placas madre primigenias.
Son:
* El controlador de Interrupciones
* El controlador de DMA
Recordemos, que siguen "exatamente" igual a como se definieron al principio. Tan exactamente igual, que hasta la frecuencia de funcionamiento del chip de DMA sigue siento de unos ridiculos 4 MHz, que quizá fuesen rapidos en su momento, pero que actualmente son ridiculos comparados con el resto de funcionamiento de una placa madre.
(Recordad, entonces que hay que "huir" de los dispositivos que utilicen DMA, simplemente por su lentitud -y bloqueos de la CPU-. Igualmente recordad que la DMA y la UDMA no tienen *nada* que ver. Ya lo iremos viendo más adelante).
Veamos primero, como puede comunicarse la CPU con el resto de dispositivos. Recordad que la CPU, tiene una serie de lineas de "control". Estas son las importantes para la mayoria de los dispositivos.
Veamos las tres "unicas" maneras que tiene la CPU de "enterarse" o "recibir/enviar" datos a un dispositivo. Antes de eso, vamos a introducir que realmente la CPU, solo tiene dos instrucciones llamadas IN y OUT para poner un byte (o maximo, 2 bytes) en un "puerto". Y que un "puerto" no es nada mas que una direccion de destino que tiene algun chip o dispositivo de la placa madre. Un puerto, se direcciona con 2 bytes, es decir existe un maximo de 65535 puertos en un PC.
Bueno, ya ahora ¿como podemos direccionar un dispositivos, al cual sabemos que por "hardware" tiene un determinado (o determinados) puertos.
** Podemos mediante la instruccion IN poner datos en un puerto. La secuencia de datos que estamos poniendo para un determinado hardware, puede ser por ejemplo, una "peticion" de que ese hardware haga algo, o bien le estamos "escribiendo" datos, en vez de ordenes, etc.... Esto depende del dispositivo. Del hardware, en sí,... es decir del "manual" del fabricante de hardware (del manual "tecnico"). Igualmente, mediante la instruccion OUT, podemos "leer" un dato que un dispositivo nos haya dejado en un puerto.
Perfecto!. Pero ahora ¿como nos enteramos que el dispositivo ya tiene un dato preparado para que lo leamos? Bueno, pues dos posiblidades:
1) A lo "bruto". Empezamos enviamos una peticion a un dispositivo (mediante la instruccion IN), y segun el manual del fabricante, ahora ese dispositivo, nos va a responder en un puerto. Pues bien, empezamos a leer (mediante OUT), de ese puerto hasta que exista un dato. Hala!, a lo loco!, OUT->no hay dato?->OUT->no hay dato?->OUT...
Es decir nos metemos en un bucle, sin hacer nada más hasta encontrar el dato que nos dice el manual. Pero.... si por desgracia falla el dispositivo, o hemos programado mal la peticion que realizamos con el IN, pues... nos hemos metido en un "bucle" infinito. La CPU nunca tendrá ese dato y ademas la secuencia programada no se puede interrumpir....... malo, malo.
Una mejora de esta solucion, sería mira unicamente cada cierto tiempo. Se puede hacer que se mire cada "tic" de reloj. Y ese "tic" de reloj interno lo podemos programar (exite tambien un circuito de "timer" para estas cosas). Bueno.... hemos mejorado, pero reconozcamos que estamos perdiendo mucho tiempo en "ver" si el hardware nos responde.
* Este es el modo PIO (Program Input Output)
2) Un poco más sofisticado. Alguien inventó las IRQ (Interrupt Request). Es más logico: le pedimos algo al dispositivo, y nos dedicamos a hacer otras cosas. Cuando el dispositivo tenga el dato, simplemente que nos avise enviando una "interrupcion" (IRQ). Se llama así porque una interrupcion, interrumpe obligatoriamente lo que esté haciendo la CPU y la obliga a tomar alguna accion. Ya veremos cual. (en este caso por ejemplo, leer una vez del correspondiente puerto, porque tenemos la seguridad que ahora sí que hay dato).
Estas interrupciones, pueden ser interrupciones hardware, o bien interrupciones software, las veremos tambien mas adelante.
* Este es el metodo IRQ.
** Y existe un tercer metodo para llevar ciertos tipos de datos desde un dispositivo hardware.
3) Imaginemos que tenemos un "chip" inteligente, y que somos capaces de decirle que una vez que tenga LOS datos (digo "LOS", porque este chip admite programacion a nivel de decirle cuantos queremos), nos los pase a una direccion de memoria prefijada sin necesidad de que la CPU trabaje para nada. Esta es la tecnica DMA. Esta tecnica aparentemente genial tiene un incoveniente (mejor dicho dos). Primero, cuando el chip va a pasar los datos a la memoria, o desde la memoria, para asegurarse que nadie los toca, lo que hace es "desconectar" a la CPU del bus. Y mientras está "desconectada" la CPU no hace nada. Sufre un "parón".
Bueno,... esto no era tan importante en la primera arquitectura del PC, con CPUs a 4,77 MHz, y una DMA rapida (4 MHZ), este tipo de acceso simplificaba la programacion y ademas era mas rapida que las tecnicas IN, OUT (tecnicas PIO). Pero por desgracia y para conservar la compatibilidad la velocidad de la DMA sigue siendo la velocidad primitiva (4 MHZ), y ademas por el mismo motivo, la DMA solo sabe hacer transferencias de 8 y 16 bits simultanemanete (cuando la memoria actual se direcciona en un bus de 32). Y ademas, por desgracia, mientras está haciendo la transferencia "interrumpe" a nuestro flamante PIII, que durante ese tiempo habría podido hacer cientos de miles de operaciones en multitarea.
* Esta es la transferencia DMA.
Bien retomando un poco el inicio de este capitulo, habiamos visto que existia el:
** Controlador programable de interrupciones. ¿y que hace este "bicho"?, pues facil, lo que hace es que cuando recibe una interrupcion, lo primero es enviar una señal a todo el hardware "prohibiendo" que se emitan mas interrupciones, y posteriormente se la comunica a la CPU mediante una linea de control especial (y unica!!). Se le llama "programable" ya que tiene la posibilidad de que si recibe "simultaneamente" mas de una interrupcion, puede ordenararlas por las prioridades que le haya programado el sistema operativo, para irselas dando a la CPU de una en una.
Igualmente recordad, que como este controlador, ha prohibido las interrupciones, una vez que se ha notificado a la CPU de esta intrrupcion y la CPU ha llamado a la rutina de servicio (driver) que controla esta interrupcion, lo primero que tiene que hacer, en cuanto pueda, el "driver" es emitir una instruccion STI, es decir informar a todo el sistema que ya está permitido de nuevo enviar interrupciones.
Fijaros, lo "peligroso" que puede ser un driver mal programado, simplemente porque al programador de turno se le olvida de vez en cuando el emitir una instruccion STI.

IRQs (INTERRUPT REQUEST)

Bueno, pues tambien arrastramos aquí una desgraciada herencia. Solo se definieron 16 IRQs (y ademas, no vectorizadas, por lo que en principio NO pueden compartirse. Ojo!!, he dicho en "principio").
Y ademas de "pocas", pues mal distribuidas. De base, sin tener NADA en el PC, están utilizadas:
IRQ 0 Reloj del Sistema
IRQ 1 Teclado
IRQ 2 Controlador Programable de Interrupciones
IRQ 3 Puerto de Comunicaciones Serie 2
IRQ 4 Puerto de Comunicaciones Serie 1
IRQ 5 LIBRE
IRQ 6 Controlador de Disquetes
IRQ 7 Puerto paralelo.
IRQ 8 Reloj en tiepo real (CMOS de la BIOS)
IRQ 9 LIBRE
IRQ 10 LIBRE
IRQ 11 LIBRE
IRQ 12 LIBRE
IRQ 13 Coprocesador matematico
IRQ 14 Primer controlador IDE de disco duro
IRQ 15 Segundo controlador IDE de disco duro
Fiejmonos que en principio, solo quedan 5 libres. Pero.... si tenemos raton en puerto de ratón, este utilizará la IRQ 12. Quedan 4. Si nuestra placa tiene bus USB, este necesita otra interrupcion, si ademas tenemos bios ACPI, esta necesita otra interrupcion..... y la tarjeta de red, otra, etc,etc,etc,
Mala pinta tiene el asunto como para poder poner nuevas tarjetas ¿no? Vamos a introducir un poco los "buses" del sistema para dialogar con dispositivos. Allí veremos como a pesar de las restricciones que aparecen por las pocas IRQs libres, podemos llegar a un ten con ten con el hardware y el sistema operativo, para poder compartir al menos, alguna interrupcion entre varios dispositivos.
Con esto de los "buses" debemos remitirnos otra vez a la "historia" de la evoluvion de las primeras placas madre y su enlace con las actuales BIOS y el sistema en general.
Con esto ya podremos empezar a preguntarnos otra vez el tema del titulo de estos articulos: "Desde que pulsamos el boton de arranque hasta..."

BUSES

Se conoce por BUS el conjunto de cables por los que circulan los datos de un dispositivo a otro o de un dispositivo a la memoria y/o CPU.
COMUNICACION DE UNA TARJETA CON LA CPU
Solo a modo de recordatorio, recordemos que cualquier tarjeta, tiene, o puede tener para comunicarse con la CPU, un rango de puertos, una(s) posible(s) interrupciones y una(s) posibles DMA(s).
A continuación, veremos como se asignas o no estos, en cada tipo de BUS.

BUS ISA

Empecemos otra vez por las "herencias". El primer bus que se implementó en la arquitectura PC fue el bus ISA. En un principio era de 8 bits y rápidamente evolucionó a 16 bits.
Esto indica que cada vez, en cada ciclo de reloj, era capaz de poner un byte o 2 bytes en el bus. Y... ¿cuantos ciclos de reloj tiene el bus ISA?, pues 8,33 MHz es decir 8 millones de ciclos de reloj. Tenía esta frecuencia y la "sigue" teniendo (por el consabido motivo de compatibilidad descendente -las herencias pesan-).
Es decir el bus ISA con tarjetas de 16 bites, es capaz de soportar un máximo de 16 megas de transferencia por segundo PARA todos los dispositivos. Ridículo en la situación actual.
Y ahora la pregunta del millón: ¿como se comunica con la CPU?.
Bien, existían y siguen existiendo dos posibilidades principales. Esto es general para todas las tarjetas, sean ISA, PCI, etc., pero vamos a empezar a hablar de ello en esta parte.
Un tarjeta, además de los consabidos puertos, IRQ y DMs que pueda pillar (evidentemente de la lista de "libres" que digamos con anterioridad, puede ser que tengo o no tenga su "propia" BIOS.
** En la arquitectura del primer PC, IBM, definió que la memoria principal del PC, podía llegar hasta la dirección hexadecimal A000:0000 (es decir, recordando un poco, hasta el segmento A000, offset 0). Si pasamos esta dirección a Kb´s nos da la increíble capacidad de 640 Kbs ¿os suena esta cifra, no?.
Digo "increíble capacidad", porque en el año 82, era realmente increíble. Igualmente IBM definió las áreas con los segmentos desde A000 a C000 como reservadas para los buferes de vídeo. Definió igualmente el segmento F000 hasta el final del mega para contener la información de la BIOS de la placa madre, y dejo libre las direcciones C000 hasta F000 para posibles BIOS de dispositivos y tarjetas que necesitasen su propia BIOS para funcionar.
Haciendo un mapa de la memora (referida a segmento y sabiendo que cada uno de estos ocupa 64 Kbs), tenemos:
0000
1000
2000
....
9000
A000 Hasta aquí los 640 Kbs primeros de memoria-
B000 Desde A000 hasta aquí el área para el vídeo "gráfico"
C000 Hasta aquí, dos zonas B000 a B7FF y B800 a BFFF
.... Libre
F000 Desde aquí al final para la BIOS del PC.
(nota la zona B000 a B7FF es para la memoria gráfica en modo monocromo y modo texto. La B800 a la BFFF es para la memoria gráfica en como color y modo texto. Lo que normalmente se utiliza en el modo MSDOS puro).
Bine, pues ahora a las BIOS de las tarjetas: la primera tarjeta y totalmente necesaria en nuestro PC es la tarjeta gráfica o de vídeo. Esta tarjeta "siempre" tiene BIOS, y normalmente de 32 Kbs, y normalmente ocupa las direcciones desde C000 a C7FF. No es obligatorio, no está escrito, pero es una norma no escrita que prácticamente siguen todos los fabricantes de tarjetas de vídeo.
Como tal BIOS, incluso es actualizable. Al menos las de las tarjetas "buenas". (Matrox, etc...). Recordad que en principio cualquier bios se puede actualizar y a veces, en las tarjetas gráficas, ha sido obligado para soportar alguna de las normas del ActiveX de Windows).
En principio, ahora ya sabemos las cuatro posibles cosas que puede "tener" una tarjeta:
1) BIOS y por tanto "ocupar" un rango de memoria desde C000 a F000).
2) Puertos
3) IRQs
4) DMAs.
** Alguno de las 4 "cosas" anteriores (o cualquier combinación de ellas) se necesitan para que la tarjeta sirva para algo.
Y ahora ciñéndonos a nuestro caso del BUS ISA. ¿como se asignaban las IRQs, los ports, etc., en aquel entonces?. Recordad que no existía la norma PnP. (Plug and Play, Plug and Pray para otros). Pues mediante switches. Así de fácil. Era responsabilidad nuestra saber que IRQs o ports teníamos libres y mediante switches se configuraba la tarjeta.
Bueno, se configuraba lo que se podía. Cada fabricante escogía al azar un conjunto de puerto y/o IRQs de funcionamiento de su tarjeta y tú lo instalabas. Pero claro, si querías añadir otra tarjeta, era responsabilidad tuya que no "chocasen" entre ellas. Y a lo mejor, el nuevo fabricante, no te daba opciones. Resulta que los posibles puertos de tu nueva tarjeta, ya estaban siendo utilizados por otra. Y a lo mejor teníamos que utilizar una u otra. No podíamos instalar ambas a la vez.
Curioso y duro el tema, ¿no?. Antes de comprar había que leerse con lupa que IRQs podía utilizar y que puertos y que DMAs y que direcciones podía pillar la posible BIOS. Llevar en el bolsillo, los que ya tenias utilizados con las otras placas, y ver, antes, si era posible instalar esa nueva.....
Bien una vez instalada y asignadas (a mano) las IRQs y ports, etc., pues ya teníamos nuestra flamante tarjeta. Pero ya nos teníamos que olvidar de la IRQ o de la DMA "sacrificada".
Ahora su entrada en funcionamiento era como siempre. Un driver se encargaba de su funcionamiento y dialogaba con ella con las técnicas que hemos comentado anteriormente PIO, DMA e IRQ.
(como nota curiosa, todas las bios empiezan por los caracteres hexadecimales AA55. Las rutinas llamadas de POST de la bios de nuestro PC, lo que hacen es recorrese al encender el PC, la memoria comprendida entre C000 y F000, en bloques de 2 Kbs en 2 Kbs y ver si allí se encuentra esos caracteres hexadecimales. Si se encuentra, ya sabe que es una BIOS)
(y como otra nota curiosa, recordad que antes hemos hablado de tarjetas ISA de 8 bits y 16 bits. Esto implica que hay tarjetas "mas cortas" que lo que es el bus en donde se pinchan. No pasa nada. Pueden pincharse ya que el bus ISA actual soporta ambos formatos de tarjeta).

BUS PCI

Surgió mucho mas tarde. Es relativamente joven (vamos a saltarnos aquí una serie de buses intermedios -EISA y VESA- que ya carecen de sentido).
La norma PCI, indica que un bus PCI es únicamente de 4 slots (pero permite saltarse la norma e instalar mas slots en grupos de hasta 4 más, mediante un "bridge" -puente- "PCI to PCI").
Igualmente la norma define al bus PCI como un bus de 32 bites a 33 Mhz. Esto implica una velocidad de transferencia de 4 * 33 = 133 Megas por segundo. Aquí la velocidad ya empieza a ser apreciable frente al bus ISA.
Igualmente, define las IRQs que pueden utilizarse como IRQs de dos tipos: "level" (por nivel) y "edge" (esquinado). Precisamente este ultimo tipo: "edge", es el que permitirá cuando surgió la norma PnP, el poder compartir una IRQ con mas de un dispositivo!... ya era hora ¿no?. Lo veremos en cuanto tengamos definidos todos los buses.
Esto ultimo, ya empieza a parecer un poco mas serio. Ya nos empieza a abrir las posibilidades del PC un poco más del "corset" que teníamos hasta ese momento. Pero de paso, empieza a complicarle la vida a la BIOS de la placa madre. En ese momento, fue cuando las BIOS, pasaron de ser una cosa "tonta" y prácticamente "la misma" para todas las placas madre, a tener su "propia vida" y ser capaz de identificar los dispositivos. Complicaron la existencia a los fabricantes de BIOS....

BUS AGP

Unicamente consta de 1 slot, y está pensado para gráficos a alta velocidad. No es importante llevar un chequeo de la integridad de los bites en este bus (ya que si se pierde un bit de un gráfico en un instante dado, ni se nota). Lo único importante aquí es la velocidad. Existen varios estándares 1X, 2X, 4X Y en general se va a llegar a utilizar la misma frecuencia que el BUS de la placa madre.
Con esto, actualmente se consiguen tasas de transferencia de 500 Megas por segundo.
Solo es importante aquí un matiz:
*) El BUS AGP se inicializa "después" del BUS PCI. Esto para respetar al pie de la letra la norma PCI. Por tanto, si tenemos dos tarjetas gráficas, una PCI y otra AGP, siempre será la tarjeta primaria la PCI (teóricamente más lenta que la AGP).
Pero como las normas están hechas precisamente para saltárselas, pues ciertos fabricantes de bios, empezaron a poner la pregunta "Primary AGP/PCI o PCI/AGP" en la configuración de la bios para saltarse esta secuencia. Pero repito: no es un estándar, por tanto nuestra BIOS, pudiera no tener esa opción.

PLUG AND PLAY

Bien, hasta aquí hemos visto los posibles "buses" incorporados en nuestra placa madre. Queda todavia por ver el bus SCSI. Debido a que este ultimo, no es nada más que una tarjeta SCSI de la cual salen un nuevo bus, podemos abordar el tema de Plug and Play en este momento y dejar para mas adelante el SCSI.
Hasta ahora, las tarjetas que hemos visto, había que configurarlas "a mano". Teniamos que asignarlas una IRQ de la lista que teniamos "libre" (recordad que en principio solo tenemos la IRQ 5, 9, 10, y 11 -y puede que la 12 dependiendo si en la bios se la hemos asignado o nó a un posible ratón en puerto de ratón-)
Evidentemente este conjunto de IRQs libres empieza a quedarse excaso, maxime cuando en la actualizada todo el mundo tiene tarjeta de sonido la cual nos va a pillar otra IRQ, y probablemente la tarjeta de video nos va a solicitar otra. Evidentemente entonces ¿para que queremos slots libres y para que otros dispositivos, si aparentemente no vamos a poder instalarlos?.
** Bueno, algo "nos salva". Recordad que habiamos comentado que el bus PCI fué diseñado para poder "pillar" las IRQs de dos modos "level" y "edge". En principio entonces, el bus PCI (y AGP), ha sido diseñado para poder compartir interrupciones. Ahora solo queda el definir el como compartirlas.
Igualmente debemos recordar que "por diseño" el bus ISA no puede compartir las IRQs y ademas, debemos recordar que las IRQs asignadas a los puertos serie, paralelo y controladores de disco y disquete (es decir IRQ 3, 4, 6, 7, 14, y 15) y las del sistema (IRQ 0, 1, 2, 8, 13) tampoco pueden compartirse. Y si además tenemos raton en puerto de ratón, o nuestra bios se lo asigna SIEMPRE a un posible puerto de ratón, la IRQ 12 *tampoco* podrá compartirse.
* Igulamente quiero resaltar que en las IRQs "fijas" hay alguna matización:
a) Los puertos COM1 y COM2 /serie), necesitan una IRQ. Lo "normal" es que la bios le dé la 4 y la 3 respectivamente. Pero en ciertas bios PnP, la propia bios puede decidir (o puede ser configurada) para que le dé otra. Si el puerto no tiene IRQ no funcionará. Igualmente si el puerto tiene conflicto con la IRQ porque la "pilla" otro dispositivo, tampoco funcionará.
b) La IRQ del puerto paralelo (normalmente la 7, pero estamos en un caso similar al anterior, con respecto a que la bios puede darle otra), puede ser que no sea necesaría. En win95 / win98, "siempre" la bios le asigna una IRQ y por tanto windows la utiliza (y los drivers de impresion la necesitan). En Windows NT (y windows 2000), esto no es necesario. NT y 2000 "pasan" de la bios, y los drivers de impresion no lo necesitan. Lo gestionan mediante tecnica de "pool" y liberan al sistema una IRQ que puede ser preciosa.
c) La IRQ 12 es ISA si está asignada a puerto de raton. Si en nuestro PC tenemos el raton en un puerto serie, lo normal es que entremos en la BIOS y le digamos que no asigne la IRQ al puerto de ratón. Hay ciertas bios que son capaces de detectar esta situacion y "liberan" automaticamente dicha IRQ. Pero esto no es lo normal y por tanto somos nosotros responsables de informrle a la propia bios.
** He repetido los conceptos anteriores que ya habiamos visto para tenerlos frescos en este momento. Vamos a para entonces a hablar realmente del PnP.
En windows 95, Microsoft preparó una especificacion del PnP. No vamos a entrar en detalles tecnicos, unicamente conceptuales. En resumen, la especificacion PnP es la siguiente:
1) Cada fabricante de perifericos PnP tiene asignado un numero identificativo unico en el mundo.
2) Los fabricantes son responsables de "numerar" sus dispositivos. Es decr una tarjeta suya tedrá en numero 1, otra el 2, etc. Numeros UNICOS.
3) Los dispositivos se agrupan por "funcionalidades" (dispositivos de "Mass Storage" para los de acceso a disco, "Video" para los de video, "Multimedia Device" para los multimedia, etc.... es decir hay una clasificacion.
4) El conjunto de estas dos caracteristicas definidas en el punto 1) y 2) forma un "string" (cadena de caracteres) identificativo "unico" para un dispositivo. Por ejemplo de la forma: VEN_8086&DEV_7110. Este ejemplo corresponde al fabricante INTEL (VEN es abreviatura de "vendor") e Intel tiene curiosamente el "numero" identificativo de fabricante el 8086 (igual que su primera CPU "compatible"). DEV indica "device" (dispositivo) y el 7110 es un numero interno de Intel con el cual identifica de manera unica su dispositivo (el que sea, que en este caso en particular es el: Intel 82371EB PCI to ISA bridge (ISA mode)).
5) Existe una "norma" estandar para preguntar al dispositivo que IRQs le "gustaría" y "puede" utilizar (tanto en plan exclusivo como "compartidas", si fuesen dispositivos PCI). Y cuantas "Necesita". Lo mismo para los puertos y lo mismo para la DMA. Es decir, preguntandole al dispositivo, este es capaz de informarnos que quiere y que posibilidades tiene.
6) La BIOS en inicializacion, es la responsable de preguntarle a los dispositivos esto.
7) La propia BIOS, es "lista". En principio "ve" que dispositivos tiene la placa madre y le dá las IRQs del sitema FIJAS que hemos comentado antes. Realmente la secuencia que sigue es:
7.1) Asigna las IRQs fijas a los elementos incorporados en la placa madre. (puertos serie, paralelo, raton, etc)
7.2) Mira en la tabla (que es modificable por nosotros entrando en la bios), a ver si alguna IRQ, nosotros la hemos bloqueado (es decir, en la bios le hemos marcado, por el motivo que sea, que la IRQ 10, por ejemplo, es una IRQ ISA o "Legacy ISA"). Si la tenemos marcada así, la ignora en su lista de asignacion a dispositivos PnP.
7.3) En este momento tiene la bios una linsta de IRQs que le quedan librs.
7.4) Se recorre el bus ISA y "pregunta" a cada tarjeta sí es o nó, PnP. Y si es PnP que necesita y que posibilidades alternativas le dá. Posteriormente selecciona una IRQ de "su" lista de "libres" y le informa al dispositivo de que esa IRQ es para él. Y SOLO PARA él. (Recordad que la IRQ ISA no se pueden compartir. Por tanto se la dá a un dispositivo y la borra de su lista de IRQs libre).
7.5) Cuando termina con el bus ISA, empieza con el bus PCI y AGP. Se recorre igualmente estos buses preguntando a los dispositivos lo mismo con respecto a las IRQs. Y ahora les va asignando las libres. Como las IRQs de las PCI, normalmente son "edge", es decir, se pueden compartir, cuando la bios termina con su "lista" de libres, vuelve a asignar otra vez el comienzo de su lista al dispositivo siguiente. Es decir "comparte la IRQ).
8) Lo anterior, no implica que el dispositivo funcione. Implica unicamente que ahora el dispositivo "sabe" y la bios "sabe", que "debe" utilizar. Pero ahora queda que el sistema operativo lo soporte. Este es el caso de w95 / w98. El MsDOS y el w3.1 *no* soportan IRQs compartidas. Y en cambio en NT y el windows 2000, debido a que no hacen ni caso de la bios, vuelven a reprogramar a su gusto todas las tarjetas para asignarlas lo que mas le interese a cada driver de dispositivo.

RESUMEN Y POSIBLE USO POR NUESTRA PARTE

Y ahora ¿que posible uso, o que posibles conclusiones debemos sacar de lo anterior?....
** Bien, en principo, y lo primero es saber si las tarjetas que tenemos o vamos a añadir a nuestro PC (las ISA), son o no son PnP. Sí no son PnP y ademas no tenemos ningun "jumper" para que lo sean, debemos ver que IRQ va a necesitar (mirando el manual nos dirá cuales "puede", y ademas si tenemos o no que poner algun jumper para esto).
Una vez identificada la IRQ libre que queremos para esa tarjeta, debemos entrar en la pantalla de la BIOS, en la parte de PnP y a dicha IRQ, ponerle "ISA" o "Legacy ISA". Con esto unicamente conseguimos que la bios NO se la asigne a ninguna tarjeta.
Curiosamente tampoco se la asigna a la nuestra. Es responsabilidad luego del driver (o del propio windows), el asignarsela, por lo cual "puede" que tengamos que informarle al sistema operativo (windows) en las "propiedades del sistema" que dicho dispositivo utiliza esa IRQ para que a su vez windows se lo informa a "su" driver.
** Gracias a Dios, de estas tarjetas, practicamente no quedan.... (a excepcion de algun modem interno ISA).
IMPORTANTE: Igualmente, si entre los dispositivos PCI, vemos que la bios (y windows) asignan una determinada IRQ a un dispositivo, y por el motivo que sea, no nos gusta, o nos causa problemas y queremos que le asigne "otra" de las posibles asignadas al bus PCI, es facil. Abrimos la maquina y cambiamos a la tarjeta de "slot". Recordad que la bios asigna su lista de libres recorirendose el bus PCI. Por tanto cambiandola de slot se la encontrará en otra posicioon y "seguramente" le asignará otra IRQ. (Realmente aquí intervienen más factores de tipo tecnico, ya que existen las denominadas IRQ#A, IRQ#B, IRQ#C e IRQ#D. Estas son las que realmente solicita un dispositivo y el proio bus PCI las tiene "entrelazadas" y juega con estas IRQs "logicas" y la lista de IRQs libres. Pero este es un tema "tecnico" que se sale del alcance que quiero dar a estos documentos)
** Bien hasta aquí hemos visto una "nueva" tarea que realiza la bios "Desde que pulsamos el voton de encendido"...... y antes de empezar a cargar todavia el sistema operativo.
BUS SCSI Y SUS DISPOSITIVOS
Como introfuccion, debo comentar que la tecnologia SCSI siempre es la puntera (y la mas cara). Los discos SCSI siempre son mejores que los IDE. Y mucho mas rapidos, pero evidentemente a igualdad de "tecnologia". Me explico, todo lo "puntero" siempre nace en los dispositivos SCSI. Posteriormente los IDE (uno o dos años mas tarde) los alcanzan. Hagamonos una idea: los discos a 7200 revoluciones, eran normales hace 2 años en SCSI. Ahora se están introduciendo en los discos IDE de ultima generacion. Actualmente el SCSI tiene ya discos de 10.000 revoluciones y con caché interna de 4 megas. Los IDe todavia ni sueñan con esto.
SCSI=Small Computer System Interface
Bueno, pues una de las tarjetas que podemos pinchar a la placa madre, son las tarjetas SCSI (se pronuncia "escasi"). Estás tarjetas lo que hacen es definir un nuevo "bus". Estas tarjetas pueden ser PCI o ISA (casi no quedan de estas), e incluso hay placas madre que ya las llevan incorporadas. Pero en este ultimo caso, a todos los efectos, es como si fuese una tarjeta independiente.
Por firmar un BUS, desde la tarjeta scsi, podemos colocar uno o dos cables que van a ir a uno o varios dispositivos.
Veamos: un bus scsi no es nada mas que un cable. Y de este cuelgan los dispositivos. Y uno de los posibles dispositivos es precisamente la tarjeta SCSI. Si salen dos cables, (por ejemplo uno interno y uno externo), la tarjeta scsi está en el "medio" del BUS. Si unicamente tenemos un cable, la tarjeta está en uno de los "extremos" del bus.
Es decir, teoricamente podemos tener:
1) D-D-DT-D
2) T-D-DD-D
(he representado por "D" cualquier dispositivo scsi (disco, CDROM, scanner, etc) y por "T" la propia tarjeta).
En el caso 1) se supone que tenemos dos cables que salen de la tarjeta (uno interno y otro externo) con dispositivos. En el caso 2) Solo tenemos dispositivos en uno de los cables (dá igual).
IMPORTANTE: El BUS SCSI debe estar "terminado" por *ambos* extremos. Esto es *OBLIGATORIO*, son propiedades electricas del dispositivo y si no prestamos atencion a esto, en cualquier momento puede suceder un malfunionamiento de bus, o que uno de los dispositivos no sea reconocido, etc. Mas adelante veremos que quiere decir "terminado".
Vamos ahora a ver que es lo que tiene cualquier dispositivos SCSI. Previamente, debemos saber que cada dispositivos SCSI (incluso la misma tarjeta, ya que como hemos dicho anteriormente es un dispositivo más), tiene que tener un numero UNICO en el BUS.
Este numero debe ser un numero de 0 a 7 (luego veremos las ampliaciones del bus scsi). Este numero se asigna en los dispositivos. Todos los dispositivos SCSI, tienen mediante "jumpers" la posibilidad de asignarle un numero. Este numero se asigna en binario. Veamos como:
* Normalmente hay tres jumper numerado 0, 1 y 2
* Posibilidades (S=jumper colocado, N=no colocado):
2 1 0
- - -
N N N Identificacion cero (ID 0)
N N S ID=1
N S N ID=2
N S S ID=3
S N N ID=4
S N S ID=5
S S N ID=6
S S S ID=7
** Cada dispositivo un numero UNICO en el bus.
Y ademas hemos dicho que la tarjeta es un dispositivo más. Recordar ademas que las tarjetas SCSI, realmente son realmente una CPU especial y que ademas tiene su propia BIOS. Por tener su propia BIOS es configurable, por ejemplo en las tarjetas Adaptec, se puede entrar en dicha bios pulsando CTRL-A cuando se está inicializando la tarjeta.
Entonces ¿como se asigna el numero "ID" a la tarjeta?. Facil: en las "antiguas" tarjetas, normalmente por jumpers como los anteriores, y en las tarjetas actuales, entrando en su BIOS y asignandoselo. Por defecto la tarjeta SCSI siempre viene con el ID=7.
Estos numeritos, no solo son para deifrenciar cada dispositivo, sino que ademas nos determinan la "prioridad" del dispositivo. La norma SCSI define que el dispositivo de maxima prioridad es el ID 7, y luego va disminuyendo la prioridad desde el ID 6 hasta por fin el ID 0. Este es el motivo por el cual la tarjeta scsi, viene siempre de fabrica con el ID 7. Evidentemente la tarjeta SCSI debe ser, por logica, la que tiene mayor prioridad en el BUS.
** Otra caracteristica de la que hemos hablado anteriormente es la "terminacion". Y habiamos comentado que el bus SCSI debe estar "terminado" en ambos sentidos (AMBOS).
¿que es la terminación?: pues no es nada mas que una "resistencia" electrica que cierra el extremo del bus.
Normalmente cada dispositivo "tiene" esta resistencia internamente. La manera de "activarla", es decir la manera de decirle a un dispositivo que él es el último del bus y por tanto "debe" tener la resistencia colocada, es mediante un jumper (este jumper, suele denominarse "TE" -termination enabled-).
Es decir cada disco o dispositivo que vayamos a conectar, al menos tiene 4 jumpers. Los 3 anteriores para asignarle el ID y uno mas marcado como "TE". Unicamente el *ultimo* dispositivo en cada parte del bus, debe llevar el "TE" activo. CUIDADO con esto. De fabrica TODOS los dispositivos que copremos suelen tener el "TE" activo.
¿Y la propia tarjeta?. En el caso 1) que hemos visto anteriormente NO debe estar "terminada" y en caso 2), bien sea externo o interno el cable con dispositivos, la tarjeta debe estar "terminada" siempre. Entonces la terminacion, depende del tipo de tarjeta: en algunas (viejas, o incorporadas en la propia placa madre del PC), puede ser un jumper. En las actuales, se define tambien en la propia BIOS de la tarjeta ademas de asignarle allí el numero de ID.
* Algunos de los dispositivos "viejos", en vez de tener el "jumper" TE, lo que fisicamente tienen es una fila (o dos) de resistencias ("resistor"). La manera de quitar la "terminacion" es eliminar fisicamente las resistencias.
* Igualmente, existen "tapones", que no son mas que un pequeño conector que se pone al final del cable, en uno o en ambos extremos y que realmente son resistencias. Hacen de tapon. Esto es muy util, mi costunbre, segun compro un dispositivo scsi, es quitarle siempre el jumper TE, y finalizar *siempre* los buses con estos "tapones". Así tengo la seguridad que no se me olvidará.
La velocidad "base" de tranferencia del bus scsi es 10 megabytes en total en todo el bus. El cable es un cable de 50 hilos.
El bus que hemos definido hasta aquí es el llamado NARROW SCSI. Y ya realmente es de los "viejos".

ULTRA SCSI

Es el mismo bus (aparentemente), con un chip especial que permite una comunicacion al doble de velocidad. Por tanto soporta 20 megabytes en el bus. Los dispositivos deben soportar negociacion "ultra". Practicamente todos los actuales lo soportan.

WIDE SCSI

Cambia el bus. En vez de 50 hilos es de 68 y soporta 16 dispositivos, y por tanto los dispositivos en vez de 3 jumpers para asignar el numero, tienen 4, para poder asignar un numero del 0 al 15. Por compatibilidad el orden de prioridad sigue siendo del 7 al cero y luego con "menor" prioridad todavia el 15, 14, 13,.....,8.
Debido a que el cable es de 68 hilos, fisicamente los dispositivos son diferentes. Su conector es diferente.
Estas tarjetas, lo normal es que uno de los conectores (bien el externo o bien el interno, o incluso hay veces en que ambos son internos), sea de 50 hilos y el otro de 68. Así los dispositivos "normales" los conectamos al de 50, y los "wide" al de 68.

ULTRA-WIDE SCSI

Pues una combinacion de ambos anteriores. Evidentemente duplica la velocidad, por lo que la velocidad del bus llega a 40 megabytes por segundo.

ULTRA 2 SCSI o ULTRA 2 WIDE SCSI

Es la ultima tecnologia, llamada tambien LVD (Low Voltage Diferential). Normalmente estas tarjetas son 2 buses en 3 conectores. Dis de los conectores forman un bus normalito ULTRA-WIDE de los comentados anteriormente y con los terminadores conectados tal y como hemos comentado.
Y ahora el canal LVD. Este canal es el "otro" bus. Uno de los extrmos sigue siendo la tarjeta. Por tano, una tarjeta ULTRA 2 con tres conectores, tiene dos posibles terminadores. Uno para la parte normal ULTRA-WIDE y otro para la parte LVD (por tanto este ultimo debe estar siempre "terminado").
Los dispositivos LVD (discos), son especiales. En un bus LVD todos los dispositivos que enchufemos "deben" ser obligatoriamente LVD. Sino lo hacemos así, TODO el bus se comportará como un bus NORMAL. En este caso, los discos LVD, tambien tienen un jumper que se debe activar, para decirle que debe comportarse como un disco normal y no como un disco ULTRA 2. Por tanto en este caso, existen dos posibilidades:
1) Todos los dispositivos son LVD en ese bus. Entonces NINGUNO de los dispositivos debe tener activo el jumper de "normal". Y el bus debe terminarse "externamente" (al final, no puede ser que uno de los dispositivos haga de terminador), mediante una resistencia especial llamada resistenca "activa" o "terminador activo".
2) Alguno de los dispositivos en ese bus NO es LVD. Entonces el resto de dispositivos LVD, deben tener al jumper de "no LVD" o bien "SE" conectado. En este caso, en dichos discos ya puede activarse el jumper "TE" y por tanto, el ultimo debe tenerlo activo. Sí el ultimo no lo tueviese activo, el bus debe terminarse tambien con una resistencia externa. Pero debe ser una resistencia "pasiva" o "terminacion pasiva" en este caso. Es decir una resistencia normalita como si fuese un bus ULTRA-WIDE de los citados anteriormente.
La velocidad de este bus soportada es de 80 megabytes por segundo.
*** Y por ultimo comentar que actualmente hay tarjetas y dispositivos que soportan la tecnologia SCAM. Esta tecnologia es simplemente que los dispositivos negocian (o pueden negociar) su ID con la tarjeta y la propia tarjeta puede cambiarselo automaticamente. Con esto nos evitamos el "engorro" de tener que asignar un numero a cada dispositivo, pero perdemos la flexibilidad de poder asignar nosotros mismos las prioridades, ya que exi ste la posibilidad de que la tarjeta nos lo cambie de prioridad. Particularmente yo desactivo dicha opcion en la bios de la tarjeta y lo gestiono "a mano".
*** Y ya por ultimo, recordar que sino tenemos discos IDE y queremos que uno de los discos de nuestra tarjeta SCSI sea el disco de "boot", la norma SCSI dice que este disco debe tener el ID 0 o el ID 1. Esta es la norma, pero en las tarjetas actuales, esto tambien es configurable mediante su bios.

OTROS DISPOSITIVOS EN LA PLACA MADRE: CONTROLADOR IDE

Este dispositivo, historicamente era una tarjeta "aparte" que se pinchaba en un slot ISA. Despues de aparecer el bus PCI dichas tarjetas empezaron a ser PCI y en la actualidad, practicamente en todas las placas madre vienen incorporadas.
** Se le llama controlador IDE, pero realmente es "la mitad" del controlador. Me explico: la electronica de los actuales discos duros lleva incorporada la otra mitad.
Recordemos que un controlador IDE soporta dos "buses" o "canales" IDE. Cada canal IDE unicamente puede soportar a su vez dos dispositivos: dicocs dura, disco y CD, o dos CDs. Por tanto estamos limitados a un maximo de 4 dispositivos IDE.
Cada dispositivo debe estar identificado dentro del mismo "canal" IDE como "master" o como "slave". Esto se configura mediante un switch o jumper en el propio disco del le dice si es "MA" (master) o "SL" (esclavo). Sí solo tenemos un dispositivo en un canal IDE, este debe ser "master".
Por tanto existen dos canales IDE (primario y secundario), y cada uno de ellos con dos dispositivos (uno master y otro slave).
** Cada canal IDE, "pilla" una IRQ del sistema. El canal primario, la IRQ 14 y el secundario la IRQ 15.
Es importante la matizacion anterior, ya que si unicamente tenemos utilizado un canal ¿no podriamos utilizar la IRQ 15 para otra cosa? Pues efectivamente: sí. La manera de decirle a la bios que deje libre la IRQ 15 porque no vamos a utilizarla en la controladora IDE, es precisamente entrar en las pantallas de la bios y decirle que *no* tenemos canal IDE secundario.
Esto ultimo, puede que a windows no le guste y nos mrque una admiracion amarilla en el canal IDE secundario. No es problematico y no pasa nada. Todo funcionará correctamente. De todas maneras, si esto nos pasase y queremos que wndows no nos informe de esta "incidencia", en la mayoria de los controladores actuales (drivers de windows), se puede entrar en al Administrador de dispositivos y en la controladora existe una opcion (en casi todas) para decirle lo mismo que le hemos dicho a la bios: que se utiliza solo el canal primario. Con esto dejaremos ya de ver la admiracion amarilla. Pero repito, esto no influye en el rendimiento ni en el comportamiento de windows.

VELOCIDAD DE LOS DISPOSITIVOS IDE

Siempre hemos oido hablar de las velocidades del disco duro, de la DMA, del modo PIO 4, de las UDMA, y siempre nos han querido vender las cosas con frases majestuosas: soporta UDMA 33 y nosotros nos quedamos con la boca abierta y luego incluso vamos "fardando" de rapidez. Pero ¿realmente sabemos lo que nos han vendido? ¿realmente es tan rapido?
Tenemos varios componentes que influyen desde que un sector de datos está en el dsico hasta que ese sector de datos, está en la memoria principal de nuestro PC.
Por una parte tenemos la verdadera velocidad del disco duro. Esta velocidad es unica. Es un componente mecanico y por tanto unicamente depende de la velocidad de rotación del disco (actualemtne en los IDE, hay velocidades de 4200, 5400 y 7200 revoluciones por segundo).
Cuando queremos leer un sector de datos, lo peor que nos puede pasar es que el sectar, acabe de pasar por debajo de la cabeza de lectura. Si es así, tendremos que esperar una revolucion completa del disco hasta que vuelva a pasar por debajo de la cabeza de lectura. Lo mejor que puede pasar es que esté justo antes de la cabeza lectora. En este caso se leera inmediatamente. Y estadisticamente la media de los sectores que queremos leer, estarán a la "mitad" de distancia de una revolucion completa del disco. Esto es lo que se define como "average", y realmente solo depende de la velocidad de rotacion. A mas velocidad, mas rapido será el disco (y mas caro).
No tenemos en cuenta aquí tambien otro factor. Si la cabeza lectora no está en el cilindro correspondiente al sector que queremos leer, el brazo que soporta a la cabeza lectora, tendrá que hacer un moviemiento transversal de posicionamiento a ese cilindro. Esto es lo que se denomina "seek".
Por otra parte, pensemos, que la "mitad" de las controladoras actuales, estan integradas dentro de la electronica del disco duro. Y allí es donde podemos tener el verdadero cuello de botella (otro más), ya que a circuiteria y la logica del propio disco, lo mas normal, cuando le solicitamos un sector, es que "lea" más sectores y se lo pase a la controladora (a un mini-caché) por si acaso inmediatamente despues solicitamos otro sector contiguo (suele ser bastante normal que nos interese leer mas de un sector: 512 bytes, incluso el propio sistema operativo, se organiza en cluster que siempre son mayores de ese tamaño, por tanto siempre se le solicitará al disco más de un sector en diversas peticiones sucesivas).
Pasemos a ver ahora como van los datos de la controladora a la memoria.

DE LA CONTROLADORA A LA MEMORIA

Se pueden utilizar 4 metodos diferentes.
* Programmed I/O (PIO)
* Memory Mapped I/O
* DMA
* Busmaster DMA

PROGRAMMED I/O

En el "programmed I/O" la transferencia de datos entre controladora y memoria principal se desarrolla a traves de los diferentes ports de I/O (Entrada / Salida) de la controladora que tambien sirven para la transmision de comandos. En el lado del software, se encuentra un programa correspondiente con los comandos de lenguaje maquina IN y OUT. Pero esto significa que cada BYTE del disco, debe pasar por la CPU despues de ejecutar dicho comando. Uno a uno (o dos a dos, como maximo)-
En este caso, la tasa de transferencia de datos no solo está limitado por los valores maximos de velocidad del bus, sino tambien por el rendimiento de la CPU, y evidentemente en un sistema multitarea, la CPU puede que llegue a estar demasiado ocupada preocupandose del acceso a los datos.

MEMORY MAPPED I/O

La CPU podría recoger los datos de la controladora de una manera mas rapida, si esta los dejase en una zona de memoria fija. En este caso, la cpu puede trabajar mucho mas rapidamente con estos datos ya que puede moverlos mediante las intrcciones MOV que trabajan mas rapidamente que los accesos mediante IN y OUT.
De esta manera, en las actuales CPUs se puede obtener un mayor rendimiento. Pero por desgracia, las controladoras no "saben" de memoria virtual, no sbaen del modo protegiod (protected mode) de la CPU. Unicamente conocen la memoria real. Esto causa un problema muy serio de rendimiento en los actuales sistemas operativos basados en las tecnicas de memoria virtual (frente al antiguo MSDOS que operaba con memoria real).

DMA

Más conocido que los dos procedimientos anteriores, es la transferencia DMA, que en los PCs se soporta en un chip DMA propio. Este chip, debe posibilitar la transferencia de datos desde un dispositivo (disco duro, disquete, CDROM, etc..) a la memoria y evitar con ello, el largo camino a traves de la CPU.
DMA = Direct Memory Access.
La idea es buena, ya que el software solo debe indicarle al controlador DMA, cuantos bytes se han de transportar de donde adonde. Pero esto en el PC se realizó de una manera bastante chapucera, ya que el controlador de DMA que emplean los PCs, no solo es bastante inflexible (lo que aún se le podría perdonar), sino sobre todo lento. Tan lento, que aún el acceso según el procedimiento PIO en el peor de los casos es mas rapido a partir de los antiguos 486. Ya que como anacronismo en la historia de los PCs, el controlador DMA en los AT y sus sucesores, siguió haciendose funcionar a 4 MHz, en donde los primeros PCs ya alcanzaban los 4,77 MHz. En ellos, en los antiguos, la transferencia DMA es mas rapida que el PIO. De esta forma no se puede alcanzar mas de 2 Mb /segundo.
Por ello, la mayoria de los discos modernos ya no controlan segun el metodo DMA

BUSMASTER DMA

Otra forma del Direct Memory Access es el Busmaster DMA, pero este no tiene nada que ver con el chip de DMA integrado en la placa madre, y del acual hemos hablado anteriormente.
En este tipo de acceso, la controladora del disco duro, desconecta a la CPU del BUS y transfiere los datos con ayuda de un controlador Busmaster DMA con control propio.
De esta manera se pueden conseguir tasas de transferencia de has 8 mb/seg. Busmaster DMA solo se empleaba en el caso de controladoras SCSI.

UDMA

No lo he mencionado al principio del articulo, debido a que no es nada mas que una variante del Busmaster DMA, implementada en controladoras IDE y aumentada su velocidad de transferencia a 16 MB/s. Posteriormente surgió la UDMA 2 (o UDMA 33) hasta 33 megas/s. Y actualmente ya se estan vendiendo placas madre con controladoras incorporadas a 66 MB/seg.

NO LLEVARSE A ENGAÑO

No hay que llevarse a engaño con todo lo anterior. En las controladoras / discos actuales, ambas cosas forman un TODO. Es decir, no solo el chip de la placa madre debe soportar esa velocidad, sino que tambien el propio dispositivo (la electronica del propio disco duro), debe soportarla. Es decir un disco UDMA actual (UDMA 2) por mucho que lo pongamos en una placa madre con controladora UDMA 66, no dará mas rendimiento que el que daba en una UDMA 33.

GOODBYE AL MODO PROTEGIDO

Como colofón de esto, voy a hacer unos pequeños comentarios de diseño del propio nucleo del sistema operativo, en relacion con los metodos de acceso anterior.
Recordad que existen dos modos de funcionamiento del procesador. El modo "real" que es el modo en MSDOS puro y duro, con el limite de 640 Ks en memoria contigua y el limite de 1 mega + 64 Kb para todas las direcciones reales. Y el modo "protegido", en donde se tiene acceso a toda la memoria de la maquina, y es el modo en que funciona windows, linux, OS2, etc..
Las formas vistas antes de transferencia DMA, solo se pueden utilizar en el mundo del modo Real (Real-Mode), y llevan al procesador a un "cuelgue" si no se toman las medidas adecuadas.
El problema es la gestion de memoria virtual, mnejada por la Memory-Management-Unit (MMU) de la CPU. Es el encargado de formal las direcciones virtuales para los programas que trabajan en modo protegido y proyectarlas sobre las direcciones verdaderas (fisicas) en la memoria.
Pero de esto, los programas no se enteran, ya que nunca entran en contacto con las direcciones fisicas, y el controlador de DMA no es una excepción: tampoco se entera, ya que no tiene acceso a la MMU de la CPU.
Esta problematica, no solo suerge en windows y otros sistemas en modo protegido. Tambien afecta al MSDOS cuando este está trabajando o conmuta a modo Virtual-86 (el tercer modo de funcionamiento del procesador). Por ejemplo en cuanto instalamos el EMM386.EXE en el config.sys que sirve para la emulacion de la memoria expandida y que depende de la gestion de la memoria virtual del procesador.
Solo hay un modo de evitarlo, y es la vigilancia de la controladora DMA. Esto es posible en modo protegido mediante el control de los ports I/O (virtualizacion del hardware). Así por ejemplo, windows instalar un Control-Monitor virtual en el fondo (en la capa mas baja), que vigila la programacion del controlador DMA, mediante la BIOS o un programa, y que convierte las direcciones virtuales indicadas en direcciones fisicas verdaderas antes de que se escriban los registros del controlador DMA (antes que se programe una lectura/escritura)

RESTO DE DISPOSITIVOS INCORPORADOS EN PLACA MADRE

En las placas madres actuales, tendermos incorporados:
1) Puertos serie (COM1 y COM2)
2) Puerto paralelo
3) Puerto de raton
4) Puertos USB (practicamente en todas las placas actuales).
PUERTOS SERIE
-
Simplemente son unos puertos de baja velocidad (115200 bits/segundo) Esta velocidad es adecuada para los modem o el raton serie, pero para comunicacion PC a PC mediante la conexion serie que nos suministra windows, se queda bastante escaso.
Esta comunicacion equivale a unos 14 Ks por segundo. Evidentemente se queda muy corta para conexion por cable. Debemos recordar que la velocidad se configura en el Administrador de dispositivos. La velocidad configurada allí unicamente tiene efecto en la conexion por cable y no tiene ningun efecto en el modem. Esto es importante, ya que por defecto en windows, viene a 9600. Mi consejo es configurarlo al maximo de velocidad (normalmente 115200).
Las placas madre de ultima generación llevan incorporado un chip multipuerto que nos puede dar hasta 1.000.000 (un millon) de bps. (en este caso, la comunicacion via puerto serie, empieza a ser "decente").

PUERTO PARALELO

Este dispositivo, aunque muy "viejo", vamos a "mirarlo" con un poco mas de cariño, y esto es debido a que ya no solamente se utiliza para la impresora, sino que ya pueden conectarse a ella un monton de dispositivos. Los mas "genericos", por ejemplo, son: el ZIP, el LS-120 (SuperDisk), algunos modelos de Scanners y algunos modelos de grabadoras de CD-ROM.
Debido precisamente a la conexion de estos dispositivos, debemos prestar especial atencion a su configuracion en la bios.
Recordemos que las bios soportan normalmente:
ECP+EPP
ECP
EPP 1.9
EPP 1.7
Bidireccional
SPP
(nota: no todas las bios soportan el metodo ECP+EPP, y no todas tienen dos normas para EPP -1.9 y 1.7-)
En general he escrito lo "optimo" de abajo arriba, pero lo optimo en funcion de la velocidad y prestaciones, no quiere decir que sea lo optimo para nuestros dispositivos.
Yo aconsejo realizar las pruebas del puerto paralelo seleccionando en la bios el puerto paralelo con lo metodos anteriores, y probando cada opcion de arriba a abajo. Cuando encontremos la primera en la cual funcionen todos los dispositivos que tenemos en el puerto paralelo, esa es la que debemos dejar.
No todos los drivers de impresora, ni drivers de scanner, etc, soportan todos los metodos del puerto paralelo. Por ello es necesario "probar".
Es importante este tema, fijaros que por ejemplo un ZIP en puerto paralelo, pasa de unos ridiculos 5 Megabytes por minuto, hasta unos "buenos" 30 megas / minuto, unicamente configurando correctamente el puerto (y ejecutando luego el "optimizador de puerto paralelo" de iomega, que lo unico que hace es "mirar" como tenemos el puerto para "decirselo" al driver del ZIP. De esta manera, pasamos de 5 a 30, simplemente tocando la bios y ejecutando en ambos casos el "optimizador").
** La velocidad tipica de puerto paralelo en una comunicacion directa por cable entre dos PCs, llega a 1 Megabyte por segundo, pudiendo alcanzar los 2,5 megas en las placas madre de ultima generacion que utilicen un "buen" chip de multipuerto.

PUERTO DE RATON

Es un puerto (una conexion) especifica incorporada en la placa madre, y que por desgracia nos "roba" una preciosa IRQ (suele ser la 12). Lo normal es que pueda deshabilitarse el puerto de raton en la bios. En ese caso no se utilizará esa IRQ, pero... no todas las bios la van a dejar disponible para otros dispositivos en la placa madre al deshabilitarlo.
He visto situacion (placas madre SuperMicro) que aunque deshabilitemos el puerto de raton en la placa madre, no deja que ningun otro dispositivo "pille" la IRQ 12 (al menos dispositivos PnP). En otras placas, al deshabilitar el puerto de ratón, vemos que inmediatamente es seleccionada por algun dispositivo PnP.
Otra desventaja de este puerto, es que la IRQ que "pilla", es del tipo ISA. Es decir la pilla "en exclusiva" y no puede ser compartida por otros dispositivos.
Como comentario personal, no entiendo el porqué apareció este dispositivo, maxime teniendo 2 puertos serie en un PC, y siendo el raton un dispositivo que *no* necesita "velocidad" en el puerto. Entiendo que es una herencia arrastrada y que surgió en sus epocas unicamente por motivos de marketing (de IBM).

PUERTOS USB

Bien, en un principio se apostaba por ellos como la conexion universal y el futuro de todos los perifericos a conectar a un PC. Desde luego, este tipo de apuesta no va tan rapido como se esperaba.
* La mayoria de las placas madre actuales, suelen llevar incorporados dos puertos USB. Si no fuese así, podemos adquirir por un precio no excesivo, una placa PCI especifica que nos suministre los dos puertos.
* Por tener USB, la bios le asigna una IRQ, pero en este caso, esta IRQ es del tipo PCI y se puede compartir con el resto de dispositivos PCI que tengamos en el PC. Al igual que en el caso de puerto de raton normalmente en la bios podemos "desactivar" el USB si no vamos a tener dispositivos de este tipo. Si lo desactivasemos, se quedará libre para el sistema, pero en este caso no tiene mucho sentido, ya que "no molesta" al ser una IRQ que es capaz de ser compartida.
* La velocidad de un bus USB son 12 megas (bastante aceptable comparado con los anteriores "buses").
* Recordemos que un bus USB puede tener hasta 127 dispositivos. La pregunta del millon es ¿si solo tengo 2 puertos en el PC, como es posible conectar hasta 127 dispositivos?. Pues facil, desde un puerto puedo conectar un HUB (como en las "redes", es decir una especie de distribuidor) que tiene una entrada y "n" salidas. Y así se pueden conectar en "cascada" tantos HUB como queramos hasta tener las 127 posibles salidas (incluidos en ellas los propios HUB).
** AVISO: Existió un problema de hardware con los primeros chip de bus USB fabricados por Intel que no funcionan correctamente. Para ver si nuestro "chip" es bueno, debemos ir al Administrador de Dispositivos, y abrir el dispositivo "Controlador serie universal USB" y debajo de él veremos colgando un dispositvio del tipo "Intel XXXXX PCI to USB Universal Host Controller" Pinchandolo, podremos ver en esa pantalla la "Revision de Hardware". Debe ser la 001 o superior. La version 000 no funciona e Intel aconseja que nos pongamos en contacto con el fabricante de la placa madre y se la devolvamos (como si fuese tan facil!).
** IMPORTANTE: Normalmente los puertos USB, pueden dar un pequeña cantidad^de corriente a los dispositivos. Existen dos "estandard": de 100 mA (mili Amperios) y de 500 mA. Windows controla en funcion del dispositivo "colgado" su consumo, y si el consumo es superior al tipo de puerto, desconecta el dispositivo.
Debe prestarse atención, entonces, a ciertas camaras de video, las cuales toman "corriente" del puerto. Las camaras de video son "devoradoras" de corriente, por lo que corremos peligro que windows las desconecte.
Igualmente, conozco placas madre, que a pesar de montar el chip correcto de Intel capaz de dar hasta 500 mA, fallan estrepitosamente al informar incorrectamente a windows del consumo de sus perifericos. (problemas de la bios de la placa madre y que normalmente se corrige em alguna revision de la bios)
*** Y con esto cerramos el capitulo (por ahora) dedicado al hardware y las inicializaciones que efectua la bios sobre él en el momento en que "pulsamos el boton de encendido de nuestro PC". Igualmente hemos visto las posibles parametrizaciones que podemos hacer del hardware a traves de la bios.
A partir de ahora, vamos a entrar con el "software", es decir una vez que la bios a inicializado los componentes hardware y empieza a construir ciertas tablas de interrupciones y parametros en la memoria del PC, para a continuzacion "buscar" un disquete o un disco duro con el sistema operativo y cargarlo en memoria.

siguiente >


HardSide