domingo, 16 de febrero de 2020

IBM PC 5170 AT (Advanced Technology)

El IBM PC 5170 AT (Advanced Technology), lanzado en 1984, es el sucesor del IBM PC 5160 XT y cuenta con una nueva arquitectura de 16 bits basada en el procesador Intel 80286. Este ordenador dio nombre al estándar de facto "Arquitectura AT" para el desarrollo de ordenadores compatibles entre si.

En la placa base se puede ver como muchas cosas han cambiado con respecto al modelo anterior. Hubo varias versiones del 5170, la siguiente foto es de la primera.

Rmyers7 [CC BY-SA (https://creativecommons.org/licenses/by-sa/4.0)]

Esta foto que he encontrado de la placa base no permite ver bien los componentes, así que para las fotos de estos voy a usar otras fotos de Wikimedia Commons, por lo que es posible que el componente de la foto no sea exactamente el mismo que el que incluía la placa.

Otro cambio importante con respecto a modelos anteriores es la carcasa. Las dos bahías para unidades de disco de 5¼ de altura completa han sido reemplazadas por dos de media altura como las que se utilizan en la actualidad para las unidades de DVD. El disco duro ya no se instala en una de esas bahías sino que se aloja en el interior y en el frontal de la carcasa se ha añadido un indicador de encendido del equipo y otro de actividad del disco duro.

En el frontal también se ha añadido una cerradura para deshabilitar el teclado e impedir el acceso al equipo. El sistema operativo PC-DOS no tenía ningún mecanismo de autenticación ni bloqueo y añadir un sistema que deshabilitara el teclado era muy sencillo.

By  phreakindee
By  phreakindee

El procesador 80286 tiene un bus de datos de 16 bits que le permite leer 16 bits (2 bytes) a la vez. También dispone de un bus de direcciones de 24 bits, lo que permite 16777216 direcciones. Cada dirección contiene 8 bits / 1 byte (se usa byte addressing), por lo que el procesador puede acceder a 16777216 bytes = 16384 KiB = 16 MiB. En las primeras dos versiones del ordenador el procesador funcionaba a 6 MHz y en la tercera a 8 MHz.

Konstantin Lanzet [CC BY-SA (http://creativecommons.org/licenses/by-sa/3.0/)]

La memoria RAM se divide en dos bancos de 16 chips más 2 chips de chequeo de paridad. Esto permite que el procesador lea hasta 16 bits a la vez, uno de cada uno de los chips del banco, con su bus de datos de 16 bits. Cada chip tiene 16 KiB de capacidad. Los 32 chips de memoria suman 512 KiB. Posteriores versiones del ordenador tenían también 512 KiB pero en un solo banco con 16 memorias de 32 KiB.

Para usar el nuevo procesador fue necesario actualizar los circuitos integrados que le acompañaban:


Konstantin Lanzet [CC BY-SA (http://creativecommons.org/licenses/by-sa/3.0/)]

Para disponer de más líneas de interrupción y canales de DMA (acceso directo a memoria) se duplica el número de chips Intel 8259 e Intel 8237 de uno a dos. En la siguiente foto se puede ver una tarjeta de ampliación en la que se puede elegir entre más IRQs y canales DMA.

Pratyeka [CC BY-SA (https://creativecommons.org/licenses/by-sa/4.0)]

En esta tarjeta de red también se puede ver la configuración de "BOOT ROM BASE ADDRESS" para elegir la dirección de memoria en la que cargar una ROM de arranque de la tarjeta para cargar el sistema operativo a través de la red.

El bus ISA es ampliado para utilizar el bus de datos de 16 bits, el bus de direcciones de 24 bits y el mayor número de líneas de interrupción y canales DMA. La velocidad también aumenta a 6 MHz y después a 8 MHz según la velocidad del procesador. Para usar todas esas nuevas líneas de datos se añade un tramo adicional de 36 contactos a las ranuras del bus. Algunas de las ranuras de la placa conservan el formato anterior.

Rmyers7 [CC BY-SA (https://creativecommons.org/licenses/by-sa/4.0)]

El temporizador Intel 8253 es sustituido por el circuito similar Intel 8254 y se añade el reloj en tiempo real (RTC) MC146818 para mantener la fecha y hora al apagar el ordenador. Para alimentarlo se utiliza una pila de 6 V anclada a la carcasa.

El ordenador cuenta con tres resonadores de cuarzo con tres frecuencias distintas:

  • 12 MHz para el nuevo procesador 80286. El procesador divide internamente la frecuencia entre 2 para su funcionamiento, por lo que para funcionar a 6 MHz necesita una frecuencia de 12 MHz
  • 14,31818 MHz como el de los modelos anteriores para ser compatible con ellos. Aparte de la velocidad del procesador, coprocesador y el bus ISA el resto del funcionamiento del ordenador se sigue basando en esta frecuencia o frecuencias derivadas de ella.
  • 32768 KHz para el RTC MC146818. Esta frecuencia es idónea para contar el tiempo en un sistema binario porque es potencia de dos (215 = 32768). Si mediante divisores de frecuencia se divide entre dos quince veces da como resultado 0,001 KHz = 1 Hz, lo que permite contar los segundos. Además al ser 32768 KHz una frecuencia no muy alta el consumo eléctrico es bajo permitiendo alimentar el resonador y el RTC con una pila durante mucho tiempo.

Darklanlan [CC BY (https://creativecommons.org/licenses/by/4.0)]

El chip MC146818 además tiene 50 bytes de memoria CMOS para guardar la configuración del BIOS. La modificación de la configuración se realiza mediante un programa del disco "Diagnostics for the IBM Personal Computer AT". Los interruptores DIP de modelos anteriores ya no son necesarios y han sido eliminados. A continuación se muestra el menú de configuración utilizando el emulador de PCjs Machines.

El BIOS junto con el Cassette Basic se almacena en dos ROM de 32 KiB o en 4 de 16 KiB. En la placa de la foto se puede ver que tiene dos memorias TMM23256P de 256 bits / 32 KiB.

Rmyers7 [CC BY-SA (https://creativecommons.org/licenses/by-sa/4.0)]

El interfaz programable de periféricos Intel 8255 que servía de controlador del teclado es sustituido por el microcontrolador Intel 8042 y se crea un nuevo protocolo bidireccional para el teclado.

Myself User:ZyMOS [CC BY-SA (https://creativecommons.org/licenses/by-sa/4.0)]

El nuevo teclado que utiliza este protocolo tiene 84 teclas, una más que el anterior y ordenadas de distinta forma, muy similar a los teclados actuales. La mayor diferencia es que las teclas de función siguen estando a la izquierda en lugar de arriba. Además cuenta con indicadores de activación de bloqueos controlados por el ordenador mediante el nuevo protocolo bidireccional.

Raymangold22 / CC0

A continuación se puede ver una imagen de la placa donde se indica la posición de los componentes.

Rmyers7 [CC BY-SA (https://creativecommons.org/licenses/by-sa/4.0)]

En el mismo año 1984 IBM presentó dos nuevos tipos de tarjeta gráfica: EGA (Enhanced Graphics Adapter) y PGC (Professional Graphics Controller).

La tarjeta EGA permite hasta 16 colores simultáneos en pantalla y 640×350 puntos. Los colores se podían elegir de una paleta de 64 colores del modelo de color RGB. Es un sistema similar a CGA: usa señales digitales (TTL) y conectores DE-9. Se diferencia en que usa 6 bits para los colores: 2 para el rojo, 2 para el verde y 2 para el azul. Esto permite 26 = 64 colores. Para ello utiliza 6 pines de los conectores DE-9.

Aún pudiendo transmitir 64 colores solo podía mostrar imágenes con 16 colores diferentes a la vez. Esos 16 colores son un subconjunto predefinido de los 64 posibles. De esta forma solo hacen falta 4 bits (24 = 16 colores) para representar a cada uno de los colores del subconjunto. Al usar 4 bits en lugar de 6 bits permite usar menos memoria para almacenar la imagen a mostrar.

Usar menos memoria era importante para limitar el precio de la tarjeta ya que los chips de memoria eran un componente caro. La tarjeta EGA de IBM solo tenía 64 KiB de memoria de vídeo o framebuffer. Para el modo de 640×350 y 16 colores hacía falta una tarjeta de ampliación con otros 64 KiB. 640 x 350 x 4 bits = 896000 bits = 112000 bytes = 109,375 KiB

Vlask [CC BY-SA (https://creativecommons.org/licenses/by-sa/3.0)]

EGA era en parte compatible con los sistemas anteriores MDA y CGA pero para utilizar todas sus posibilidades era necesario un monitor de la misma tecnología como el monitor TVM MD-3 de la siguiente foto.

Pratyeka [CC BY-SA (https://creativecommons.org/licenses/by-sa/4.0)]

La tarjeta PGC es mucho más avanzada y pensada para aplicaciones gráficas como CAD. Permite hasta 640×480 puntos y 256 colores de una paleta de 4096. Al igual que la EGA por limitaciones de memoria no utiliza todos los colores posibles a la vez.

La conexión con el monitor se realiza mediante conectores DE-9 pero al contrario que las tarjetas anteriores usa un sistema analógico similar a VGA. Utiliza tres pines del conector DE-9 para los colores rojo, verde y azul. Los diferentes niveles de color se codifican mediante 16 niveles de voltaje entre 0 y 0,6 V, lo que da la posibilidad de representar 4096 colores (16 rojos x 16 verdes x 16 azules).

La tarjeta está compuesta por tres placas. En una de ellas se encuentra un procesador 8088 para ejecutar rutinas gráficas, memoria ROM y salida de vídeo. La placa central emula una tarjeta CGA y la tercera placa aloja 320 KiB de memoria para almacenar la imagen. Las imágenes de 256 colores necesitaban 8 bits por punto (28 = 256 colores). 640 x 480 x 8 bits = 2457600 bits = 307200 bytes = 300 KiB.

Es como un ordenador dedicado a manipulación de gráficos y es similar a las tarjetas gráficas de hoy día que tienen un potente procesador gráfico y gran cantidad de memoria.

John Elliott [CC BY-SA (http://creativecommons.org/licenses/by-sa/3.0/)]

Con el nuevo procesador llegaron problemas de compatibilidad con los sistemas operativos, programas y tarjetas de ampliación creadas para anteriores modelos.

El procesador 80286 tenía dos modos:

PC-DOS / MS-DOS se ejecutaba en modo real y sus programas no podían acceder directamente a la memoria por encima de 1 MiB. La memoria entre 1 MiB y 16 MiB recibía el nombre de memoria extendida.

Además la memoria entre 640 KiB y 1024 KiB, llamada Área de Memoria Superior (en inglés UMA (Upper Memory Area)), estaba reservada para el BIOS, otras ROM, memoria de entrada / salida y memoria de tarjetas de ampliación como la gráfica. Esto solo dejaba para los programas un área de memoria de 640 KiB llamada memoria convencional.

German [Public domain]

Por un error de diseño, el procesador 80286 podía direccionar en modo real una pequeña zona de memoria de 64 KiB - 12 bytes (65520 bytes) por encima de los 1024 KiB. Esta zona recibía el nombre de Área de Memoria Alta (en inglés HMA (High Memory Area)).

German [Public domain]

Para poder utilizar el Área de Memoria Superior, el Área de Memoria Alta y la memoria extendida se utilizaron múltiples métodos como por ejemplo los llamados sistemas de memoria expandida.

En PC-DOS / MS-DOS, a partir de la versión 5.00, se usaron los controladores de memoria HIMEM.SYS y EMM386.EXE. Se configuraban en el archivo CONFIG.SYS y permitían cargar parte del sistema operativo o controladores de dispositivos en la UMA o HMA para dejar espacio libre para los programas, acceder a la memoria extendida mediante la Extended Memory Specification (XMS) o crear memoria expandida usando memoria extendida. EMM386 utiliza el modo 8086 virtual del procesador 80386, por lo que no se puede utilizar en procesadores anteriores como el 80286 del IBM 5170.

En la versión 4.00 de PC-DOS / MS-DOS se añadió el comando MEM, que permitía ver información sobre la memoria. Utilizando el emulador de IBM 5170 de PCjs Machines con 4 MiB de memoria y PC-DOS 5.00 se puede ver como el comando MEM muestra 640 KiB de memoria convencional y el resto hasta llegar a los 4 MiB de memoria extendida. El sistema operativo se ha cargado en la HMA y quedan 3473408 bytes de memoria extendida disponibles a través de XMS. No hay memoria expandida porque para ello es necesario usar el controlador EMM386.EXE que no es compatible con el procesador 80286 del IBM 5170.

Otro problema que surgió con el cambio de procesador fue la incompatibilidad con las nuevas frecuencias. El 5170 utilizó las frecuencias de 6 y 8 MHz, modelos posteriores y ordenadores compatibles fueron aumentando los MHz. Los programas o tarjetas de ampliación que basaban alguna parte de su funcionamiento en la frecuencia del procesador y el bus ISA fallaban cuando se utilizaban en un ordenador con una frecuencia mayor. Por ejemplo algunos juegos funcionaban demasiado rápido y no era posible jugar.

Para solucionar este problema algunos ordenadores compatibles añadieron el botón turbo. El nombre era un poco engañoso porque realmente su función no era hacer que el ordenador fuera más rápido sino más lento. Al estar presionado el botón el procesador iba a su velocidad normal y cuando no estaba presionado funcionaba mas lento. Algunos ordenadores lo tenían al revés o no estaba conectado, haciendo que fuera aún más confuso. A veces también tenían un indicador de la velocidad con dos valores, mayor y menor, que se configuraban con jumpers. Así que si no estaba bien configurado el indicador también mostraba mal la velocidad contribuyendo a la confusión.

Zeitblick [CC BY-SA (https://creativecommons.org/licenses/by-sa/3.0)]

La velocidad se reducía bajando la frecuencia del procesador o desactivando la caché. La frecuencia elegida dependía entre otras cosas de la frecuencia mínima a la que pudiera funcionar el procesador. Inicialmente, con procesadores no muy rápidos, se bajaba hasta los 4,77 MHz del procesador 8088. Más adelante por ejemplo un procesador de 75 MHz podía bajar a 25 MHz.

Werner Ziegelwanger [Public domain]

Estos problemas se solucionaron con el tiempo cuando los nuevos sistemas operativos comenzaron a usar el modo virtual del procesador y a contar el paso del tiempo con métodos más compatibles como usar el temporizador, el RTC o la frecuencia de 14,31818 MHz enviada por el bus ISA.

En la actualidad para contar el paso del tiempo se puede utilizar HPET, TSC o ACPI Power Management Time. En Linux se puede ver cuales son las fuentes de reloj disponibles y la utilizada actualmente en el sistema de archivos sysfs.

# cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm

# cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc

Ese fue el comienzo de los IBM PC Compatibles. Luego IBM desarrolló el IBM Personal System/2 y multitud de empresas ordenadores compatibles, como mi primer ordenador, que tenía un procesador 386 de AMD.

No hay comentarios:

Publicar un comentario