ALIPSO.COM - Trabajos prácticos, monografías, apuntes, tesis, manuales, material educativo y mucho más.
 

Página de inicio | Agregar a Favoritos | Contactate con nosotros | Publicidad

Alipso.com
 

Monografías

Examenes

Enlaces

Publicar material o sitio

Foros

ABC del estudio

Diversión

  Buscar material sobre...
Todas las palabras Cualquier palabra Frase Exacta
El sitio en el que encontrás
todo el material que buscás.

   

Enlaces recomendados
   

Material relacionado
 

Material educativo de Alipso relacionado con Hardware

  • Hardware.: Hardware, microprocesador, memoria RAM y memoria ROM, hardware de entrada, el BIOS, el lapiz optico, el módem, hardware de salida, la impresora, el hardware de almacenamiento, las conexiones del hardware.
  • La informática y el ordenador.: Historia, Componentes del ordenador, Hardware, Software, por Lago Porto Diaz.
  • Hardware.: Emulador de tarjetas PROM. Memorias.
  • Hardware.: Creative Labs Sound Blaster Live! Placas de sonido. Placa de video y sonido.


  • Enlaces externos relacionados con Hardware

    Ver enlaces

     

    Publicidad
       

    Monografías
     
    Hardware.
    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.

    Agregado: 01 de SEPTIEMBRE de 2003 (Por Michel Mosse) | Palabras: 16010 | Votar! | Sin Votos | Sin comentarios | Agregar Comentario
    Categoría: Apuntes y Monografías > Computación > Varios >

      Imprimir Recomendar a un amigo Recordarme el recurso Descargar como pdf

    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