Keskprotsessor

Allikas: Vikipeedia
Inteli mikroprotsessor 80486DX2 (suurus 12×6,75 mm).

Keskprotsessor (inglise keeles Central Processing Unit ehk CPU) on arvuti osa, mis täidab arvutiprogrammide juhiseid ning on peamine vahend arvuti ülesannete täitmisel. Protsessor täidab programmi käske etteantud järjekorras, et süsteem saaks täita kõik ettenähtud aritmeetilised, loogilised ja sisend/väljundoperatsioonid. Kuigi protsessorite kuju, disain ja rakendus on võrreldes esimeste arvutitega märkimisväärselt muutunud, on nende põhiline kasutus samaks jäänud.

Esimeste protsessorite tootmisel loodi peaaegu iga arvuti või rakenduse jaoks oma protsessoritüüp. See osutus väga kulukaks ning seetõttu hakati otsima meetodeid protsessorite masstootmiseks. Standardiseerimine algas eraldiseisvatel transistoridel põhinevate suur- ja miniarvutite ajastul. Ühtlasi suurenes mikrokiipide populaarsus, kuna need võimaldasid toota komplekssemaid protsessoreid. Tänu protsessorite väiksemaks ja standardsemaks muutumisele kasutatakse neid tänapäeval kõikjal: alustades autodest ja mobiiltelefonidest ning lõpetades mänguasjadega.

Ajalugu[muuda | redigeeri lähteteksti]

EDVAC, elektrooniline digitaalne arvuti.

ENIAC ja teised sama tüüpi arvutid nõudsid erinevate ülesannete täitmiseks pidevat kaabelduse uuendamist. Seetõttu nimetati neid fikseeritavate programmidega arvutiteks. Aga kuna termin "protsessor" on defineeritud kui seade tarkvara ülesannete täitmiseks, siis esimesed päris protsessorid jäävad samasse aega nn "püsiprogramsete" arvutite kasutusevõtuga.

Idee peale sellisest arvutist, millesse on ladustatud programme, tuli juba ENIACi loojatelt Presper Eckertil ja John William Mauchlyl, kuid sellel hetkel jäi idee ajapuuduse tõttu teostamata. Siiski oli enne neid sellise idee peale tulnud matemaatik John von Neumann, kes skitseeris 1945. aastal EDVACi: püsiprogramse arvuti. EDVAC pidi olema võimeline täitma teatud hulga erinevaid ülesanded, mida kombineerides sai luua programme. Eelis ENIACi ees oli aga see, et neid programme ei pidanud alati käsitsi seadistama, vaid need sai ladustada arvuti mällu. Tänu sellele sai programme lihtsamalt ka muuta, uuendades mälu sisu.

Kuigi von Neumanni peetakse tänu EDVACi väljatöötamisele programmidega ladustatud arvutite loojaks, on siiski juba enne teda selliste ideede peale tuldud ning neid ka rakendatud. Näiteks Harvardi ülikoolis väljatöötatud elektro-mehaaniline arvuti Harvard Mark I, mis rakendas püsiprogramsuse ideed kasutades perfolinte. Peamine erinevus von Neumanni disaini ja Harvardi arhitektuuri vahel on see, et viimane eraldab protsessori tegutsemises juhised ja andmed, kui esimene kasutab mõlema jaoks sama mälu. Tänapäevased protsessorid on põhiliselt tehtud von Neumanni idee põhjal, kuid omavad ka Harvardi masinale omaseid tunnuseid.

Protsessori tööpõhimõte[muuda | redigeeri lähteteksti]

Kõik protsessorid, nii erinevad kui nad ka poleks, töötavad ühel ja samal põhimõttel, milleks on kahendloogika.

Igale märgile või arvule vastab kahendsüsteemi arv. Kahendsüsteem tähendab lihtsustatult kahte erinevat pingenivood: loogiline 1 ehk kõrge (+5V, 3,3V, 3V või vähem) nivoo ja loogiline 0 ehk madal nivoo (0V). Põhiliseks "ehituskiviks" protsessoris on erinevad loogikaväravad, millega sooritatakse erinevaid loogikatehteid. Ühte loogikalülitusse suubuvad üks või mitu sisendsignaali ning väljub üks sisendsignaal.

