Avvio

Interruttori e cavi utilizzati per programmare ENIAC (1946)

Ci sono molti metodi diversi disponibili per caricare un breve programma iniziale in un computer. Questi metodi raggiungono da semplici input fisici a supporti rimovibili che possono contenere programmi più complessi.

Pre integrated-circuit-ROM examplesEdit

Early computersEdit

I primi computer negli anni 1940 e 1950 erano sforzi ingegneristici unici che potevano richiedere settimane per programmare e il caricamento del programma era uno dei tanti problemi che dovevano essere risolti. Un primo computer, ENIAC, non aveva alcun programma memorizzato in memoria, ma era impostato per ogni problema da una configurazione di cavi di interconnessione. Il bootstrap non si applicava a ENIAC, la cui configurazione hardware era pronta per risolvere i problemi non appena veniva applicata l’alimentazione.

Il sistema EDSAC, il secondo computer a programma memorizzato da costruire, utilizzava interruttori a gradino per trasferire un programma fisso in memoria quando veniva premuto il pulsante di avvio. Il programma memorizzato su questo dispositivo, che David Wheeler completò alla fine del 1948, caricò ulteriori istruzioni dal nastro perforato e poi le eseguì.

Primi computer commercialimodifica

I primi computer programmabili per la vendita commerciale, come l’UNIVAC I e l’IBM 701 includevano funzionalità per semplificare il loro funzionamento. In genere includevano istruzioni che eseguivano un’operazione di input o output completa. La stessa logica hardware potrebbe essere utilizzata per caricare il contenuto di una scheda perforata (quelle più tipiche) o altri supporti di input, come un tamburo magnetico o un nastro magnetico, che contenevano un programma bootstrap premendo un singolo pulsante. Questo concetto di avvio è stato chiamato una varietà di nomi per i computer IBM degli anni 1950 e primi anni 1960, ma IBM ha usato il termine “Carico iniziale del programma” con l’IBM 7030 Stretch e successivamente utilizzato per le loro linee mainframe, a partire dal System/360 nel 1964.

Initial program load scheda perforata per IBM 1130 (1965)

L’IBM 701 computer (1952-1956) aveva un tasto “Carica”, che ha iniziato a leggere i primi 36-bit word in memoria principale da una scheda perforata in un lettore di schede, un nastro magnetico in un’unità a nastro o un tamburo magnetico unità, a seconda della posizione del Carico Selettore. La mezza parola a 18 bit sinistra è stata quindi eseguita come istruzione, che di solito legge parole aggiuntive in memoria. Il programma di avvio caricato è stato quindi eseguito, che, a sua volta, caricato un programma più grande da quel supporto in memoria senza ulteriore aiuto da parte dell’operatore umano. Il termine “boot” è stato usato in questo senso almeno dal 1958.

Console IBM System / 3 degli anni ‘ 70. Il selettore del carico del programma è in basso a sinistra; l’interruttore del carico del programma è in basso a destra.

Altri computer IBM di quell’epoca avevano caratteristiche simili. Ad esempio, il sistema IBM 1401 (c. 1958) utilizzava un lettore di schede per caricare un programma da una scheda perforata. Gli 80 caratteri memorizzati nella scheda perforata venivano letti nelle posizioni di memoria da 001 a 080, quindi il computer si diramava nella posizione di memoria 001 per leggere la sua prima istruzione memorizzata. Questa istruzione era sempre la stessa: spostare le informazioni in queste prime 80 posizioni di memoria in un’area di assemblaggio in cui le informazioni nelle schede perforate 2, 3, 4 e così via, potevano essere combinate per formare il programma memorizzato. Una volta che queste informazioni sono state spostate nell’area di assemblaggio, la macchina si diramava su un’istruzione in posizione 080 (leggere una scheda) e la scheda successiva veniva letta e le sue informazioni elaborate.

Un altro esempio era l’IBM 650 (1953), una macchina decimale, che aveva un gruppo di dieci interruttori a 10 posizioni sul suo pannello operatore che erano indirizzabili come una parola di memoria (indirizzo 8000) e potevano essere eseguiti come un’istruzione. Impostando così gli interruttori su 7004000400 e premendo il pulsante appropriato si leggerebbe la prima scheda nel lettore di schede in memoria (codice op 70), iniziando dall’indirizzo 400 e poi passando a 400 per iniziare a eseguire il programma su quella scheda.

