Memoria RAM. Motherborad. Placa madre. Placa aceleradora. Placa de video. Placa de sonido. Disco rígido. Funcionamiento de una computadora. Cómo funciona el CPU.
Que ocurre desde que pulsamos el botón hasta el arranque
Parte I
Introduccion
El Técnico
Que ocurre desde que pulsamos el botón hasta el arranque
Parte I
Bueno.... esto puede ser un tema inmenso y voy a intentar
escribirlo. Con esto
quiero decir que esto promete ser una "saga" que
iré escribiendo poco a poco y
que intentaré que no se haga "pesada" y por tanto
intentaré no entrar en
detalles técnicos. Por ello, ruego a los
"técnicos" que me concedan la licencia
de intentar expresarlo de la manera más sencilla, y con
ejemplos que no "son"
del todo verdad técnicamente, pero que se aproximan a lo que
queremos explicar.
INTRODUCCION
Antes de ponernos en tarea, meditemos un poco sobre nuestros
hijos, por ejemplo
(quien los tenga). Nuestro hijo, no será quizá el mejor, él
más guapo, él mas
listo y él más atlético de su clase. Pero s nuestro hijo y
lo conocemos
perfectamente. Sabemos de que pié cojea y sabemos como
podemos orientarlo...
Bien, nuestro PC debe ser algo similar (salvando las
distancias). No tiene
porqué ser el mejor del mercado, pero es "nuestro"
PC, y por tanto, debemos
conocerlo, y sabremos como "manejarlo" antes
situaciones extrañas. Debemos
perderlo el miedo. Conocer todo sobre él. No hace falta ser
un técnico (no hace
falta ser un medico para saber sobre la salud de nuestro
hijo), simplemente unos
conocimientos superficiales y perderle el miedo....
PULSAMOS EL BOTON DE ENCENDIDO Y.....
Acabamos de pulsar el botón 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
posición de la
memoria, y lo que está allí se lo da directamente al
procesador para que empiece
a ejecutarlo.
Por tanto, nuestra "memoria" del PC, no está tan
vacía 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 una posición FIJA de
memoria en cualquier PC.
Siempre la misma.
BIOS
Antes lo hemos descrito como un programa. Realmente es un
programa y además es
el único 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 modelos de bios
semi-estándar (por ejemplo
la versión 4.51 PG de Award) y lo que hacen, bajo pedido del
fabricante de la
placa madre, es adaptar "su" estándar de bios, a
"esa" placa madre. Por tanto,
fijémonos que la versión 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
interna 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 versión
superior. Pero, para ello, debemos
buscar la "versión" de la bios 4.51 PG de Award
para "nuestra" placa madre. Y
únicamente, 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 revisión de la
bios que teníamos al
adquirirla.
Y ahora una pregunta ¿por qué se llama ROM? ROM quiere decir "Read Only
Memory",
es decir "Memoria de Solo Lectura", y si es de
solo lectura ¿como podemos
actualizar la bios?. Bueno,.... en un principio, las ROM
eran de solo lectura.
Actualmente el termino ROM es un poco más amplio: Se
entiende por ROM aquella
memoria que cuando se apaga de la corriente, no tiene
perdida de datos, y por
tanto es susceptible además 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 podrán
existir virus que sean capaces de borrarla?.... Pues por
desgracia: sí. Y tiene
muy malas soluciones el tema. Pensemos que si nuestra bios
está dañada, bien por
un virus, o bien porque hemos intentado actualizarla y se ha
ido la corriente en
ese momento, o bien porque nos hemos equivocado y hemos
bajado del Web un
archivo de actualización 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 hará 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 parámetros
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 ordenador, pulsando la tecla "DEL" (borrar) o
la tecla "ESC". Otras bios
pueden requerir otra combinación 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 definición.
En ciertas maquinas
(y además, con ciertas impresoras), la tecla "Imprimir
Pantalla" funciona. Pero
no suele ser lo habitual, por lo que nos tendremos que armar
de paciencia,
bolígrafo y papel, y a escribir....
Esto puede que nos saque de algún 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 parámetros que podemos tocar (sin apenas
riesgo) y además que es
conveniente tocarlos:
* Puerto paralelo: se debe intentar 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
únicamente funcionan e modo EPP puro (no sirve ECP+EPP), y
existen algunos
scanners que también les suceden lo mismo. Es solo cuestión
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
opción:
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 da 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 dependen 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).
Importantísimo: aquí tenemos que poner Power Management:
"Enabled" y
posteriormente todos los timer (contadores de tiempo) para
los distintos 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 característica de control
"avanzado" del
sistema. Mi consejo, si vuestra lo bios lo pregunta es que
pongáis activo
"siempre" el modo ACPI. Mas adelante hablaremos
también de él, en la instalación
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 peor, nuestro
sistema operativo, al menos funciona.
QUINCALLERIA (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
función todavía) y BIOS.
Pero ¿qué 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 mayoría están
"embebidos" en algún chip
multifunción 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
oído hablar: puertos, IRQs,
etc.....
Que ocurre desde que pulsamos el botón hasta el arranque
Parte I I
DISPOSITIVOS
Vamos a definir los "dispositivos" como el resto
del hardware independiente de
la CPU y memoria con los que la CPU interactua.
Hagamos un poco de historia. El PC actual que conocemos,
aunque parezca mentira,
es básicamente el mismo que surgió en el año 82. Su
arquitectura es la misma y
lo único que ha ido evolucionando han sido los
"periféricos" 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
evolución 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 básico de instrucciones es el del antiguo 8086.
Vemos a empezar por la CPU y memoria y luego veremos con
detalle el resto de
"periféricos". 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 única arquitectura existente en sus
años), fue el 8086 de
Intel.
Su triunfo, al igual que el del Windows actual, fue una
decisión de un gigante
del hardware: IBM, y un montón 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 características básicas de las
placas madre: el bus PC
que rápidamente evolucionó al bus AT, y que por desgracia
todavía seguimos
sufriendo.
Con respecto al software, en aquellos años existían unos
sistemas operativos
serios para los ordenadores de 8 bits que empezaban a
surgir. Decimos sistemas
operativos "serios" porque realmente lo eran para
su época. 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 característica la hace única en
el mundo del
software), y una vez implementado un producto de ingeniería,
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 va de la Empresa, se
va 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 fue el caso. El ingeniero de Digital encargado del
proyecto DOS se fue (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 (versión 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.
¿Fue una decisión acertada?. Personalmente creo que no.
Pensemos que el
incipiente CCPM ya era capaz de soportar multitarea (hasta 4
tareas) en modo
consola (no existía todavía interfaz gráfica) -Por cierto,
todavía lo tengo y
funciona!!!-.
Fue una triple decisión 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 básicamente se sigue conservando en
nuestros actuales PCs y
condiciona un montón de cosas que iremos viendo en estos
capítulos)
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 montón de
"patitas", estás se agrupan lógicamente 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 dirección. Y
el bus de "control", es para
comunicarse con el resto "del mundo", con los
periféricos, con la circuiteria
externa, etc....
Esta primera CPU, tenia únicamente 20 "patitas" de
direcciones. Y además 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 podían
direccionar 2 elevado a la 16
direcciones. Es decir 64 Kbs de memoria.
Intel, introdujo en esa CPU, el concepto de
"segmentación" (concepto por el que
todavía seguimos pagando "muy caro", muchas,
demasiadas "malas herencias").
El concepto de "segmentación, consiste en utilizar 2
registros generales para
formar una dirección física. 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
continuación. Agrupémoslos 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 continuación. Esta
es la representación
hexadecimal (base 16).
Recordemos que hay 4 grupos de 4 bits, es decir, puesto
entonces en
representación 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
traducción del francés que fue quien implementó esta
palabra. Al igual, la
palabra "ordenador" proviene de
"ordinateur" (francés). Y la palabra "cuarteto"
como la mitad de un "octeto" (byte).
** Continuemos un poco más.......
Pero como estamos limitados a 20 líneas de direcciones, tal
y como comentábamos
antes, se definió, que la manera de "sumar" esos
dos registros fuese, poniendo
uno a continuación del otro y desplazando el código de
segmento un "cuarteto" (o
"nible") añadiéndolo un cero. Por tanto, por
ejemplo: (segmento A012, offset
2312)
Segmento:
A0120
Offset 2312
------------
Dirección A2432
Cinco "cuartetos" es decir 20 bits, por tanto se
podían 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
única. Es decir, la misma solución, nos podría haber dado
por ejemplo:
Segmento
A0000
Offset 2432
-----------
Dirección 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 dirección de segmento,
otra dirección que
"teóricamente" pertenece a "otro"
segmento.... malo de cara a programación ¿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 además por definición, cualquier "compatible" (y
los actuales lo son), 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 evolución de esta
primitiva. Poco
después de nacer el 8086, surgió ya el 80286 capaz de
direccionar 16 megas de
memoria. Duró muy poco, ya que fue una transición al 80386.
El famoso 386 con el
cual se conserva actualmente compatibilidad absoluta
(excepto una y solo una
nueva instrucción en el Pentium). Por tanto la arquitectura
actual se la llama
también arquitectura 386. El 386, tenía (tiene) un nuevo
modo de funcionamiento.
El modo "protegido", además del modo
"real" y otro modo híbrido 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 dirección 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, podían haberse numerado por ejemplo
R0, R1, R2...., tal
y como sucede en otras arquitecturas. Pero Intel decidió
ponerles "nombre" y
además, que en ciertas operaciones aritméticas, fuese
obligatorio realizarlos
únicamente con ciertos registros y no con todos. Los
nombres, fueron también tan
"raritos" como AX, BX, CX, DX, SI, DI, SP, CS, IP,
ES, SS, DS. Y estos son los
únicos registros con los que se puede operar.
La evolución posterior al 80486, y Pentium únicamente trajo
consigo la
posibilidad de incorporar un chip matemático, 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 gráficos y vídeo, y que al implementarlas
precisamente como
"instrucción" hardware, facilitaban la
programación y la "rapidez" a los
programas que eran capaces de utilizarlas. No nos llevemos a
engaño: ningún
sistema operativo las utiliza y además pocos, realmente
pocos programas
(fundamentalmente los juegos), las utilizan.
El Pentium, solo se distingue de sus predecesores en que
tiene una instrucción
"más". una sola: el "cpmexchg" es decir:
compara dos registros y en función 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.
Posteriormente surgió, el Pentium Pro, que básicamente es un
Pentium optimizado
para ejecutar código "puro" de 32 bits, pero que
se queda ridículo cuando se le
mete código de 16. Para solventar esto, nació el PII, que
básicamente es un
Pentium Pro mejorado para código de 16 bits y que además se
le incorpora de base
la tecnología MMX.
Y por ultimo estamos en el PIII. La única 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 instrucción 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).
Según han ido evolucionando, en los Pentium, esta
instrucción utiliza un solo
ciclo de reloj (y encima los Pentium, pueden llegar ya a 500
millones de ciclos
de reloj por segundo), y además, en el Pentium, en
"ese" ciclo de reloj, se está
utilizando técnica de "pipeline" (como las
fotocopiadoras), es decir aunque este
procesando una instrucción, está preparando otra - en total
hasta 5
simultáneamente. (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 técnica de "pipeline").
Además, para acelerar las CPUs, se ha incrementado su
memoria caché de primer
nivel, y además se ha creado un "predictor de
saltos" optimizado.
Pensemos que cada vez que un programa efectúa un
"salto", es decir, realiza una
operación 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 código
de programa que empieza en donde apunta dicho
"salto". Por tanto, es necesario
"invalidar" la caché y cargar desde la dirección
que apunta el "salto" otra vez
en la caché. Esto es una operación "costosa".
Solución: ¿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 única condición es
que acierte lo mas posible. Si
no, la CPU se nos viene abajo.
Bueno, pues ahora, Intel tiene un juicio pendiente con la
tecnología ALPHA de
Digital, por "piratear" su predictor de saltos en
la arquitectura "Alpha".
(Aparentemente le juicio no va a realizarse ya que Intel
"ha comprado" toda la
fabrica de desarrollo de los chips Alpha y su tecnología hace
unos meses....
curioso, también ¿no?)
Y otra cosa: fijaros que este predictor de saltos, es
importantisimo. Esto es lo
que realmente "acelera" una CPU (aparte de la
tecnología "pipeline").
Y la pregunta del millón: ¿la competencia de Intel, tiene
suficientemente
desarrollada este tipo de tecnología?. Personalmente opino
que no. No existe
ningún índice 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 evolución de
ella, ha sido únicamente respecto a la velocidad, y poco
más. Variantes: EDO,
DIMM, etc..... pero informativamente, excepto la
compatibilidad con nuestra
placa madre, y su velocidad, poco mas puede interesarnos.
Que ocurre desde que pulsamos el botón hasta el arranque
Parte III"Ethek &
El Técnico
Que ocurre desde que pulsamos el botón hasta el arranque
Parte I I I
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 básicos que se
definieron en las placas
madre primigenias.
Son:
* El controlador de Interrupciones
* El controlador de DMA
Recordemos, que siguen "exactamente" igual a como
se definieron al principio.
Tan exactamente igual, que hasta la frecuencia de
funcionamiento del chip de DMA
sigue siento de unos ridículos 4 MHz, que quizá fuesen
rápidos en su momento,
pero que actualmente son ridículos 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 líneas de
"control". Estas son las
importantes para la mayoría de los dispositivos.
Veamos las tres "únicas" 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 máximo, 2 bytes) en un "puerto". Y que un
"puerto" no es nada mas que
una dirección de destino que tiene algún chip o dispositivo
de la placa madre.
Un puerto, se direcciona con 2 bytes, es decir existe un
máximo 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 instrucción OUT poner datos en un
puerto. La secuencia de
datos que estamos poniendo para un determinado hardware,
puede ser por ejemplo,
una "petición" 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 "técnico").
Igualmente, mediante la instrucción IN, 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 posibilidades:
1) A lo "bruto". Empezamos enviando una petición a
un dispositivo (mediante la
instrucción OUT), y según el manual del fabricante, ahora
ese dispositivo, nos
va a responder en un puerto. Pues bien, empezamos a leer
(mediante IN), 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 petición que realizamos con el IN, pues...
nos hemos metido en
un "bucle" infinito. La CPU nunca tendrá ese dato
y además la secuencia
programada no se puede interrumpir....... malo, malo.
Una mejora de esta solución, sería mirar únicamente cada
cierto tiempo. Se puede
hacer que se mire en cada "tic" de reloj. Y ese
"tic" de reloj interno lo
podemos programar (existe también 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
lógico: le pedimos algo al dispositivo, y nos dedicamos a
hacer otras cosas.
Cuando el dispositivo tenga el dato, simplemente que nos
avise enviando una
"interrupción" (IRQ). Se llama así porque una
interrupción, interrumpe
obligatoriamente lo que esté haciendo la CPU y la obliga a
tomar alguna acción.
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 también mas adelante.
* Este es el método IRQ.
** Y existe un tercer método 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
programación a nivel de decirle cuantos queremos), nos los
pase a una dirección
de memoria prefijada sin necesidad de que la CPU trabaje
para nada. Esta es la
técnica DMA. Esta técnica aparentemente genial tiene un
inconveniente (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
"paron".
Bueno,... esto no era tan importante en la primera
arquitectura del PC, con CPUs
a 4,77 MHz, y una DMA rápida (4 MHz), este tipo de acceso
simplificaba la
programación y además era mas rápida que las técnicas IN,
OUT (técnicas PIO).
Pero por desgracia y para conservar la compatibilidad la
velocidad de la DMA
sigue siendo la velocidad primitiva (4 MHz), y además por el
mismo motivo, la
DMA solo sabe hacer transferencias de 8 y 16 bits
simultáneamente (cuando la
memoria actual se direcciona en un bus de 32). Y además, 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, habíamos
visto que existía
el:
** Controlador programable de interrupciones. ¿y que hace
este "bicho"?, pues
fácil, lo que hace es que cuando recibe una interrupción, 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 línea de
control especial (y
única!!). Se le llama "programable" ya que tiene
la posibilidad de que si recibe
"simultáneamente" mas de una interrupción, puede
ordenararlas por las
prioridades que le haya programado el sistema operativo,
para írselas 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 interrupción y
la CPU ha llamado a
la rutina de servicio (driver) que controla esta
interrupción, lo primero que
tiene que hacer, en cuanto pueda, el "driver" es
emitir una instrucción 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
instrucción STI.
IRQs (INTERRUPT
REQUEST)
Bueno, pues también arrastramos aquí una desgraciada
herencia. Solo se
definieron 16 IRQs (y además, no vectorizadas, por lo que en
principio NO pueden
compartirse. Ojo!!, he dicho en "principio").
Y además 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 tiempo real (CMOS de la BIOS)
IRQ 9 LIBRE
IRQ 10 LIBRE
IRQ 11 LIBRE
IRQ 12 LIBRE
IRQ 13 Coprocesador matemático
IRQ 14 Primer controlador IDE de disco duro
IRQ 15 Segundo controlador IDE de disco duro
Fijémonos que en principio, solo quedan 5 libres. Pero....
si tenemos ratón en
puerto de ratón, este utilizará la IRQ 12. Quedan 4. Si
nuestra placa tiene bus
USB, este necesita otra interrupción, si además tenemos bios
ACPI, esta necesita
otra interrupción..... y la tarjeta de red, otra,
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
interrupción entre
varios dispositivos.
Con esto de los "buses" debemos remitirnos otra
vez a la "historia" de la
evolución 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
artículos: "Desde que pulsamos el botón de arranque
hasta..."
Que ocurre desde que pulsamos el botón hasta el arranque
Parte IV"Ethek &
El Técnico
Que ocurre desde que pulsamos el botón hasta el arranque
Parte I V
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
Es completamente nuevo. 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.
Que ocurre desde que pulsamos el botón hasta el arranque
Parte V"Ethek &
El Técnico
Que ocurre desde que pulsamos el botón hasta el arranque
Parte V
PLUG AND
PLAY
Bien, hasta aquí hemos visto los posibles "buses"
incorporados en nuestra placa
madre. Queda todavía por ver el bus SCSI. Debido a que este
último, no es nada
más que una tarjeta SCSI de la cual sale 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".
Teníamos que asignarlas una IRQ de la lista que teníamos
"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 no a un posible ratón
en puerto de ratón-)
Evidentemente este conjunto de IRQs libres empieza a
quedarse escaso, máxime
cuando en la actualidad todo el mundo tiene tarjeta de
sonido la cual nos va a
pillar otra IRQ, y probablemente la tarjeta de vídeo 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 habíamos
comentado que el bus PCI fue
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 además, 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 ratón 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.
* Igualmente 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
necesaria. En win95 / win98, "siempre" la bios le
asigna una IRQ y por tanto
Windows la utiliza (y los drivers de impresión la
necesitan). En Windows NT (y
Windows 2000), esto no es necesario. NT y 2000
"pasan" de la bios, y los drivers
de impresión no lo necesitan. Lo gestionan mediante técnica
de "pool" y liberan
al sistema una IRQ que puede ser preciosa.
c) La IRQ 12 es ISA si está asignada a puerto de ratón. Si
en nuestro PC tenemos
el ratón 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 situación y "liberan"
automáticamente dicha IRQ. Pero esto no es
lo normal y por tanto somos nosotros responsables de
informarle a la propia
bios.
** He repetido los conceptos anteriores que ya habíamos
visto para tenerlos
frescos en este momento. Vamos a para entonces a hablar
realmente del PnP.
En Windows 95, Microsoft preparó una especificación del PnP.
No vamos a entrar
en detalles técnicos, únicamente conceptuales. En resumen,
la especificación PnP
es la siguiente:
1) Cada fabricante de periféricos PnP tiene asignado un
numero identificativo
único en el mundo.
2) Los fabricantes son responsables de "numerar"
sus dispositivos. Es decir una
tarjeta suya tendrá en numero 1, otra el 2, etc. Números
UNICOS.
3) Los dispositivos se agrupan por
"funcionalidades" (dispositivos de "Mass
Storage" para los de acceso a disco, "Vídeo"
para los de vídeo, "Multimedia
Device" para los multimedia, etc.... es decir hay una
clasificación.
4) El conjunto de estas dos características definidas en el
punto 1) y 2) forma
un "string" (cadena de caracteres) identificativo
"único" 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 única 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" estándar 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, preguntándole al dispositivo,
este es capaz de
informarnos que quiere y que posibilidades tiene.
6) La BIOS en inicialización, 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 da las IRQs del sistema 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, ratón, 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 asignación a
dispositivos PnP.
7.3) En este momento tiene la bios una lista de IRQs que le
quedan libres.
7.4) Se recorre el bus ISA y "pregunta" a cada
tarjeta sí es o no, PnP. Y si es
PnP.: que necesita y que posibilidades alternativas le da.
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 da 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 únicamente 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 principio, 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. Si *no*
fuesen PnP. y además
no tenemos ningún "jumper" para que lo sean,
debemos ver que IRQ va a necesitar
(mirando el manual nos dirá cuales "puede", y
además si tenemos o no que poner
algún 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 únicamente 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 asignársela, 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, prácticamente no
quedan.... (a excepción
de algún módem 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 fácil. Abrimos la maquina
y cambiamos a la
tarjeta de "slot". Recordad que la bios asigna su
lista de libres recorriéndose
el bus PCI. Por tanto cambiándola de slot se la encontrará
en otra posición y
"seguramente" le asignará otra IRQ. (Realmente
aquí intervienen más factores de
tipo técnico, ya que existen las denominadas IRQ#A, IRQ#B,
IRQ#C e IRQ#D. Estas
son las que realmente solicita un dispositivo y el propio
bus PCI las tiene
"entrelazadas" y juega con estas IRQs
"lógicas" y la lista de IRQs libres. Pero
este es un tema "técnico" 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 botón de encendido"...... y antes de
empezar a cargar todavía el
sistema operativo.
Que ocurre desde que pulsamos el botón hasta el arranque
Parte VI"Ethek &
El Técnico
Que ocurre desde que pulsamos el botón hasta el arranque
Parte VI
BUS SCSI Y SUS DISPOSITIVOS
Como introducción, debo comentar que la tecnología SCSI
siempre es la puntera (y
la mas cara). Los discos SCSI siempre son mejores que los
IDE. Y mucho mas
rápidos, pero evidentemente a igualdad de
"tecnología". Me explico, todo lo
"puntero" siempre nace en los dispositivos SCSI.
Posteriormente los IDE (uno o
dos años mas tarde) los alcanzan. Hagámonos 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 generación. Actualmente el SCSI
tiene ya discos de
10.000 revoluciones y con caché interna de 4 megas. Los IDE
todavía 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 únicamente tenemos
un cable, la tarjeta está en uno de los "extremos"
del bus. Es decir,
teóricamente podemos tener:
1)
D---D---D--T---D
2)
T---D---D--D---D
(he representado por "D" cualquier dispositivo
SCSI (disco, CD-ROM, 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 (da igual).
IMPORTANTE: El BUS SCSI debe estar "terminado" por
*ambos* extremos. Esto es
*OBLIGATORIO*, son propiedades eléctricas del dispositivo y
si no prestamos
atención a esto, en cualquier momento puede suceder un mal
funcionamiento 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 Identificación 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 además hemos dicho que la tarjeta es un dispositivo más.
Recordar además que
las tarjetas SCSI, realmente son realmente una CPU especial
y que además 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?. Fácil: en las "antiguas"
tarjetas, normalmente por jumpers como los anteriores, y en
las tarjetas
actuales, entrando en su BIOS y asignándoselo. Por defecto
la tarjeta SCSI
siempre viene con el
ID=7.
Estos numeritos, no solo son para diferenciar cada
dispositivo, sino que además
nos determinan la "prioridad" del
dispositivo. La norma SCSI define que
el
dispositivo de máxima 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 lógica, la que tiene mayor prioridad en el BUS.
** Otra característica de la que hemos hablado anteriormente
es la
"terminación". Y habíamos 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" eléctrica 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 compremos 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 terminación, 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 también en la propia BIOS de la
tarjeta además de
asignarle allí el numero de ID. * Algunos de los
dispositivos "viejos", en vez
de tener el "jumper" TE, lo que físicamente tienen
es una fila (o dos) de
resistencias ("resistor"). La manera de quitar la
"terminación" es eliminar
físicamente 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 tapón.
Esto es muy útil, mi
costumbre, según 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
transferencia 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
comunicación al doble de velocidad. Por tanto soporta 20
megabytes en el bus.
Los dispositivos deben soportar negociación
"ultra". Prácticamente 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 todavía el
15, 14, 13,.....,8. Debido a que el cable es de 68 hilos,
físicamente 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 combinación 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 tecnología, llamada también LVD (Low Voltage
Diferential).
Normalmente estas tarjetas son 2 buses en 3 conectores. Dos
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 extremos sigue
siendo la tarjeta. Por tanto,
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, también 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 tuviese
activo, el bus debe
terminarse también con una resistencia externa. Pero debe
ser una resistencia
"pasiva" o "terminación 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 tecnología SCAM. Esta tecnología es simplemente
que los dispositivos
negocian (o pueden negociar) su ID con la tarjeta y la
propia tarjeta puede
cambiárselo automáticamente. 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 existe la
posibilidad de que la
tarjeta nos lo cambie de prioridad.
Particularmente yo desactivo dicha opción 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 también es configurable mediante su
bios.
Que ocurre desde que pulsamos el botón hasta el arranque
Parte VII"Ethek &
El Técnico
Que ocurre desde que pulsamos el botón hasta el arranque
Parte VII
CONTROLADOR IDE
Este dispositivo, históricamente era una tarjeta
"aparte" que se pinchaba en un
slot ISA. Después de aparecer el bus PCI dichas tarjetas
empezaron a ser PCI y
en la actualidad, prácticamente en todas las placas madre
vienen incorporadas.
** Se le llama controlador IDE, pero realmente es "la
mitad" del controlador. Me
explico: la electrónica de los actuales discos duros lleva
incorporada la otra
mitad. Recordemos
que un controlador IDE soporta dos "buses" o "canales" IDE.
Cada canal IDE únicamente puede soportar a su vez dos
dispositivos: discos
duros, disco y CD, o dos CDs. Por tanto estamos limitados a
un máximo 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