Näiteks loogiline eitus inverter on loogikalülitus, kuhu siseneb üks sisendsignaal.
NOT IEC.svg
Kui A on 0, siis Q on 1 ning kui A on 1 siis Q on 0.

Kahe sisendiga loogikalülitus on näiteks NING-EI:
NAND IEC.svg
NING-EI loogikalülituse puhul saab Q väärtuseks 0, kui A ja B mõlemad on 1-ed, muudel juhtudel on Q väärtuseks 1.

Loogikalülitustega teostatakse kõikvõimalikke loogikatehteid nagu NING, VÕI, VÕI-EI, NING-EI, Välistav või, Inverteeritud välistav-VÕI ja eitus.

Aritmeetika ja loogikatehteid registritesse salvestatud andmetega teostab protsessoris aritmeetika-loogikaseade vastavalt käsudekoodrist saadud korraldustele.

Protsessori ülesehitus[muuda | redigeeri lähteteksti]

Protsessori põhiülesandeks on teostada etteantud ülesannete jada. Need ülesanded hoitakse arvuti mälus.

Protsessori töös võib lahku lüüa neli põhitoimingut:

  • hangi: ülesande otsimine ja leidmine
  • dekodeeri: leitud andmed "lõhutakse" nii, et iga protsessori osa saaks endale olulise tüki
  • teosta: protsessori erinevad osad teevad koostööd ühise eesmärgi nimel
  • tagasta: saadud tulemus kirjutatakse kas protsessori registrisse või arvuti põhimällu

Siinid[muuda | redigeeri lähteteksti]

Next.svg Pikemalt artiklis Siin

Info liigutamiseks on protsessor ühendatud mäluga läbi siinide. Peamised siinid on andmesiin ning aadressisiin. Aadressisiinile pannakse mäluaadress, mille poole protsessor pöördub ning andmesiinile informatsioon, mida saadetakse. Lisaks on väike ühebitine siin, mis määrab, kas andmeid loetakse mälust või kirjutatakse sinna.

Registrid[muuda | redigeeri lähteteksti]

Next.svg Pikemalt artiklis Register (arvutitehnika)

Registrid on protsessori sisesed mälupesad andmete ajutiseks paigutamiseks. Sinna paigutatakse andmed vahetult enne ja pärast tehteid nendega. Registrid võimaldavad vajadusel kiiret ligipääsu nendes olevatele andmetele. Vahel kasutatakse mingeid andmeid sagedamine kui teisi ning aja kokkuhoiuks hoitakse neid registris. Registrid jagunevad üldkasutatavateks ning eriregistriteks, mis hoolitsevad süsteemi toimimise eest. Näiteks x86 protsessoril on üldkasutatavad registrid AX, BX, CX ja DX ning süsteemseteks registriteks on käsuloendur, kus hoitakse järgmise käsu mäluaadressi. Lipuregister on osa, kus on kirjas mitmesugused süsteemsed olekusignaalid ehk lipud, teiste seas näiteks eelmise võrdlustehte tulemus.

x86 protsessorite registreid:
Prose.gif
register
funktsioon, kirjeldus
Register44.png
Lisaks registritele on ühes protsessoris kindlasti ka osa, mis tegeleb arvutamisega vt. aritmeetika-loogikaseade. Päris kindlasti on olemas täisarvudega arvutuste tegemise moodul, aga praktiliselt kõigil tänapäeva protsessoritel on ka integreeritud ujukomaarvudega opereerimise moodul. Vanematel protsessoritel polnud see sugugi alati nõnda, seda sai osta eraldi lisana, vt. Intel 8087. Esialgu tuli teha reaalarvulisi arvutusi kasutades harilikku täisarvumoodulit. Sellised arvutused olid aga väga aeglased.

Käsudekooder[muuda | redigeeri lähteteksti]

Next.svg Pikemalt artiklis Dekooder#Käsudekooder

Käsudekooder (Instruction decoder) jagab protsessorile toimimiseks ülesandeid juhtsignaalide abil. Ta "tõlgib" käsukoodide registrist saadud bitid protsessori igale osale arusaadavateks juhtsignaalideks.

Juhtseade ehk kontroll-moodul[muuda | redigeeri lähteteksti]

