Baasvahetussüsteem

Baasvahetussüsteem (inglise keeles "basic input/output system" ehk BIOS) on personaalarvuti riistvara juhtimiseks mõeldud madala taseme tarkvara, mis toimib liidesena riistvara ja operatsioonisüsteemi vahel.
Baasvahetussüsteem on mälus käitatav tarkvara ja see hõlmab riistvara operatsioonisüsteemiga liidestavaid seadmedraivereid. BIOS erineb muust tarkvarast selle poolest, et lisaks muutmällu laaditud süsteemiosale on osa süsteemist eellaaditud püsimällu.
Baasvahetussüsteem on esimene programm, mis arvuti sisselülitamisel käivitub. Selle ülesanne on tuvastada, käivitada ja testida riistvara (näiteks kõvaketas, videokaart jne) ning viia arvuti seisu, kus on võimalik kasutaja tarkvara käivitada. Arvuti kasutajal ei ole baasvahetussüsteemile juurdepääsu, kuid tavaliselt on arvutil olemas vahendid BIOS-i konfigureerimiseks.
Personaalarvuti baasvahetussüsteem võib asuda kolmes kohas:
Esimesed baasvahetussüsteemid.
Personaalarvuti algusaegadel hõlmas baasvahetussüsteemi tarkvara kõiki süsteemi jaoks vajalikke draivereid ja asus emaplaadi püsimälu kiipidel kõrvuti käivitustesti (inglise keeles "power-on self test" ehk POST) ja alglaaduriga (inglise keeles "bootstrap loader"). Draiverid olid iseseisvad ja püsimälust igal ajal kasutatavad. Alglaadeprogramm oli disainitud disketil või kõvakettal asuva alglaadesektori olemasolu kontrollimiseks ja sellelt operatsioonisüsteemi laadimiseks. Pärast operatsioonisüsteemi laadimist võis see välja kutsuda baasvahetussüsteemis asuvaid madala taseme arvutiprogramme (seadmedraivereid) riistvaraga suhtlemiseks. Algselt säilitati kõik baasvahetussüsteemi seadmedraiverid emaplaadi püsimälus. Nendeks olid draiverid klaviatuuri, videokaardi, jada- ja rööpvärati, disketiseadme ja kõvaketta kontrolleri, juhtkangi ning kella jaoks.
Emaplaadi püsimälu baasvahetussüsteem.
Personaalarvuti emaplaadil asub püsimälu baasvahetussüsteemi kiip, mis koondab süsteemi käitamiseks ja riistvara liidestamiseks vajalikke alglaadimisprogramme ja draivereid. Süsteemi käivitamisel testivad käivitustestid süsteemi põhilisi komponente. Samuti on võimalik käivitada seadistusprogrammi, mis salvestab süsteemiseadeid CMOS-kiibile (inglise keeles "complementary metal-oxide semiconductor" ehk täiendav metalloksiid-pooljuht). CMOS-muutmälu nimetatakse sageli ka säilmäluks, kuna selle voolutarve on väike (üks mikroamper) ja see on võimeline andmeid säilitama mitme aasta vältel. CMOS-kiibi toitmiseks kasutatakse emaplaadil asuvat väikest liitiumpatareid.
Emaplaadi püsimälu sisaldab ühel või mitmel kiibil asuvat programmikogumit, mis arvuti sisselülitamisel käivitub esimesena (enne operatsioonisüsteemi laadimist). Suurem osa personaalarvutite baasvahetussüsteemidest täidavad peamiselt nelja funktsiooni:
Püsimälu riistvara.
Püsimälu (ROM) on teatavat tüüpi mälu, mis saab püsivalt või poolpüsivalt hoida andmeid. Seda kutsutakse "püsivaks", sest sellele on võimatu või keeruline kirjutada. Püsimälu kutsutakse ka säilmäluks, sest andmed, mis on salvestatud püsimällu, jäävad alles ka siis, kui toide on välja lülitatud, mis teeb sellest ideaalse koha, kuhu paigutada personaalarvuti käivitamisinstruktsioonid ehk tarkvara, mis laadib süsteemi üles.
Kui personaalarvuti käivitatakse, siis "hüppab" selle protsessor automaatselt mäluaadressile FFFF0h, lootes sealt leida eest instruktsioonid, mille protsessor peab järgmisena täitma. See asukoht on muutmälus, täpselt 16 baiti enne esimese megabaidi lõppu. Kui see koht oleks ühendatud tavaliste muutmälu kiipidega, siis mistahes sinna salvestatud andmed kaoksid pärast toite väljalülitamist ja protsessor ei leiaks enam ühtegi instruktsiooni, mida täita, kui toide taas sisse lülitatakse. Püsimälukiibi paigutamisel just sellele aadressile on alglaadeprogramm püsivalt laaditud püsimällu ja kättesaadav iga kord, kui süsteem lülitatakse sisse.
Tavaliselt algab süsteemi püsimälu aadressilt E0000h või F0000h, mis on 128 kB või 64 kB enne esimese megabaidi lõppu. Kuna püsimälu kiibi suurus on tavaliselt kuni 128 kB, võivad püsimälu programmid enda alla haarata terve viimase 128 kB ploki esimesest megabaidist, sh kriitilise FFFF0h alglaadeinstruktsiooni asukoha aadressi, mis asub 16 baidi kaugusel baasvahetussüsteemi lõpust. Mõne emaplaadi püsimälu kiibid on suuremad: kuni 256 kB või 512 kB. Nendes olev täiendav kood käitub videokaardi püsimäluna (aadressivahemik C0000h-C7FFFh) emaplaatidel, kus videokaart on sisseehitatud ja võivad isegi sisaldada püsimälu draivereid aadressivahemikus C8000h kuni DFFFFh, et toetada teisigi sisseehitatud seadmeid, näiteks SCSI-d või võrguseadmeid.
Laienduskaartide püsimälud skaneeritakse ja loetakse automaatselt emaplaadi püsimälu poolt varases alglaadeprotsessi etapis käivitustesti ajal. Emaplaadi püsimälu skaneerib spetsiaalset muutmälu ala, mis on reserveeritud laienduskaartide püsimälule (aadressid C0000h-DFFFFh), otsides 55AAh signatuurbaite. See ala viitab püsimälu algusele.
Kõik laienduskaartide püsimälud peavad algama baitide 55AAh-ga, muidu ei tunne emaplaat neid ära. Kolmas bait viitab püsimälu suurusele 512-baidistes ühikutes, mida kutsutakse paragrahvideks, ja neljas bait on tegelik draiveriprogrammide algus. Suuruse baiti kasutab emaplaadi püsimälu testimisel. Emaplaadi püsimälu liidab kõik püsimälude peal olevad baidid kokku ja jagab saadud summa baitide arvuga. Selle tulemusel peaks tekkima jääk, mis on 100h. Programmeerija kasutabki laienduskaardile püsimälu luues tavaliselt nn täitebaite, et kontrollsumma (inglise keeles "checksum") tuleks õige. Kasutades kontrollsummat, testib emaplaat käivitustesti ajal igat laienduskaardi püsimälu ja märgib ära kõik need, mis on rikutud.
Emaplaadi püsimälu käivitab kõik skaneerimise ajal leitud programmid, mis asuvad laienduskaartide püsimäludes. Seda näeb enamikus süsteemides, kui need käivitada, ja ka käivitustesti ajal, kui videokaardi baasvahetussüsteem initsialiseerib ja annab teada oma kohalolekust.
Püsimälu varjutamine.
Püsimälu kiibid on väga aeglased, omades 150-nanosekundilist pöördumisaega, võrreldes dünaamilise muutmälu (inglise keeles "dynamic random access memory" ehk DRAM) pöördumisajaga, mis on enamikus süsteemides alla 10 nanosekundi. Seetõttu on praktiliselt kõikides süsteemides olevad püsimälud varjutatud, mis tähendab, et nad on kopeeritud muutmällu alglaadimise ajal, seda kiirema juurdepääsu saavutamise eesmärgil tavapärase kasutamise ajaks. Varjutamise protseduur kopeerib püsimälu muutmällu ja määrab siis muutmälule sama aadressi, mida püsimälu eelnevalt kasutas, blokeerides protsessi käigus tegeliku püsimälu. Seda võib vaadelda ka kui püsimälu, mis töötab muutmälu kiirusega.
Jõudluse kasv laienduskaartide varjutamisel on väga vähene ja võib tekitada probleeme, kui see pole korrektselt seadistatud. Seetõttu oleks enamasti mõistlik varjutada ainult emaplaadi püsimälu (ja võib-olla ka videokaardi oma) ja jätta teised rahule.
Tüüpiliselt on varjutamine kasulik ainult 16-bitiste operatsioonisüsteemide kasutamisel, näiteks DOS ja Windows 3.x-i puhul. Kui käitada 32-bitist või 64-bitist operatsioonisüsteemi, siis on varjutamine praktiliselt kasutu, sest need operatsioonisüsteemid ei kasuta töötamise ajal 16-bitist püsimälu koodi. Selle asemel need operatsioonisüsteemid laadivad draiverid muutmällu, mis asendavad 16-bitist püsimälu koodi, mida kasutatakse ainult alglaadimisel.
Püsimälukiibi tüübid.
Personaalarvutites kasutatavad põhilised püsimälutüübid on järgmised:
Olenemata püsimälu tüübist, mida süsteem kasutab, on selles salvestatud andmed püsivad ja jäävadki selliseks, juhul kui neid meelega ei kustutata või üle ei kirjutata (nendes, kus on see võimalik).
Kuni 1990. alguseni salvestati BIOS ROM- ja PROM-kiipide peale, mida ei saa ümber programmeerida. Kui süsteemid läksid keerulisemaks ja ümberprogrammeeritavad mälud muutusid odavamaks, hakati kasutama EEPROM- ja flash-mäluseadmeid.
Püsimälu baasvahetussüsteemi tootjad.
Mitmed populaarsed baasvahetussüsteemide tootjad tänasel turul varustavad valdava osa emaplaatide ja süsteemide tootjate püsimälusid oma koodiga.
Mitmed ettevõtted on spetsialiseerunud ühilduva püsimälu baasvahetussüsteemi toote arendamisele. Kolm suuremat nendest on American Megatrends, Inc. (AMI), Phoenix Technologies ja Award Software (nüüdne omanik on Phoenix Technologies). Iga ettevõte litsentsib oma püsimälu baasvahetussüsteemi emaplaadi tootjatele nii, et tootjad saavad keskenduda pigem riistvarale kui tarkvarale. Saamaks ühte sellist püsimälu oma emaplaadi peale, peab originaalseadmete tootja (inglise keeles "original equipment manufacturer" ehk OEM) vastama paljudele küsimustele süsteemi disaini kohta, mis võimaldaks arendada või valida olemasolevate hulgast sobivat baasvahetussüsteemi. Püsimälu baasvahetussüsteemi kombineerimine ei ole õnnele toetuv ülesanne, samas ei ole ka olemas ühte kindlat ja üldist ning kõigega ühilduvat püsimälu. AMI, Award ja Phoenix tarnivad mitmeid variatsioone oma baasvahetussüsteemi koodist paljudele emaplaaditootjatele, igaüks neist on valminud eritellimusena spetsiifilisele emaplaadile.
Üle aastate on toimunud suured muutused baasvahetussüsteemitööstuses. Intel, võib-olla suurim baasvahetusüsteemide klient, on vahetanud nende tarnijat Phoenixi ja AMI vahel oma enamuse emaplaatide jaoks. Intel kasutas algupäraselt Phoenixi baasvahetussüsteemi tuuma oma emaplaatidel 1995. aasta lõpuni, pärast mida see vahetati AMI vastu. AMI omi kasutati kuni aastani 1997, misjärel vahetati nende tarnija tagasi Phoenix’i vastu. Aastal 1999 Intel vahetas jälle, tol korral jälle AMI vastu. Pole vahet, kas Intel sai oma baasvahetussüsteemi tuuma Phoenixilt või AMI-lt, on need tugevalt kohandatud vastavalt eraldi emaplaatide jaoks, kuhu nad on paigaldatud.
Teine suur areng toimus 1998. aasta lõpus, kui Phoenix ostis Awardi. Sellest alates on Phoenix müünud mõlemaid Phoenixi ja Awardi baasvahetussüsteemi erinevate toodetena. Award’i baasvahetussüsteemi müüakse kui standardset toodet, samal ajal kui Phoenixi baasvahetussüsteemi müüakse kui võimalusterohket baasvahetussüsteemi keerulistemate süsteemide jaoks. Hetkel on baasvahetussüsteemiturg enamuselt jagatud AMI ja Phoenixi vahel, aga Phoenix ei arenda ainult baasvahetussüsteemi mitmetele süsteemidele, vaid on ka esmane baasvahetussüsteemi arendaja, kes vastutab uute baasvahetussüsteemide arenduse ja nende stardardimise eest.
Baasvahetussüsteemi tark- ja riistvara.
Süsteemi alglaadimise võimekuse tagamiseks peavad olulised draiverid olema süsteemi alglaadimise ajal aktiivsed, näiteks peab minimaalne hulk kõvakettadraivereid olema eellaaditud kas emaplaadi või laienduskaardi püsimällu.
Paljud laienduskaardid on alati varustatud püsimäluga: