Arranque

Interruptores y cables utilizados para programar ENIAC (1946)

Hay muchos métodos diferentes disponibles para cargar un programa inicial corto en una computadora. Estos métodos abarcan desde entradas físicas simples hasta medios extraíbles que pueden contener programas más complejos.

Ejemplos de ROM de circuito preintegradoeditar

Los primeros computadoreseditar

Los primeros computadores en las décadas de 1940 y 1950 fueron esfuerzos de ingeniería únicos que podían tomar semanas para programar y la carga de programas fue uno de los muchos problemas que tuvieron que resolverse. Una de las primeras computadoras, ENIAC, no tenía ningún programa almacenado en la memoria, pero se configuraba para cada problema mediante una configuración de cables de interconexión. El bootstrap no se aplicaba a ENIAC, cuya configuración de hardware estaba lista para resolver problemas tan pronto como se aplicaba la energía.

El sistema EDSAC, el segundo ordenador de programa almacenado que se construía, usaba interruptores escalonados para transferir un programa fijo a la memoria cuando se presionaba su botón de inicio. El programa almacenado en este dispositivo, que David Wheeler completó a finales de 1948, cargaba más instrucciones de cinta perforada y luego las ejecutaba.

Primeras computadoras comercialeseditar

Las primeras computadoras programables para la venta comercial, como el UNIVAC I y el IBM 701, incluían características para simplificar su operación. Por lo general, incluían instrucciones que realizaban una operación de entrada o salida completa. La misma lógica de hardware se podía usar para cargar el contenido de una tarjeta perforada (las más típicas) u otros medios de entrada, como un tambor magnético o cinta magnética, que contenían un programa de arranque pulsando un solo botón. Este concepto de arranque fue llamado una variedad de nombres para computadoras IBM de la década de 1950 y principios de la década de 1960, pero IBM usó el término «Carga de programa Inicial» con el IBM 7030 Stretch y más tarde lo usó para sus líneas de mainframe, comenzando con el System/360 en 1964.

Tarjeta perforada de carga de programa inicial para el IBM 1130 (1965)

El ordenador IBM 701 (1952-1956) tenía un botón «Cargar» que lectura iniciada de la primera palabra de 36 bits en la memoria principal desde una tarjeta perforada en un lector de tarjetas, una cinta magnética en un accionador de cinta o una unidad de tambor magnético, dependiendo de la posición del selector de carga. La media palabra de 18 bits izquierda se ejecutaba como instrucción, que generalmente leía palabras adicionales en la memoria. Luego se ejecutó el programa de arranque cargado, que, a su vez, cargó un programa más grande de ese medio en la memoria sin ayuda adicional del operador humano. El término «bota» se ha utilizado en este sentido desde al menos 1958.

Consola IBM System/3 de la década de 1970.

Otros ordenadores IBM de la época tenían características similares. Por ejemplo, el sistema IBM 1401 (c. 1958) usaba un lector de tarjetas para cargar un programa desde una tarjeta perforada. Los 80 caracteres almacenados en la tarjeta perforada se leían en las ubicaciones de memoria 001 a 080, luego la computadora se ramificaba a la ubicación de memoria 001 para leer su primera instrucción almacenada. Esta instrucción era siempre la misma: mover la información en estas primeras 80 ubicaciones de memoria a un área de ensamblaje donde la información en las tarjetas perforadas 2, 3, 4, etc., se podía combinar para formar el programa almacenado. Una vez que esta información se movía al área de ensamblaje, la máquina se ramificaba a una instrucción en la ubicación 080 (leer una tarjeta) y se leía la siguiente tarjeta y se procesaba su información.

Otro ejemplo fue el IBM 650 (1953), una máquina decimal, que tenía un grupo de diez interruptores de 10 posiciones en su panel de operador que eran direccionables como una palabra de memoria (dirección 8000) y podían ejecutarse como una instrucción. Por lo tanto, al configurar los interruptores en 7004000400 y presionar el botón apropiado, se leería la primera tarjeta en el lector de tarjetas en la memoria (código de operación 70), comenzando en la dirección 400 y luego saltaría a 400 para comenzar a ejecutar el programa en esa tarjeta.

Los competidores de IBM también ofrecían carga de programa con un solo botón.

  • El CDC 6600 (c. 1964) tenía un panel de arranque muerto con 144 interruptores de palanca; el interruptor de arranque muerto ingresaba 12 palabras de los interruptores de palanca a la memoria del procesador periférico (PP) 0 e iniciaba la secuencia de carga. PP 0 cargó el código necesario en su propia memoria y luego inicializó el otro PPs.
  • El GE 645 (c. 1965) tenía un botón de «CARGA DE ARRANQUE DEL SISTEMA» que, al presionarlo, causaba que uno de los controladores de E/S cargara un programa de 64 palabras en la memoria desde una memoria de solo lectura de diodos y entregara una interrupción para hacer que ese programa comenzara a ejecutarse.
  • El primer modelo del PDP-10 tenía un botón de «LECTURA» que, al presionarlo, reiniciaba el procesador e iniciaba una operación de E/S en un dispositivo especificado por los interruptores del panel de control, leyendo una palabra de 36 bits que daba una dirección de destino y contaba para lecturas de palabras posteriores; cuando la lectura se completaba, el procesador comenzaba a ejecutar el código leído saltando a la última palabra leída.

Una variación notable de esto se encuentra en el Burroughs B1700 donde no hay una ROM de arranque ni una operación IPL cableada. En su lugar, después de reiniciar el sistema, lee y ejecuta opcodes secuencialmente desde un accionador de cinta montado en el panel frontal; esto configura un cargador de arranque en RAM que luego se ejecuta. Sin embargo, dado que esto hace pocas suposiciones sobre el sistema, también se puede usar para cargar cintas de diagnóstico (Rutina de Pruebas de Mantenimiento) que muestran un código inteligible en el panel frontal incluso en casos de fallas graves de la CPU.

IBM System / 360 y successorsEdit

En IBM System/360 y sus sucesores, incluidas las máquinas z/Architecture actuales, el proceso de arranque se conoce como Carga de programa Inicial (IPL).

IBM acuñó este término para el 7030 (Stretch), lo revivió para el diseño del System/360, y continúa usándolo en esos entornos hoy en día. En los procesadores System / 360, el operador de la computadora inicia una IPL seleccionando la dirección del dispositivo de tres dígitos hexadecimales (CUU; C=Dirección del canal de E/S, UU=Unidad de control y dirección del dispositivo), seguida de presionar el botón DE CARGA. En los modelos de gama alta System / 360, la mayoría de System/370 y algunos sistemas posteriores, las funciones de los interruptores y el botón de CARGA se simulan utilizando áreas seleccionables en la pantalla de una consola gráfica, a menudo un dispositivo similar a IBM 2250 o un dispositivo similar a IBM 3270. Por ejemplo, en el System / 370 Modelo 158, la secuencia de teclado 0-7-X (cero, siete y X, en ese orden) da como resultado una IPL desde la dirección del dispositivo que se introdujo en el área de entrada. El Amdahl 470V / 6 y las CPU relacionadas soportaban cuatro dígitos hexadecimales en aquellas CPU que tenían instalada la unidad de segundo canal opcional, para un total de 32 canales. Más tarde, IBM también soportaría más de 16 canales.

La función IPL en el System / 360 y sus sucesores, y sus compatibles como Amdahl, lee 24 bytes de un dispositivo especificado por el operador en el almacenamiento principal a partir de la dirección real cero. El segundo y tercer grupo de ocho bytes se tratan como Palabras de comando de canal (CCWs) para continuar cargando el programa de inicio (el primer CCW siempre es simulado por la CPU y consiste en un comando de lectura IPL, 02h, con encadenamiento de comandos y supresión de indicación de longitud incorrecta). Cuando se completan los comandos del canal de E/S, el primer grupo de ocho bytes se carga en la Palabra de estado del programa (PSW) del procesador y el programa de inicio comienza a ejecutarse en la ubicación designada por ese PSW. El dispositivo IPL es generalmente una unidad de disco, de ahí la importancia especial del comando de tipo de lectura 02h, pero exactamente el mismo procedimiento también se usa para IPL desde otros dispositivos de tipo de entrada, como unidades de cinta o incluso lectores de tarjetas, de una manera independiente del dispositivo, lo que permite, por ejemplo, la instalación de un sistema operativo en una computadora nueva desde una cinta magnética de distribución inicial del sistema operativo. Para controladores de disco, el comando 02h también hace que el dispositivo seleccionado busque el cilindro 0000h, la cabeza 0000h, simulando un comando de cilindro y cabeza de búsqueda, 07h, y busque el registro 01h, simulando un comando Igual de ID de búsqueda, 31h; las búsquedas y búsquedas no son simuladas por controladores de cinta y tarjeta, en cuanto a estas clases de dispositivos, un comando 02h es simplemente un comando de lectura secuencial, no un comando de lectura IPL.

El disco, la cinta o la cubierta de tarjetas deben contener un programa especial para cargar el sistema operativo real o la utilidad independiente en el almacenamiento principal, y para este propósito específico, el programa independiente DASDI (Inicialización de Dispositivos de almacenamiento de Acceso Directo) o un programa equivalente que se ejecuta bajo un sistema operativo, por ejemplo, ICKDSF, coloca «Texto IPL» en el disco, pero las cintas y cubiertas de tarjetas compatibles con IPL generalmente se distribuyen con este «Texto IPL» ya presente.

Minicomputadoreseditar

Panel frontal PDP-8/E que muestra los interruptores utilizados para cargar el programa de arranque

Minicomputadores, comenzando con el Digital Equipment Corporation (DEC) PDP-5 y PDP-8 (1965) simplificaron el diseño mediante el uso de la CPU para ayudar a las operaciones de entrada y salida. Esto ahorró costos, pero hizo que el arranque fuera más complicado que presionar un solo botón. Los minicomputadores normalmente tenían alguna forma de alternar en programas cortos manipulando una serie de interruptores en el panel frontal. Dado que los primeros minicomputadores usaban memoria de núcleo magnético, que no perdía su información cuando la energía estaba apagada, estos cargadores de arranque permanecerían en su lugar a menos que se borraran. El borrado a veces ocurría accidentalmente cuando un error de programa causaba un bucle que sobrescribía toda la memoria.

Otros minicomputadores con una forma de arranque tan simple incluyen la serie HP 2100 de Hewlett-Packard (mediados de la década de 1960), el Data General Nova original (1969) y el PDP-11 de DEC (1970).

DEC añadió más tarde una memoria de solo lectura de matriz de diodos opcional para el PDP-11 que almacenaba un programa de arranque de hasta 32 palabras (64 bytes). Consistía en una tarjeta de circuito impreso, la M792, que se conectaba al Unibus y contenía una matriz de diodos semiconductores de 32 por 16. Con los 512 diodos en su lugar, la memoria contenía todos los bits «uno»; la tarjeta se programaba cortando cada diodo cuyo bit debía ser «cero». DEC también vendió versiones de la tarjeta, la serie BM792-Yx, preprogramadas para muchos dispositivos de entrada estándar simplemente omitiendo los diodos innecesarios.

Siguiendo el enfoque anterior, el PDP-1 anterior tiene un cargador de hardware, de modo que un operador solo necesita presionar el interruptor de «carga» para indicar al lector de cinta de papel que cargue un programa directamente en la memoria del núcleo. El Data General Supernova usaba interruptores del panel frontal para hacer que la computadora cargara automáticamente instrucciones en la memoria desde un dispositivo especificado por los interruptores de datos del panel frontal, y luego saltara al código cargado; el Nova 800 y el 1200 tenían un interruptor que cargaba un programa en la memoria principal desde una memoria especial de solo lectura y saltaba a ella.

Ejemplos de cargador de arranque de minicomputador primeroeditar

En una minicomputadora con un lector de cinta de papel, el primer programa que se ejecutaba en el proceso de arranque, el cargador de arranque, leía en la memoria central el cargador de arranque de segunda etapa (a menudo llamado Cargador Binario) que podía leer cinta de papel con suma de comprobación o el sistema operativo desde un medio de almacenamiento externo. El pseudocódigo para el gestor de arranque puede ser tan simple como las siguientes ocho instrucciones:

  1. Establecer el registro P en 9
  2. Comprobar que el lector de cinta de papel está listo
  3. Si no está listo, saltar a 2
  4. Leer un byte del lector de cinta de papel al acumulador
  5. Almacenar acumulador a la dirección en el registro P
  6. Si se termina la cinta, saltar a 9
  7. Incrementar el registro P
  8. Saltar a 2

Un ejemplo relacionado se basa en un cargador para una minicomputadora Nicolet Instrument Corporation de la década de 1970, que utiliza la unidad de punzonado de lector de cinta de papel en una teletipo Modelo 33 ASR. Los bytes de su cargador de segunda etapa se leen de cinta de papel en orden inverso.

  1. Establecer el registro P en 106
  2. Comprobar que el lector de cinta de papel está listo
  3. Si no está listo, saltar a 2
  4. Leer un byte del lector de cinta de papel al acumulador
  5. Almacenar acumulador a la dirección en el registro P
  6. Decrementar el registro P
  7. Saltar a 2

La longitud del cargador de segunda etapa es tal que el byte final sobrescribe la ubicación 7. Después de que se ejecute la instrucción en la ubicación 6, la ubicación 7 inicia la ejecución del cargador de la segunda etapa. El cargador de segunda etapa espera a que la cinta mucho más larga que contiene el sistema operativo se coloque en el lector de cinta. La diferencia entre el cargador de arranque y el cargador de segunda etapa es la adición de código de verificación para atrapar errores de lectura de cinta de papel, una ocurrencia frecuente con hardware de «trabajo a tiempo parcial» de relativamente bajo costo, como el Teletipo Modelo 33 ASR. (Los rotuladores flexibles Friden eran mucho más confiables, pero también comparativamente costosos.)

Arranque de los primeros microcomputadoreseditar

Los primeros microcomputadores, como el Altair 8800 (lanzado por primera vez en 1975) y una máquina similar incluso anterior (basada en la CPU Intel 8008) no tenían hardware de arranque como tal. Cuando se iniciaba, la CPU veía la memoria que contenía código ejecutable que solo contenía ceros binarios; la memoria se borraba restableciéndose al encenderse. Los paneles frontales de estas máquinas llevaban interruptores de palanca para ingresar direcciones y datos, un interruptor por bit de la memoria de la computadora y el bus de direcciones. Adiciones simples al hardware permitieron cargar una ubicación de memoria a la vez desde esos conmutadores para almacenar código de arranque. Mientras tanto, se impidió que la CPU intentara ejecutar contenido de memoria. Una vez cargado correctamente, la CPU estaba habilitada para ejecutar el código de arranque. Este proceso era tedioso y tenía que estar libre de errores.

circuito Integrado de memoria de sólo lectura eraEdit

Un procesador Intel 2708 EPROM «chip» en una placa de circuito.

El proceso de arranque para minicomputadoras y microcomputadoras se revolucionó con la introducción de la memoria de solo lectura de circuito integrado (ROM), con sus muchas variantes, incluidas las ROM programables con máscara, las ROM programables (PROM), las ROM programables borrables (EPROM) y la memoria flash. Esto permitió que los programas de arranque de firmware se incluyeran como parte de la computadora. La introducción de una ROM (externa) se produjo en un elaborador italiano de conmutación telefónica, llamado «Gruppi Speciali», patentado en 1975 por Alberto Ciaramella, investigador de CSELT. Gruppi Speciali fue, a partir de 1975, una máquina de un solo botón que arrancaba en el sistema operativo desde una memoria ROM compuesta de semiconductores, no de núcleos de ferrita. Aunque el dispositivo ROM no estaba integrado de forma nativa en la computadora de Gruppi Speciali, debido al diseño de la máquina, también permitía el arranque de ROM de un solo botón en máquinas no diseñadas para eso (por lo tanto, este «dispositivo de arranque» era independiente de la arquitectura), por ejemplo, el PDP-11. El almacenamiento del estado de la máquina después del apagado también estaba en su lugar, que era otra característica crítica en el concurso de conmutación telefónica.

Normalmente, cada microprocesador, después de un reinicio o condición de encendido, realizará un proceso de arranque que generalmente toma la forma de «comenzar la ejecución del código que se encuentra comenzando en una dirección específica» o «buscar un código multibyte en una dirección específica y saltar a la ubicación indicada para comenzar la ejecución». Un sistema construido con ese microprocesador tendrá la ROM permanente ocupando estas ubicaciones especiales para que el sistema siempre comience a funcionar sin asistencia del operador. Por ejemplo, los procesadores Intel x86 siempre comienzan ejecutando las instrucciones que comienzan en F000:FFF0, mientras que para el procesador MOS 6502, la inicialización comienza leyendo una dirección vectorial de dos bytes en $FFFD (MS byte) y F FFFC (LS byte) y saltando a esa ubicación para ejecutar el código de arranque.

Apple Inc.el primer ordenador, el Apple 1 introducido en 1976, presentaba chips de baile que eliminaban la necesidad de un panel frontal para el proceso de arranque (como era el caso del Altair 8800) en un ordenador comercial. Según el anuncio de Apple que lo anunciaba, » No Más Interruptores, No Más Luces … el firmware en PROMS le permite ingresar, mostrar y depurar programas (todos en hexadecimal) desde el teclado.»

Debido al gasto de memoria de solo lectura en ese momento, la serie Apple II arrancó sus sistemas operativos de disco utilizando una serie de pasos incrementales muy pequeños, cada control pasa a la siguiente fase del proceso de arranque gradualmente más complejo. (Ver Apple DOS: Cargador de arranque). Debido a que tan poco del sistema operativo de disco dependía de la ROM, el hardware también era extremadamente flexible y soportaba una amplia gama de mecanismos de protección de copia de disco personalizados. (Ver Cracking de software: Historia.)

Algunos sistemas operativos, especialmente los sistemas Macintosh anteriores a 1995 de Apple, están tan estrechamente entrelazados con su hardware que es imposible arrancar de forma nativa un sistema operativo que no sea el estándar. Este es el extremo opuesto del escenario que utiliza los interruptores mencionados anteriormente; es altamente inflexible pero relativamente a prueba de errores y a prueba de tontos, siempre y cuando todo el hardware funcione normalmente. Una solución común en tales situaciones es diseñar un cargador de arranque que funcione como un programa perteneciente al sistema operativo estándar que secuestre el sistema y cargue el sistema operativo alternativo. Esta técnica fue utilizada por Apple para su implementación de Unix A / UX y copiada por varios sistemas operativos freeware y BeOS Personal Edition 5.

Algunas máquinas, como el microordenador Atari ST, eran «instant-on», con el sistema operativo ejecutándose desde una ROM. La recuperación del sistema operativo del almacén secundario o terciario se eliminó como una de las operaciones características del bootstrapping. Para permitir que las personalizaciones del sistema, los accesorios y otro software de soporte se cargaran automáticamente, la unidad de disquete de Atari se leyó para obtener componentes adicionales durante el proceso de arranque. Hubo un retraso de tiempo de espera que proporcionó tiempo para insertar manualmente un disquete mientras el sistema buscaba los componentes adicionales. Esto se podría evitar insertando un disco en blanco. El hardware Atari ST también fue diseñado para que la ranura del cartucho pudiera proporcionar ejecución de programa nativo para juegos como un remanente de los juegos electrónicos heredados de Atari; al insertar el cartucho Spectre GCR con la ROM del sistema Macintosh en la ranura del juego y encender el Atari, podría «arrancar de forma nativa» el sistema operativo Macintosh en lugar de los TOS propios de Atari.

La computadora Personal IBM incluía un firmware basado en ROM llamado BIOS; una de las funciones de ese firmware era realizar una autoprueba de encendido cuando la máquina estaba encendida, y luego leer el software de un dispositivo de arranque y ejecutarlo. El firmware compatible con el BIOS del ordenador Personal IBM se utiliza en ordenadores compatibles con IBM PC. La Interfaz de Firmware Extensible fue desarrollada por Intel, originalmente para máquinas basadas en Itanium, y más tarde también se utilizó como una alternativa al BIOS en máquinas basadas en x86, incluidos los Apple Mac que utilizan procesadores Intel.

Las estaciones de trabajo Unix originalmente tenían firmware basado en ROM específico del proveedor. Sun Microsystems desarrolló más tarde OpenBoot, más tarde conocido como Open Firmware, que incorporó un intérprete Forth, con gran parte del firmware escrito en Forth. Fue estandarizado por el IEEE como IEEE standard 1275-1994; el firmware que implementa ese estándar se usó en Mac basados en PowerPC y en algunas otras máquinas basadas en PowerPC, así como en los propios ordenadores basados en SPARC de Sun. La especificación Avanzada de Computación RISC definió otro estándar de firmware, que se implementó en algunas máquinas basadas en MIPS y Alfa y en las estaciones de trabajo basadas en SGI Visual Workstation x86.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *