det finns många olika metoder tillgängliga för att ladda ett kort initialt program till en dator. Dessa metoder når från enkel, fysisk inmatning till flyttbara media som kan hålla mer komplexa program.
pre integrated-circuit-ROM examplesEdit
Early computersEdit
tidiga datorer på 1940-och 1950-talet var unika tekniska ansträngningar som kunde ta veckor att programmera och programladdning var ett av många problem som måste lösas. En tidig dator, ENIAC, hade inget program lagrat i minnet, men inrättades för varje problem genom en konfiguration av anslutande kablar. Bootstrapping gällde inte ENIAC, vars hårdvarukonfiguration var redo att lösa problem så snart strömmen applicerades.
EDSAC-systemet, den andra lagrade programdatorn som ska byggas, använde stegbrytare för att överföra ett fast program till minnet när startknappen trycktes. Programmet lagrat på den här enheten, som David Wheeler slutförde i slutet av 1948, laddade ytterligare instruktioner från stansat tejp och körde dem sedan.
First commercial computersEdit
de första programmerbara datorerna för kommersiell försäljning, som UNIVAC i och IBM 701 inkluderade funktioner för att göra deras funktion enklare. De inkluderade vanligtvis instruktioner som utförde en fullständig ingångs-eller utgångsoperation. Samma hårdvarulogik kan användas för att ladda innehållet på ett stanskort (de mest typiska) eller andra ingångsmedier, till exempel en magnetisk trumma eller magnetband, som innehöll ett bootstrap-program genom att trycka på en enda knapp. Detta uppstartskoncept kallades en mängd olika namn för IBM-datorer från 1950-talet och början av 1960-talet, men IBM använde termen ”Initial Programbelastning” med IBM 7030-sträckan och använde den senare för sina mainframe-linjer, från och med System/360 1964.
IBM 701-datorn (1952-1956) hade en ”Load” – knapp det initierade läsning av det första 36-bitars ordet i huvudminnet från ett stansat kort i en kortläsare, ett magnetband i en bandenhet eller en magnetisk trumenhet, beroende på läget för lastväljaren. Det vänstra 18-bitars halvordet utfördes sedan som en instruktion, som vanligtvis läser ytterligare ord i minnet. Det laddade startprogrammet utfördes sedan, vilket i sin tur laddade ett större program från det mediet till minnet utan ytterligare hjälp från den mänskliga operatören. Termen ”boot” har använts i denna mening sedan åtminstone 1958.
andra IBM-datorer från den tiden hade liknande funktioner. Till exempel använde IBM 1401-systemet (c. 1958) en kortläsare för att ladda ETT program från ett stansat kort. De 80 tecken som lagrats i det stansade kortet lästes in i minnesplatser 001 till 080, då skulle datorn förgrena sig till minnesplats 001 för att läsa sin första lagrade instruktion. Denna instruktion var alltid densamma: flytta informationen i dessa första 80 minnesplatser till ett monteringsområde där informationen i stansade kort 2, 3, 4 och så vidare kunde kombineras för att bilda det lagrade programmet. När denna information flyttades till monteringsområdet skulle maskinen förgrena sig till en instruktion på plats 080 (läs ett kort) och nästa kort skulle läsas och dess information bearbetas.
ett annat exempel var IBM 650 (1953), en decimalmaskin, som hade en grupp på tio 10-Positionsbrytare på sin operatörspanel som var adresserbara som ett minnesord (adress 8000) och kunde köras som en instruktion. Således ställer omkopplarna till 7004000400 och trycker på lämplig knapp skulle läsa det första kortet i kortläsaren i minnet (op-kod 70), börjar vid adress 400 och sedan hoppa till 400 för att börja köra programmet på det kortet.
IBMs konkurrenter erbjöd också en knapp programbelastning.
- CDC 6600 (c. 1964) hade en död startpanel med 144 vippbrytare; den döda startomkopplaren skrev in 12 ord från vippomkopplarna till minnet på perifer processor (PP) 0 och initierade lastsekvensen. PP 0 laddade den nödvändiga koden i sitt eget minne och initialiserade sedan de andra PPs.
- GE 645 (c. 1965) hade en ”SYSTEM BOOTLOAD”-knapp som, när den trycktes, orsakade en av I/O-styrenheterna att ladda ett 64-ordsprogram i minnet från ett diod skrivskyddat minne och leverera ett avbrott för att få det programmet att börja köras.
- den första modellen av PDP-10 hade en” Läs IN ” -knapp som, när den trycks in, Återställ processorn och startade en I/O-operation på en enhet som anges av omkopplare på kontrollpanelen, läser i ett 36-bitars ord som ger en måladress och räknar för efterföljande ordläsningar; när läsningen slutfördes började processorn köra koden som lästes in genom att hoppa till det sista ordet som lästes in.
en anmärkningsvärd variant av detta finns på Burroughs B1700 där det varken finns en bootstrap ROM eller en hårdkodad IPL-operation. Istället, efter att systemet har återställts läser och kör opcodes sekventiellt från en bandenhet monterad på frontpanelen; detta ställer in en startladdare i RAM som sedan körs. Men eftersom detta gör få antaganden om systemet kan det lika bra användas för att ladda diagnostiska (Underhållsprovrutin) band som visar en begriplig kod på frontpanelen även i fall av grovt CPU-fel.
IBM System / 360 och successorsEdit
i IBM System/360 och dess efterträdare, inklusive de nuvarande Z / Architecture-maskinerna, är startprocessen känd som Initial Program Load (IPL).
IBM myntade denna term för 7030 (Stretch), återupplivade den för utformningen av systemet/360 och fortsätter att använda den i dessa miljöer idag. I System / 360-processorerna initieras en IPL av datoroperatören genom att välja den tre hexadecimala siffriga enhetsadressen (CUU; C=i/O-kanaladress, UU=styrenhet och enhetsadress) följt av att trycka på LASTKNAPPEN. På high end System / 360-modellerna, de flesta System/370 och några senare system simuleras funktionerna på omkopplarna och LASTKNAPPEN med hjälp av valbara områden på skärmen på en grafikkonsol, ofta en IBM 2250-liknande enhet eller en IBM 3270-liknande enhet. Till exempel på System/370-modellen 158 resulterar tangentbordssekvensen 0-7-X (noll, sju och X, i den ordningen) i en IPL från enhetsadressen som knappades in i ingångsområdet. Amdahl 470V / 6 och relaterade processorer stödde fyra hexadecimala siffror på de processorer som hade den valfria andra kanalenheten installerad, för totalt 32 kanaler. Senare skulle IBM också stödja mer än 16 kanaler.
IPL-funktionen i systemet / 360 och dess efterträdare, och dess kompatibla som Amdahl, läser 24 byte från en operatörsspecifik enhet till huvudlagring som börjar vid verklig adress noll. Den andra och tredje gruppen av åtta byte behandlas som Kanalkommandoord (CCWs) för att fortsätta ladda startprogrammet (den första CCW simuleras alltid av CPU och består av ett Läs IPL-kommando, 02h, med kommandokedja och undertrycka felaktig längdindikering verkställs). När I / O-kanalkommandona är färdiga laddas sedan den första gruppen på åtta byte i processorns programstatus Word (PSW) och startprogrammet börjar köras på den plats som anges av den PSW. IPL-enheten är vanligtvis en hårddisk, därav den speciella betydelsen av kommandot 02h läs-typ, men exakt samma procedur används också för att IPL från andra inmatningsenheter, såsom bandstationer eller till och med kortläsare, på ett enhetsoberoende sätt, vilket till exempel möjliggör installation av ett operativsystem på en helt ny dator från ett OS initial distribution magnetic tape. För skivkontroller orsakar kommandot 02h också att den valda enheten försöker cylinder 0000h, Huvud 0000h, simulera en Sökcylinder och huvudkommando, 07h och söka efter post 01h, simulera ett Sök-ID lika kommando, 31h; söker och sökningar simuleras inte av band-och kortkontroller, eftersom för dessa enhetsklasser är ett 02h-kommando helt enkelt ett sekventiellt läskommando, inte ett Läs-IPL-kommando.
skivan, tejpen eller kortdäcket måste innehålla ett speciellt program för att ladda det faktiska operativsystemet eller fristående verktyget i huvudlagringen, och för detta specifika ändamål placeras ”IPL-Text” på disken av det fristående Dasdi-programmet (Direct Access Storage Device Initialization) eller ett motsvarande program som körs under ett operativsystem, t.ex. ICKDSF, men IPL-kapabla band och kortdäck distribueras vanligtvis med denna ”IPL-Text” som redan finns.
MinicomputersEdit
minidatorer, som börjar med den digitala Equipment Corporation (Dec) PDP-5 och PDP-8 (1965) förenklad design med hjälp av CPU för att hjälpa input och output operationer. Denna sparade kostnad men gjorde uppstart mer komplicerat än att trycka på en enda knapp. Minidatorer hade vanligtvis något sätt att växla i korta program genom att manipulera en rad omkopplare på frontpanelen. Eftersom de tidiga minidatorerna använde magnetiskt kärnminne, som inte förlorade sin information när strömmen var avstängd, skulle dessa bootstrap-lastare förbli på plats om de inte raderades. Radering hände ibland av misstag när ett programfel orsakade en slinga som skrev över hela minnet.
andra minidatorer med en sådan enkel form av uppstart inkluderar Hewlett-Packards HP 2100-serie (mitten av 1960-talet), den ursprungliga Data General Nova (1969) och DEC: s PDP-11 (1970).
DEC lade senare till ett valfritt diodmatris skrivskyddat minne för PDP-11 som lagrade ett bootstrap-program på upp till 32 ord (64 byte). Den bestod av ett tryckt kretskort, M792, som anslöt sig till Unibus och innehöll en 32 x 16 matris av halvledardioder. Med alla 512 dioder på plats innehöll minnet alla” en ” bitar; kortet programmerades genom att skära av varje diod vars bit skulle vara ”noll”. DEC sålde också versioner av kortet, BM792-Yx-serien, förprogrammerad för många standardinmatningsenheter genom att helt enkelt utelämna de onödiga dioderna.
Efter den äldre metoden har den tidigare PDP – 1 en hårdvarulastare, så att en operatör bara behöver trycka på ”load” – omkopplaren för att instruera pappersbandläsaren att ladda ETT program direkt i kärnminnet. Data General Supernova använde frontpanelomkopplare för att få datorn att automatiskt ladda instruktioner i minnet från en enhet som anges av frontpanelens dataomkopplare och sedan hoppa till laddad kod; Nova 800 och 1200 hade en omkopplare som laddade ETT program i huvudminnet från ett speciellt skrivskyddat minne och hoppade till det.
Early Minicomputer boot loader examplesEdit
i en minidator med en papperstejpläsare skulle det första programmet som kördes i startprocessen, boot loader, läsa in i kärnminnet antingen den andra stegs boot loader (ofta kallad en binär Loader) som kunde läsa pappersband med kontrollsumma eller operativsystemet från ett externt lagringsmedium. Pseudokod för startläsaren kan vara så enkel som följande åtta instruktioner:
- Ställ in p-registret till 9
- kontrollera pappersbandsläsaren redo
- om det inte är klart, hoppa till 2
- Läs en byte från pappersbandsläsaren till ackumulatorn
- lagra ackumulatorn för att adressera i P-registret
- Om tejpens slut, Hoppa till 9
- öka p-registret
- Hoppa till 2
ett relaterat exempel är baserad på en lastare för en Nicolet Instrument Corporation minidator på 1970-talet, med hjälp av papperstejp läsare-Punch enhet på en teletyp modell 33 ASR teleprinter. Byte av sin andra stegslastare läses från pappersband i omvänd ordning.
- Ställ in p-registret till 106
- kontrollera pappersbandsläsaren redo
- om den inte är klar, hoppa till 2
- Läs en byte från pappersbandsläsaren till ackumulatorn
- lagra ackumulatorn för att adressera i P-registret
- minskning av p-registret
- Hoppa till 2
längden på den andra stegslastaren är sådan att den slutliga byte skriver över plats 7. När instruktionen i plats 6 körs startar plats 7 den andra stegslastaren. Den andra stegslastaren väntar sedan på att det mycket längre bandet som innehåller operativsystemet ska placeras i bandläsaren. Skillnaden mellan starthanteraren och andra stegslastaren är tillägget av kontrollkod för att fälla papperstejpläsningsfel, en frekvent förekomst med relativt låg kostnad, ”deltid” hårdvara, såsom Teletypmodellen 33 ASR. (Friden Flexowriters var mycket mer tillförlitliga, men också relativt kostsamma.)
starta den första mikrodatorenredigera
de tidigaste mikrodatorerna, som Altair 8800 (släpptes först 1975) och en ännu tidigare liknande maskin (baserad på Intel 8008 CPU) hade ingen bootstrapping-hårdvara som sådan. När den startades skulle CPU: n se minne som skulle innehålla körbar kod som endast innehöll binära nollor—minnet rensades genom att återställa när den startades. Frontpanelerna på dessa maskiner Bar vippbrytare för inmatning av adresser och data, en omkopplare per bit av datorminneordet och adressbussen. Enkla tillägg till hårdvaran tillät en minnesplats åt gången att laddas från dessa växlar för att lagra bootstrap-kod. Under tiden hölls CPU från att försöka utföra minnesinnehåll. En gång korrekt laddad aktiverades CPU: n för att köra bootstrapping-koden. Denna process var tråkig och måste vara felfri.
integrerad krets skrivskyddat minne eraEdit
startprocessen för minidatorer och mikrodatorer revolutionerades genom införandet av integrerad krets skrivskyddat minne (ROM), med dess många varianter, inklusive maskprogrammerade ROM-skivor, programmerbara ROM-skivor (PROM), raderbara programmerbara ROM-skivor (EPROM) och flashminne. Dessa tillät firmware startprogram som ska ingå som en del av datorn. Introduktionen av en (extern) ROM var i en italiensk telefonväxlare, kallad ”Gruppi Speciali”, patenterad 1975 av Alberto Ciaramella, forskare vid CSELT. Gruppi Speciali var från och med 1975 en helt enkelknappsmaskin som startade in i operativsystemet från ett ROM-minne bestående av halvledare, inte från ferritkärnor. Även om ROM-enheten inte var inbyggd i datorn till Gruppi Speciali, på grund av maskinens konstruktion, tillät den också ROM-start med en knapp i maskiner som inte var konstruerade för det (därför var denna ”bootstrap-enhet” arkitekturoberoende), t.ex. PDP-11. Lagring av maskinens tillstånd efter avstängningen var också på plats, vilket var en annan kritisk funktion i telefonväxlingstävlingen.
vanligtvis kommer varje mikroprocessor, efter en återställning eller avstängning, att utföra en startprocess som vanligtvis har formen av ”börja exekvera koden som hittas från en viss adress” eller ”leta efter en multibyte-kod på en viss adress och hoppa till den angivna platsen för att börja exekvera”. Ett system byggt med den mikroprocessorn kommer att ha den permanenta ROM som upptar dessa speciella platser så att systemet alltid börjar fungera utan operatörsassistans. Till exempel börjar Intel x86-processorer alltid med att köra instruktionerna som börjar vid F000:FFF0, medan för MOS 6502-processorn börjar initialiseringen genom att läsa en vektoradress med två byte på $FFFD (MS byte) och $FFFC (LS byte) och hoppa till den platsen för att köra bootstrap-koden.
Apple Inc.den första datorn, Apple 1 som introducerades 1976, innehöll PROM-chips som eliminerade behovet av en frontpanel för startprocessen (som var fallet med Altair 8800) i en kommersiell dator. Enligt Apples annons tillkännager det ” inga fler växlar, inga fler lampor … firmware i PROMS gör att du kan ange, Visa och felsöka program (allt i hex) från tangentbordet.”
På grund av kostnaden för skrivskyddat minne vid den tiden startade Apple II-serien sina diskoperativsystem med hjälp av en serie mycket små inkrementella steg, var och en passerade kontrollen vidare till nästa fas av den gradvis mer komplexa startprocessen. (Se Apple DOS: Boot loader). Eftersom så lite av diskoperativsystemet förlitade sig på ROM, var hårdvaran också extremt flexibel och stödde ett brett utbud av anpassade diskkopieringsskyddsmekanismer. (Se Programvara Sprickbildning: Historia.)
vissa operativsystem, framför allt Macintosh-system före 1995 från Apple, är så nära sammanvävda med sin hårdvara att det är omöjligt att starta ett annat operativsystem än det vanliga. Detta är den motsatta ytterligheten av scenariot med hjälp av omkopplare som nämns ovan; Det är mycket oflexibelt men relativt felsäkert och idiotsäker så länge all hårdvara fungerar normalt. En vanlig lösning i sådana situationer är att designa en startladdare som fungerar som ett program som tillhör standard OS som kapar systemet och laddar det alternativa operativsystemet. Denna teknik användes av Apple för dess a / UX Unix-implementering och kopierades av olika freeware-operativsystem och BeOS Personal Edition 5.
vissa maskiner, som Atari ST-mikrodatorn, var ”instant-on”, med operativsystemet som kördes från en ROM. Hämtning av operativsystemet från sekundär eller tertiär butik eliminerades således som en av de karakteristiska operationerna för bootstrapping. För att tillåta systemanpassningar, tillbehör och annan supportprogramvara att laddas automatiskt lästes Ataris diskettenhet för ytterligare komponenter under startprocessen. Det fanns en tidsfördröjning som gav tid att manuellt infoga en diskett när systemet sökte efter de extra komponenterna. Detta kan undvikas genom att sätta in en tom disk. Atari ST-hårdvaran var också utformad så att patronplatsen kunde ge inbyggt programkörning för speländamål som en holdover från Ataris arv som gjorde elektroniska spel; genom att sätta in Spectre GCR-patronen med Macintosh-system-ROM i spelplatsen och slå på Atari, kunde den ”starta” Macintosh-operativsystemet snarare än Ataris egna TOS.
IBM – persondatorn inkluderade ROM-baserad firmware som heter BIOS; en av funktionerna i den firmware var att utföra ett självtest När maskinen var påslagen och sedan Läsa Programvara från en startenhet och köra den. Firmware kompatibel med BIOS på IBM persondator används i IBM PC-kompatibla datorer. Det utbyggbara Firmwaregränssnittet utvecklades av Intel, ursprungligen för Itanium-baserade maskiner, och användes senare också som ett alternativ till BIOS i x86-baserade maskiner, inklusive Apple Mac-datorer med Intel-processorer.
Unix-arbetsstationer hade ursprungligen leverantörsspecifik ROM-baserad firmware. Sun Microsystems utvecklade senare OpenBoot, senare känd som öppen Firmware, som införlivade en Forth tolk, med mycket av firmware som skrivs in Forth. Det standardiserades av IEEE som IEEE standard 1275-1994; firmware som implementerar den standarden användes i PowerPC-baserade Mac-datorer och några andra PowerPC-baserade maskiner, liksom Suns egna SPARC-baserade datorer. Den avancerade RISC-Datorspecifikationen definierade en annan firmwarestandard, som implementerades på vissa MIPS-baserade och Alfa-baserade maskiner och SGI Visual Workstation x86-baserade arbetsstationer.