I concorrenti di IBM offrivano anche il caricamento del programma a pulsante singolo.

  • Il CDC 6600 (c. 1964) aveva un pannello di avvio morto con 144 interruttori a levetta; l’interruttore di avvio morto immesso 12 parole dagli interruttori a levetta alla memoria del processore periferico (PP) 0 e avviato la sequenza di carico. PP 0 ha caricato il codice necessario nella propria memoria e quindi ha inizializzato gli altri PPS.
  • Il GE 645 (c. 1965) aveva un pulsante “SYSTEM BOOTLOAD” che, quando premuto, causava a uno dei controller I / O di caricare un programma di 64 parole in memoria da una memoria di sola lettura del diodo e fornire un interrupt per far sì che quel programma iniziasse a funzionare.
  • Il primo modello del PDP-10 ha avuto una “LEGGERE” pulsante che, quando premuto, resettare il processore e ha iniziato un’operazione di I/O su un dispositivo specifico interruttori sul pannello di controllo, la lettura di un 36-bit word di dare un indirizzo di destinazione e il numero successivo parola legge; quando la lettura conclusa, il processore ha avviato l’esecuzione del codice di leggere saltando l’ultima parola in lettura.

Una variante degna di nota di questo si trova sul Burroughs B1700 dove non c’è né una ROM bootstrap né un’operazione IPL cablata. Invece, dopo il ripristino del sistema, legge ed esegue gli opcode in sequenza da un’unità a nastro montata sul pannello frontale; questo imposta un boot loader nella RAM che viene quindi eseguito. Tuttavia, poiché questo fa poche ipotesi sul sistema, può ugualmente essere usato per caricare nastri diagnostici (routine di test di manutenzione) che visualizzano un codice intelligibile sul pannello frontale anche in caso di guasto lordo della CPU.

IBM System/360 e successoriEdit

Nell’IBM System/360 e nei suoi successori, incluse le attuali macchine z / Architecture, il processo di avvio è noto come IPL (Initial Program Load).

IBM ha coniato questo termine per il 7030 (Stretch), lo ha rianimato per la progettazione del System/360 e continua ad usarlo in quegli ambienti oggi. Nei processori System/360, un IPL viene avviato dall’operatore del computer selezionando l’indirizzo del dispositivo a tre cifre esadecimali (CUU; C=Indirizzo del canale I/O, UU=unità di controllo e indirizzo del dispositivo) seguito premendo il pulsante LOAD. Nei modelli System / 360 di fascia alta, nella maggior parte dei sistemi System / 370 e in alcuni sistemi successivi, le funzioni degli switch e del pulsante di caricamento vengono simulate utilizzando aree selezionabili sullo schermo di una console grafica, spesso un dispositivo simile a IBM 2250 o un dispositivo simile a IBM 3270. Ad esempio, sul modello System/370 158, la sequenza della tastiera 0-7-X (zero, sette e X, in questo ordine) produce un IPL dall’indirizzo del dispositivo che è stato digitato nell’area di input. L’Amdahl 470V / 6 e le relative CPU supportavano quattro cifre esadecimali su quelle CPU che avevano installato il secondo canale opzionale, per un totale di 32 canali. In seguito, IBM avrebbe anche supportare più di 16 canali.

La funzione IPL nel System/360 e nei suoi successori, e nei suoi compatibili come Amdahl, legge 24 byte da un dispositivo specificato dall’operatore nella memoria principale a partire dall’indirizzo reale zero. Il secondo e il terzo gruppo di otto byte sono trattati come Channel Command Words (CCWS) per continuare a caricare il programma di avvio (il primo CCW è sempre simulato dalla CPU e consiste in un comando IPL di lettura, 02h, con il concatenamento dei comandi e la soppressione dell’indicazione di lunghezza errata applicata). Quando i comandi del canale I/O sono completi, il primo gruppo di otto byte viene quindi caricato nella parola di stato del programma del processore (PSW) e il programma di avvio inizia l’esecuzione nella posizione designata da tale PSW. La luce pulsata è di solito un disco rigido, quindi il significato speciale del 02h leggere-tipo di comando, ma esattamente la stessa procedura viene utilizzata anche per eseguire un IPL da altro tipo di input dispositivi, come le unità a nastro, o anche lettori di schede, in modo indipendente dal dispositivo, permettendo, ad esempio, l’installazione di un sistema operativo su un computer nuovo da un OS distribuzione iniziale nastro magnetico. Per i controller del disco, il comando 02h fa sì che il dispositivo selezionato cerchi il cilindro 0000h, testa 0000h, simulando un comando Cerca cilindro e testa, 07h, e per cercare il record 01h, simulando un comando di ricerca ID Uguale, 31h; le ricerche e le ricerche non sono simulate da controller a nastro e scheda, poiché per queste classi di dispositivi un comando 02h è semplicemente un comando di lettura sequenziale, non un comando IPL di lettura.