Protsessori tööd juhib protsessori sisene juhtseade. Selle ülesanne on organiseerida, et kõik toimuks korrapäraselt - käsu ja andmete lugemine mälust, käsu dekodeerimine, ülesande teostamine ja andmete tagastamine, mälu ülekirjutamine. Juhtseade juhib ja jälgib kõiki protsessori osi.

Vahemälu[muuda | redigeeri lähteteksti]

Next.svg Pikemalt artiklis Vahemälu

Protsessori vahemälu on protsessori kasutada olev kiire mälu, kuhu ajutiselt pannakse andmed, mis vajavad kiiret ligipääsu. Lihtsalt öeldes püütakse vahemällu tuua need andmed, mida protsessor ilmselt järgmisena vajab. Vahemällu toodud andmed ei osutu umbes 10% juhtudest siiski nendeks, mida protsessor järgmiseks vajab, kuid see ei muuda suurt midagi, sest sellisel juhul võtab vajalike andmete leidmine ja protsessorini toomine sama palju aega kui üldse ilma vahemäluta töötamisel. 90% juhtudest arvatakse siiski vajalikud andmed õigesti ära. Vahemälu kasutamine suurendab oluliselt protsessori tegevusega hõivatud (ehk kasulikku) tööaega, sest vahemälu töötab enamasti protsessoriga samal taktsagedusel ning sellega suhtlemine on seega oluliselt kiirem kui näiteks muutmäluga suhtlemine.

Mida suurem on protsessori vahemälu hulk, seda suurem on protsessori reaalne tööaeg (ei pea ootama mälust andmete saamist, vaid saab pidevalt arvutustega tegeleda). Kuna vahemälu on SRAM-tüüpi mälu, siis on selle ehitus üsna keeruline ja protsessori vahemälu kasvades kasvab ka protsessoris transistorite hulk märkimisväärselt. See aga tingib protsessori tunduvalt suurema toitevajaduse, eralduva soojushulga kasvu jne.

Protsessorite iseloomulikud parameetrid[muuda | redigeeri lähteteksti]

Kõige olulisem protsessori omadus on tema töökiirus ehk see, kui palju instruktsioone ta suudab ühe ajaühiku jooksul täita. Kaks olulist komponenti, mis määravad töökiiruse on:

  1. protsessori taktsagedus
  2. protsessori arhitektuur

Taktsagedus[muuda | redigeeri lähteteksti]

Next.svg Pikemalt artiklis Taktsagedus

Taktsagedus näitab protsessori sees kasutatava sünkroniseeriva signaali sagedust (näiteks 1GHz protessori korral sünkroniseeritakse protsessori sees toimuvat tegevust miljard korda sekundis, 10 MHz protsessori korral 10 miljonit korda sekundis). See ei näita otseselt protsessori jõudlust, kuid ühesuguse ehitustega protsessorite puhul on selle parameetri abil võimalik väga lihtsalt protsessorite võimaliku jõudlust hinnata. Siinkohal ei tohi segamini ajada protsessori töökiirust ja süsteemi töökiirust. Arvuti kiirus oleneb eelkõige siiski mälu kiirusest.

Protsessori taktsagedus saadakse süsteemisiini töösageduse ja protsessori kordaja korrutamise teel.

Kell[muuda | redigeeri lähteteksti]

Igal arvutil on sisemine kell. Süsteemne kell dikteerib protsessori taktsageduse ja sünkroniseerib arvuti eri osade tööd. Kella töö on äärmiselt lihtne: kindlate ajavahemike tagant vahetatakse protsessorile antavat pinget. Kell on protsessori töötamiseks fundamentaalse tähtsusega, võimaldades protsessoril täita kordamööda erinevaid operatsioone. Mida kiirem kell, seda rohkem ülesandeid suudetakse sekundis täita.

Protsessorite arhitektuur[muuda | redigeeri lähteteksti]

Protsessoreid võib jagada arhitektuuri järgi nt Harvardi arhitektuuriga või Von Neumanni arhitektuuriga ja täpsemalt nt. protsessorite perekondadesse. Perekonnad on nt. x86, SPARC, PowerPC, MIPS, ARM jpt. Protsessorite perekondade erinevused on alati piisavalt suured selleks, et samad masinkoodis programmid (tarkvara) ilma ümberkompileerimata erinevatel arhitektuuridel või protsessoriperekondadel ei toimi. Tihtipeale pole abi lihtsast ümberseadistusest või kompileerimisest: programme tuleb vastava operatsioonisüsteemi, protsessori arhitektuuri või perekonna tarbeks spetsiaalselt kohandada.

Ühe arhitektuuri siseselt võib samuti esineda suuri probleeme ühilduvusega. Näiteks võib tuua kõige levinuma x86 (firmad Intel ja AMD) protsessoriperekonna, millel on vanust juba üle 20 aasta. Esimesed x86 protsessorid olid 16-bitised. 32-bitistele sama perekonna protsessoritele kirjutatud programm 16-bitisel protsessoril aga ei tööta. Üldiselt dikteerivad kasutatavad programmid (tarkvara), millise perekonna arhitektuuriga protsessorit on vaja kasutada.

Teine, märksa selgem, tunnus arhitektuuri juures on protsessori registrite suurus. Kui räägitakse 8, 16, 32 jne bitistest protsessoritest, siis peetakse silmas protsessori registrite suurust. Registrite suurus määrab, milliste (kui suurte) arvudega suudab protsessor kiireid arvutusi teha. Reeglina on ka 16-bitine protsessor võimeline ka näiteks 32-bitiste arvudega arvutama, aga teeb seda tunduvalt aeglasemini kui 32-bitine protsessor. Ka 64-bitine protsessor suudab loomulikult 32-bitiste arvudega arvutada, kuid jällegi on see aeglasem kui 64-bitiste puhul.

Loomulikult vajavad näiteks 32- ja 64-bitine protsessor ka just neile mõeldud emaplaati ja mälu.

Kuid järjest arenev VLSI disain võimaldab nendest probleemidest hoolimata protsessorite arvutusjõudlust üha kasvatada.

MIPSid ja FLOPSid[muuda | redigeeri lähteteksti]

Märksa konkreetsemad kiiruse mõõtühikud kui taktsagedus, on see, kui palju operatsioone protsessor suudab ajaühikus täita. Sellise mõõtmise tulemused sõltuvad muidugi rangelt arhitektuurist (eelkõige protsessori instruktsioonidest). Kasutusel on kaks mõõtu:

  • MIPS - (Million Instructions Per Second - miljonit instruktsiooni sekundis) Kirjeldab, kui palju operatsioone täisarvudega suudab protsessor sekundis täita. Näiteks on Intel 4004 protsessor 0,06 MIPS ning Intel Pentium 4 protsessor kuni 11 000 MIPS.
  • FLOPS - (FLoating-point Operations Per Second - ujukomaarvutusi sekundis) Erinevalt MIPS-ist väljendab protsessori jõudlust ujukomaarvutuste teostamisel.

FLOPS-e kasutatakse rohkem teadusarvutite võrdlemisel (näiteks koostatakse nende põhjal superarvutite edetabeleid), harilike personaalarvutite puhul pole see näitaja niivõrd oluline – märksa olulisem on nende puhul MIPS-ide hulk.

CISC ja RISC[muuda | redigeeri lähteteksti]

On kaks erinevat suunda protsessorite instruktsioonide kodeerimiseks:

  • CISC - (Complex Instruction Set Computer) selline protsessor võib ühe instruktsiooni raames teha mitu erinevat mikrooperatsiooni. CISC protsessorile kirjutatud programmid on mahult väiksemad ning ühtlasi on neid masinkoodis ka suhteliselt lihtne kirjutada.
  • RISC - (Reduced Instruction Set Computer) selline protsessor aga toimetabki üksnes võimalikult lihtsate mikrooperatsioonidega. RISC protsessorile kirjutatud programmid vajavad rohkem mälu, sest kõik mikrooperatsioonid tuleb eraldi kirja panna. Ühtlasi on selliseid programme masinkoodis ka raskem kirjutada kui CISC-le.

RISC tüübi protsessori jõudlus on suurem CISC tüüpi protsessorist. Arvutite algusajal ei olnud olemas veel kompilaatoreid, kõik programmid tuli kirjutada otse masinkoodi või assembleri abil ja just seetõttu oli lihtsam programme kirjutada programme CISC tüüpi protsessorile, mille puhul sai kasutada lihtsaid käsklusi, mida oli samas palju, keerukate asjade tegemiseks. Tänapäeval on CISC ja RISC protsessorite piir ähmastunud kuna nad on võtnud üle üksteise omadusi.

x86 protsessorite laadid[muuda | redigeeri lähteteksti]

Reaalmood[muuda | redigeeri lähteteksti]

Kõige esimesed protsessorid (Intel 8086, 80186 jne.) oskasid töötada ainult real mode'is. Praktiliselt tähendas see seda, et korraga sai käia ainult üks programm ja kui see kinni jooksis, siis tuli arvuti taaskäivitada. Peale selle sai arvuti kasutada just nii palju mälu kui arvutil tegelikult oli (tavaliselt 640 kB). Andmete tõrjumine saalealale polnud võimalik. Selle laadi tarvis kirjutati ohtralt tarkvara ja see on saanud oluliseks protsessorite edasises arengus. Uued protsessorid pidid olema paremate omadustega kuid samas võimaldama kasutada ka vanu programme.

Kaitstud mood[muuda | redigeeri lähteteksti]

Alates 80286 ehk lihtsalt 286 protsessorid oskasid töötada kahes laadis: vanas Real Mode'is ning uues Protected Mode'is. Protected Mode tähendab seda, et sellistel protsessorite sai kasutada UNIXi laadseid operatsioonisüsteeme - korraga võis käia mitu programmi ning kui mõni neist kinni jooksis siis jäi süsteemi terviklikkus puutumatuks ning tuli ainult üks programm ära tappa ja taaskäivitada. Samuti sai programmidele jätta mulje et arvutil on väga palju mälu - 1 GB. Mida ta tegelikult kasutada sai, määras siiski ära reaalse mälu ja saaleala summa. Protected Mode'is oli Real Mode'i jaoks kirjutatud programmide käivitamine väga keeruline. Ümberlülitamiseks kahe laadi vahel tuli teha masinale taaskäivitus. Siin tuleb tähele panna, et see kas süsteem töötab Protected Mode'is või mitte määrab ära ühelt poolt protsessor (riistvara) ning teiselt poolt kasutatava operatsioonisüsteem (tarkvara).

Virtuaalmood[muuda | redigeeri lähteteksti]

Seda laadi hakkasid toetama 80386 protsessorid lisaks Real ja Protected Mode'le. Virtual Real laadis osutus võimalikuks käivitada Real Mode'i tarvis kirjutatud programme, ja isegi mitut samaaegselt. Ümber lülitamiseks kahe laadi vahel ei olnud enam vaja taaskäivitust. Kõigi hilisemate protsessorite (Intel i486, Pentium) loomulikuks laadiks on peetud Protected Mode'i. Virtual Real Mode'i oskavad kasutada UNIX, Linux, Windows 95, NT, OS/2, ei oska kasutada DOS.

Ebareaalne mood[muuda | redigeeri lähteteksti]

Tegemist on versiooniga Real Mode'ist, milles üks või rohkem andmesegmendi registreid sisaldab 32-bitiseid aadresse. Kuid selles laadis ei saa opereerida kõik x86 ja x86-64 tüüpi protsessorid. Seda kasutavad 386 ja hilisemad protsessorid. Aastatel 1990-1995 kasutasid Unreal Mode'i paljud DOSi arvutimängud, kuna laad võimaldas DOS operatsioonisüsteemi kasutades hõivata suurema hulga mälust, kui Real Mode seda lubas. Protected Mode'i ei saanud kasutada, kuna DOS selles ei töötanud.

Süsteemijuhtimismood[muuda | redigeeri lähteteksti]

Laad tuli esmakordselt kasutusele Intel i386SL protsessorites. See on opereerimislaad, mis tegeleb süsteemihaldustoimingutega, nagu mäluhälvete kõrvaldamine. Kasutatakse administratiivset tarkvara priviligeeritud kasutaja õigustega. SMM on kasutuses ka kõikides hilisemates x86 mikroprotsessorites.

Pikk mood[muuda | redigeeri lähteteksti]

See laad võimaldab 64-bitistel rakendustel ja operatsioonisüsteemidel pääseda ligi 64-bitistele instruktsioonidele ja registritele. 32- ja 16-bitised Protected Mode'i programmid käivitatakse spetsiaalses ühildumiseks mõeldud all-laadis. Real Mode ja Virtual Mode seda laadi ei toeta.

Protsessorite tootjaid[muuda | redigeeri lähteteksti]

Välislingid[muuda | redigeeri lähteteksti]