Il disco, nastro o carta di deck deve contenere un programma speciale per caricare il sistema operativo effettivo o utility standalone in memoria principale, e per questo scopo specifico “di IPL di Testo” viene inserito nel disco da stand-alone DASDI (Direct Access Storage di Inizializzazione del Dispositivo) programma o un programma equivalente in esecuzione un sistema operativo, per esempio, ICKDSF, ma IPL-in grado di nastri e mazzi di carte sono di solito distribuiti con questo “IPL Testo” già presenti.

MinicomputersEdit

PDP-8/E del pannello frontale che mostra i parametri utilizzati per caricare il programma di bootstrap

Minicomputer, a partire con la Digital Equipment Corporation (DEC) PDP-5 e il PDP-8 (1965) progettazione semplificata utilizzando la CPU per assistere le operazioni di uscita e ingresso. Questo ha risparmiato i costi, ma ha reso l’avvio più complicato della pressione di un singolo pulsante. I minicomputer in genere avevano un modo per alternare programmi brevi manipolando una serie di interruttori sul pannello frontale. Dal momento che i primi minicomputer utilizzati memoria a nucleo magnetico, che non ha perso le sue informazioni quando il potere era spento, questi caricatori bootstrap sarebbero rimasti al loro posto a meno che non sono stati cancellati. La cancellazione a volte è avvenuta accidentalmente quando un bug del programma ha causato un ciclo che ha sovrascritto tutta la memoria.

Altri minicomputer con tale semplice forma di avvio includono la serie HP 2100 di Hewlett-Packard (metà degli anni 1960), l’originale Data General Nova (1969) e DEC PDP-11 (1970).

DEC in seguito aggiunse una memoria di sola lettura a matrice di diodi opzionale per il PDP-11 che memorizzava un programma bootstrap fino a 32 parole (64 byte). Consisteva in una scheda a circuito stampato, la M792, che si collegava all’Unibus e conteneva una serie di diodi semiconduttori da 32 a 16. Con tutti i 512 diodi in posizione, la memoria conteneva tutti i bit “uno”; la scheda è stata programmata tagliando ogni diodo il cui bit doveva essere”zero”. DEC ha anche venduto versioni della scheda, la serie BM792-Yx, pre-programmate per molti dispositivi di input standard semplicemente omettendo i diodi non necessari.

Seguendo l’approccio precedente, il precedente PDP-1 ha un caricatore hardware, tale che un operatore deve solo premere l’interruttore “load” per istruire il lettore di nastri di carta per caricare un programma direttamente nella memoria principale. Il Data General Supernova utilizzava gli interruttori del pannello frontale per far caricare automaticamente le istruzioni in memoria da un dispositivo specificato dagli interruttori dati del pannello frontale, e quindi passare al codice caricato; il Nova 800 e il 1200 avevano uno switch che caricava un programma nella memoria principale da una speciale memoria di sola lettura e saltava ad esso.

Primi esempi di boot loader per minicomputer

In un minicomputer con un lettore di nastri di carta, il primo programma eseguito nel processo di avvio, il boot loader, leggeva nella memoria principale il boot loader del secondo stadio (spesso chiamato caricatore binario) che poteva leggere il nastro di carta con checksum o il sistema operativo da un supporto di Pseudocodice per il boot loader potrebbe essere semplice come le seguenti otto istruzioni:

  1. Impostare il P registrare a 9
  2. Controllare il lettore di nastro di carta pronto
  3. Se non si è pronti, saltare 2
  4. Leggere un byte dal lettore di nastro di carta per accumulatore
  5. Archivio accumulatore di indirizzo in P register
  6. Se la fine del nastro, salto a 9
  7. Incrementa il P register
  8. Saltare per 2

Un esempio correlato è basato su un loader per un Nicolet Instrument Corporation minicomputer del 1970, utilizzando il lettore di nastro di carta-unità di perforazione su una macchina da scrivere Modello 33 ASR telescrivente. I byte del caricatore del secondo stadio vengono letti dal nastro di carta in ordine inverso.

  1. Impostare il P registrare a 106
  2. Controllare il lettore di nastro di carta pronto
  3. Se non si è pronti, saltare per 2
  4. Leggere un byte dal lettore di nastro di carta per accumulatore
  5. Archivio accumulatore di indirizzo in P register
  6. Diminuire il P register
  7. Saltare per 2

La lunghezza del second stage loader è tale che il byte finale sovrascrive posizione 7. Dopo l’esecuzione dell’istruzione nella posizione 6, la posizione 7 avvia l’esecuzione del caricatore della seconda fase. Il caricatore del secondo stadio attende quindi che il nastro molto più lungo contenente il sistema operativo venga inserito nel lettore di nastri. La differenza tra il boot loader e il caricatore del secondo stadio è l’aggiunta del codice di controllo per intrappolare gli errori di lettura del nastro di carta, un evento frequente con hardware “part-time” relativamente a basso costo, come il Teletype Model 33 ASR. (I Flexowriter di Friden erano molto più affidabili, ma anche relativamente costosi.)

Avvio dei primi microcomputeredit

I primi microcomputer, come l’Altair 8800 (rilasciato per la prima volta nel 1975) e una macchina simile ancora prima (basata sulla CPU Intel 8008) non avevano hardware di bootstrap in quanto tale. Una volta avviato, la CPU vedrebbe la memoria che conterrebbe codice eseguibile contenente solo zeri binari—la memoria è stata cancellata ripristinando all’accensione. I pannelli frontali di queste macchine effettuate interruttori a levetta per l’immissione di indirizzi e dati, un interruttore per bit della parola memoria del computer e bus di indirizzo. Semplici aggiunte all’hardware consentivano di caricare una posizione di memoria alla volta da quegli switch per memorizzare il codice bootstrap. Nel frattempo, la CPU è stato impedito di tentare di eseguire il contenuto della memoria. Una volta caricato correttamente, la CPU è stata abilitata per eseguire il codice di bootstrap. Questo processo era noioso e doveva essere privo di errori.

Circuito integrato Memoria di sola lettura eraEdit

Un “chip” Intel 2708 EPROM su un circuito stampato.

Il processo di avvio per minicomputer e microcomputer è stato rivoluzionato dall’introduzione della memoria di sola lettura (ROM) a circuito integrato, con le sue numerose varianti, tra cui le ROM programmate con maschera, le ROM programmabili (PROM), le ROM programmabili cancellabili (EPROM) e le memorie flash. Questi hanno permesso ai programmi di avvio del firmware di essere inclusi come parte del computer. L’introduzione di una ROM (esterna) avvenne in un elaboratore di commutazione telefonica italiano, chiamato “Gruppi Speciali”, brevettato nel 1975 da Alberto Ciaramella, ricercatore presso CSELT. Gruppi Speciali era, a partire dal 1975, una macchina completamente a pulsante singolo che si avviava nel sistema operativo da una memoria ROM composta da semiconduttori, non da nuclei di ferrite. Sebbene il dispositivo ROM non fosse nativamente incorporato nel computer di Gruppi Speciali, a causa del design della macchina, permetteva anche l’avvio della ROM a pulsante singolo in macchine non progettate per questo (quindi, questo “dispositivo bootstrap” era indipendente dall’architettura), ad esempio il PDP-11. Memorizzazione dello stato della macchina dopo lo spegnimento era anche in atto, che era un’altra caratteristica critica nel concorso di commutazione telefonica.

In genere, ogni microprocessore, dopo un reset o una condizione di accensione, esegue un processo di avvio che di solito assume la forma di “iniziare l’esecuzione del codice che si trova a partire da un indirizzo specifico” o “cercare un codice multibyte in un indirizzo specifico e passare alla posizione indicata per iniziare l’esecuzione”. Un sistema costruito usando quel microprocessore avrà la ROM permanente che occupa queste posizioni speciali in modo che il sistema inizi sempre a funzionare senza l’assistenza dell’operatore. Ad esempio, i processori Intel x86 iniziano sempre eseguendo le istruzioni a partire da F000:FFF0, mentre per il processore MOS 6502, l’inizializzazione inizia leggendo un indirizzo vettoriale a due byte in $FFFD (MS byte) e F FFFC (LS byte) e saltando in quella posizione per eseguire il codice bootstrap.

Apple Inc.il primo computer, l’Apple 1 introdotto nel 1976, presentava chip PROM che eliminavano la necessità di un pannello frontale per il processo di avvio (come nel caso dell’Altair 8800) in un computer commerciale. Secondo l’annuncio di Apple che lo annuncia ” Niente più interruttori, niente più luci … il firmware in PROMS consente di inserire, visualizzare ed eseguire il debug di programmi (tutti in hex) dalla tastiera.”

A causa della spesa di memoria di sola lettura al momento, la serie Apple II avviato i suoi sistemi operativi disco utilizzando una serie di piccoli passi incrementali, ogni passaggio di controllo in avanti per la fase successiva del processo di avvio gradualmente più complesso. (Vedi Apple DOS: Boot loader). Poiché così poco del sistema operativo del disco si basava sulla ROM, l’hardware era anche estremamente flessibile e supportava una vasta gamma di meccanismi di protezione contro la copia del disco personalizzati. (Vedi Software Cracking: Storia.)

Alcuni sistemi operativi, in particolare i sistemi Macintosh pre-1995 di Apple, sono così strettamente intrecciati con il loro hardware che è impossibile avviare nativamente un sistema operativo diverso da quello standard. Questo è l’estremo opposto dello scenario che utilizza gli switch sopra menzionati; è altamente inflessibile ma relativamente a prova di errore e infallibile finché tutto l’hardware funziona normalmente. Una soluzione comune in tali situazioni è progettare un boot loader che funzioni come un programma appartenente al sistema operativo standard che dirotta il sistema e carica il sistema operativo alternativo. Questa tecnica è stata utilizzata da Apple per la sua implementazione Unix A / UX e copiata da vari sistemi operativi freeware e BeOS Personal Edition 5.

Alcune macchine, come il microcomputer Atari ST, erano “instant-on”, con il sistema operativo in esecuzione da una ROM. Il recupero del sistema operativo dal negozio secondario o terziario è stato quindi eliminato come una delle operazioni caratteristiche per il bootstrap. Per consentire il caricamento automatico di personalizzazioni di sistema, accessori e altri software di supporto, l’unità floppy di Atari è stata letta per ulteriori componenti durante il processo di avvio. C’è stato un ritardo di timeout che ha fornito il tempo di inserire manualmente un floppy mentre il sistema cercava i componenti aggiuntivi. Questo potrebbe essere evitato inserendo un disco vuoto. L’hardware Atari ST è stato anche progettato in modo che lo slot della cartuccia potesse fornire l’esecuzione nativa del programma per scopi di gioco come un retaggio dall’eredità di Atari che produceva giochi elettronici; inserendo la cartuccia Spectre GCR con la ROM del sistema Macintosh nello slot di gioco e accendendo l’Atari, poteva “avviare nativamente” il sistema operativo Macintosh piuttosto che

Il Personal Computer IBM includeva il firmware basato su ROM chiamato BIOS; una delle funzioni di quel firmware era eseguire un test automatico di accensione quando la macchina era accesa, e quindi leggere il software da un dispositivo di avvio ed eseguirlo. Il firmware compatibile con il BIOS del personal computer IBM viene utilizzato nei computer IBM PC compatibili. L’interfaccia del firmware estensibile è stata sviluppata da Intel, originariamente per le macchine basate su Itanium, e in seguito utilizzata anche come alternativa al BIOS nelle macchine basate su x86, inclusi i Mac Apple che utilizzano processori Intel.

Le workstation Unix avevano originariamente un firmware basato su ROM specifico del fornitore. Sun Microsystems successivamente sviluppato OpenBoot, in seguito noto come Open Firmware, che incorporava un interprete Forth, con gran parte del firmware viene scritto in Forth. È stato standardizzato dall’IEEE come standard IEEE 1275-1994; il firmware che implementa tale standard è stato utilizzato nei Mac basati su PowerPC e in alcune altre macchine basate su PowerPC, così come nei computer basati su SPARC di Sun. L’Advanced RISC Computing Specification ha definito un altro standard firmware, che è stato implementato su alcune macchine basate su MIPS e Alpha e sulle workstation SGI Visual Workstation x86.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *