Keskseade
Keskprotsessor (CPU) on iga arvuti oluline osa. Keskprotsessor saadab signaale, et juhtida teisi arvuti osi, peaaegu nagu aju juhib keha.
Protsessor on elektrooniline masin, mis töötab arvutis tehtavate asjade, nn käskude, nimekirja alusel. Ta loeb käskude nimekirja ja täidab (täidab) iga käsku järjekorras. Juhiste loetelu, mida protsessor saab käivitada, on arvutiprogramm.
Taktimäära ehk protsessori sisemiste osade kiirust mõõdetakse hertsides (Hz). Kaasaegsed protsessorid töötavad sageli nii kiiresti, et selle asemel kasutatakse gigahertsi (GHz). Üks GHz on 1 000 000 000 tsüklit sekundis.
Enamik lauaarvutites (koduarvutites) kasutatavatest protsessoritest on kas Inteli või Advanced Micro Devices'i (tavaliselt lühendatult AMD) mikroprotsessorid. Mõned teised ettevõtted, kes valmistavad protsessoreid, on ARM, IBM ja AMD ATI Technologiesi all, mis on praegu juhtival kohal. Enamik nende protsessoreid kasutatakse manussüsteemides, mis on mõeldud spetsiifilisemateks asjadeks, näiteks mobiiltelefonides, autodes, mängukonsoolides või sõjaväes.
Pentium protsessor arvuti sees
Protsessoritüübid
20. sajandil leiutasid insenerid palju erinevaid arvutiarhitektuure. Tänapäeval kasutab enamik lauaarvuteid kas 32-bitiseid või 64-bitiseid protsessoreid. 32-bitise protsessori käsud on head andmete töötlemiseks, mille suurus on 32 bitti (enamik käske "mõtleb" 32-bitise protsessori puhul 32-bitises protsessoris). Samamoodi on 64-bitine protsessor hea 64-bitiste andmete töötlemiseks (ja sageli ka 32-bitiste andmete töötlemiseks). Andmete suurust, millega protsessor kõige paremini toime tuleb, nimetatakse sageli protsessori sõnasuuruseks. Paljudel vanadel 70ndatest, 80ndatest ja 90ndate algusest pärinevatel protsessoritel (ja paljudel kaasaegsetel manussüsteemidel) on 8- või 16-bitine sõnasuurus. Kui 20. sajandi keskel leiutati protsessorid, oli neil palju erinevaid sõnasuurusi. Mõnedel olid erinevad sõnade suurused käskude ja andmete jaoks. Hiljem lõpetati vähem levinud sõnasuuruste kasutamine.
Enamik protsessoreid on mikroprotsessorid. See tähendab, et protsessor on vaid üks kiip. Mõned kiibid, mille sees on mikroprotsessor, sisaldavad ka muid komponente ja on täielikud ühe kiibiga "arvutid". Seda nimetatakse mikrokontrolleriks.
Registrid
Kui protsessor töötab arvutiprogrammi, peab ta kuskil hoidma andmeid, millega käsud töötavad (andmed, mida nad loevad ja kirjutavad). Seda salvestusruumi nimetatakse registriks. Protsessoril on tavaliselt palju registreid. Registritele peab olema väga kiire juurdepääs (lugemine ja kirjutamine). Seetõttu on nad osa protsessori kiibist endast.
Mälu
Kõikide andmete salvestamine registritesse muudaks enamiku protsessorite töö liiga keeruliseks (ja väga kalliks). Seetõttu salvestatakse registritesse tavaliselt ainult need andmed, millega protsessor "parajasti" töötab. Ülejäänud andmed, mida programm kasutab, hoitakse RAMis (mälus). Välja arvatud mikrokontrollerites, on RAM tavaliselt salvestatud väljaspool protsessorit eraldi kiipidel.
Kui protsessor soovib lugeda või kirjutada andmeid RAM-i, väljastab ta nendele andmetele aadressi. Igal baidil RAMis on mäluaadress. Aadresside suurus on sageli sama suur kui sõna suurus: 32-bitine protsessor kasutab 32-bitiseid aadresse jne. Väiksemad protsessorid, näiteks 8-bitised protsessorid, kasutavad aga sageli aadresse, mis on suuremad kui sõna suurus. Vastasel juhul oleks programmi maksimaalne pikkus liiga lühike.
Kuna aadresside suurus on piiratud, on piiratud ka maksimaalne mälu maht. 32-bitised protsessorid saavad tavaliselt hakkama ainult kuni 4 GB RAMiga. See on erinevate baitide arv, mida saab valida 32-bitise aadressi abil (igal bitil võib olla kaks väärtust - 0 ja 1 - ja 2 32baiti on 4 GB). 64-bitine protsessor võib käsitleda kuni 16 EB RAM-i (16 eksabaiti, umbes 16 miljardit GB ehk 16 miljardit miljardit miljardit baiti). Operatsioonisüsteem võib piirata selle kasutamist väiksemate koguste puhul.
RAM-i salvestatud teave on tavaliselt lenduv. See tähendab, et see kaob, kui arvuti välja lülitatakse.
Cache
Kaasaegsetes arvutites on RAM palju aeglasem kui registrid, seega aeglustab RAM-i kasutamine programme. Mälule juurdepääsu kiirendamiseks pannakse RAM-i ja protsessori põhiosade vahele sageli kiiremat tüüpi mälu, mida nimetatakse vahemäluks. Vahemälu on tavaliselt osa protsessori kiibist ja on baidi kohta palju kallim kui RAM. Vahemälu salvestab samu andmeid kui RAM, kuid on tavaliselt palju väiksem. Seetõttu ei pruugi kõik programmi poolt kasutatavad andmed vahemällu mahtuda. Vahemälu püüab salvestada andmeid, mida tõenäoliselt kasutatakse palju. Näiteks hiljuti kasutatud andmed ja hiljuti kasutatud andmetele lähedased andmed mälus.
Sageli on mõistlik omada "vahemälu vahemälu jaoks", nagu on mõistlik omada vahemälu RAM-i jaoks. Mitmetasandilise vahemälu puhul on mitu vahemälu, mida nimetatakse L1 vahemäluks, L2 vahemäluks jne. L1 vahemälu on kõige kiirem (ja kõige kallim baidi kohta) vahemälu ja see on protsessorile kõige "lähemal". L2 vahemälu on ühe sammu kaugusel ja on aeglasem kui L1 vahemälu jne. L1 vahemälu võib sageli käsitleda L2 vahemälu vahemäluna jne.
Bussid
Arvutibussid on juhtmed, mida protsessor kasutab RAM-i ja muude arvutikomponentidega suhtlemiseks. Peaaegu kõigil protsessoritel on vähemalt andmesiin, mida kasutatakse andmete lugemiseks ja kirjutamiseks, ja aadressibuss, mida kasutatakse aadresside väljastamiseks. Muud protsessori sees olevad bussid edastavad andmeid protsessori eri osadele.
Käskude komplektid
Käskude komplekt (mida nimetatakse ka ISA (Instruction Set Architecture)) on keel, mida konkreetne protsessor mõistab otseselt. Neid keeli nimetatakse ka masinkoodiks või binaarkoodiks. Need ütlevad, kuidas käskida protsessoril teha erinevaid asju, näiteks laadida andmeid mälust registrisse või liita kahe registri väärtusi. Igal käsukirjakomplekti kuuluval käsul on kodeering, mis tähendab, kuidas käsk kirjutatakse bittide jadana.
Programme, mis on kirjutatud sellistes programmeerimiskeeltes nagu C ja C++, ei saa otse protsessoriga käivitada. Need tuleb tõlkida masinkoodiks, enne kui protsessor saab neid käivitada. Kompilaator on arvutiprogramm, mis teeb selle tõlke.
Masinakood on lihtsalt 0-de ja 1-de jada, mis teeb selle lugemise inimesele raskeks. Et seda loetavamaks muuta, kirjutatakse masinkoodiga programmid tavaliselt koostekeeles. Assembleri keeles kasutatakse 0-de ja 1-de asemel teksti: Näiteks võib kirjutada "LD A,0", et laadida registrisse A väärtus 0. Assembleriks nimetatakse programmi, mis tõlgib assemblerikeele masinkoodiks.
Funktsionaalsus
Siin on mõned põhilised asjad, mida protsessor saab teha:
- Andmete lugemine mälust ja andmete kirjutamine mällu.
- Lisage üks number teisele numbrile.
- Testige, kas üks arv on suurem kui teine arv.
- Numbri liigutamine ühest kohast teise (näiteks ühest registrist teise või registri ja mälu vahel).
- Hüppa käskude loendis teise kohta, kuid ainult siis, kui mingi test on tõene (näiteks ainult siis, kui üks number on suurem kui teine).
Isegi väga keerulisi programme saab teha paljude selliste lihtsate juhiste kombineerimisega. See on võimalik, sest iga käsk võtab väga lühikest aega. Paljud protsessorid suudavad tänapäeval ühe sekundiga teha üle 1 miljardi (1 000 000 000) käsu. Üldiselt on protsessor seda kiirem, mida rohkem suudab protsessor antud aja jooksul teha. Üks viis protsessori kiiruse mõõtmiseks on MIPS (miljon käsku sekundis). Flopid (ujukomaoperatsioonid sekundis) ja protsessori taktsagedus (tavaliselt mõõdetakse gigahertsides) on samuti viisid, kuidas mõõta, kui palju tööd suudab protsessor teatud aja jooksul teha.
Protsessor koosneb loogikaväravatest; sellel ei ole liikuvaid osi. Arvuti protsessor on elektrooniliselt ühendatud arvuti teiste osadega, näiteks videokaardiga või BIOSiga. Arvutiprogramm saab neid välisseadmeid juhtida, lugedes või kirjutades numbreid arvuti mälu spetsiaalsetesse kohtadesse.
Käskude torujuhtmed
Iga protsessori poolt täidetav käsk koosneb tavaliselt mitmest etapist. Näiteks käsu "INC A" (suurendada registrisse A salvestatud väärtust ühe võrra) käivitamise sammud lihtsas protsessoris võiksid olla järgmised:
- Loe käsk mälust välja,
- dekodeerida käsk (aru saada, mida käsk teeb) ja
- lisada üks registrisse A.
Protsessori eri osad teevad neid erinevaid asju. Sageli on võimalik käivitada mõned sammud erinevatest käskudest korraga, mis muudab protsessori kiiremaks. Näiteks võime lugeda käsku mälust samal ajal, kui dekodeerime teist käsku, sest need sammud kasutavad erinevaid mooduleid. Seda võib mõelda nii, et korraga on mitu käsku "torujuhtme sees". Parimal juhul töötavad kõik moodulid korraga erinevate käskudega, kuid see ei ole alati võimalik.
Mäluhaldusüksused (MMU) ja virtuaalne mälu
Kaasaegsed protsessorid kasutavad sageli mäluhaldusüksust (MMU). MMU on komponent, mis tõlgib aadressid protsessorist (tavaliselt) erinevatele RAM-aadressidele. MMU kasutamisel ei ole programmis kasutatavad aadressid (tavaliselt) "tegelikud" aadressid, kuhu andmed salvestatakse. Seda nimetatakse virtuaalseks (tegeliku mälu vastandiks). Allpool on loetletud mõned põhjused, miks on hea kasutada MMU-d:
- MMU võib "peita" teiste programmide mälu programmi eest. Seda tehakse nii, et programmi töötamise ajal ei tõlgita ühtegi aadressi "peidetud" aadressidele. See on hea, sest see tähendab, et programmid ei saa lugeda ja muuta teiste programmide mälu, mis parandab turvalisust ja stabiilsust. (Programmid ei saa üksteise järele "luurata" ega "üksteise varvastele astuda").
- Paljud MMUd võivad muuta mõned mälu osad kirjutamiskõlbmatuks, mittelugemisvõimeliseks või mitte-töödeldavaks (mis tähendab, et sellesse mälu ossa salvestatud koodi ei saa käivitada). See võib olla hea nii stabiilsuse ja turvalisuse kui ka muudel põhjustel.
- MMUd võimaldavad erinevatel programmidel omada erinevaid "vaateid" mälule. See on kasulik paljudes erinevates olukordades. Näiteks on alati võimalik, et programmi "põhikood" asub samal (virtuaalsel) aadressil, ilma et see põrkuks teiste programmidega kokku. See on kasulik ka siis, kui programmidel on palju erinevaid (raamatukogudest pärit) kooditükke, mida nad jagavad.
- MMUd võimaldavad raamatukogude koodil ilmuda erinevatel aadressidel iga kord, kui programmi käivitatakse. See on hea, sest teadmata, kus asjad mälus asuvad, on häkkeritel sageli raskem panna programme tegema halbu asju. Seda nimetatakse aadressiruumi juhuslikuks muutmiseks.
- Täiustatud programmid ja operatsioonisüsteemid võivad kasutada MMUde abil trikke, et vältida andmete kopeerimist mälu eri kohtade vahel.
Mitu südamikku
Mitme tuumaga protsessorid muutusid tavaliseks 21. sajandi alguses. See tähendab, et neil on samale kiibile ehitatud mitu protsessorit, et nad saaksid korraga käivitada palju käske. Mõnel protsessoril võib olla kuni kolmkümmend kaks tuuma, nagu AMD Epyc 7601.
Tootjad
Järgmised ettevõtted valmistavad arvutite protsessoreid:
- ARM
- Intel
- Advanced Micro Devices
- MCST
- SRISA
- Sun Microsystems
Lisateave
- Mikroprotsessor
- ALU
- Täitmisüksus
- Ujuvpunktühik
- Intel
- AMD
Küsimused ja vastused
K: Mis on protsessor?
V: Keskprotsessor (CPU) on iga arvuti oluline osa. See saadab signaale, et juhtida teisi arvuti osi, peaaegu nagu aju juhib keha. CPU on elektrooniline masin, mis töötab käskude nimekirja alusel, et täita teatavaid ülesandeid.
K: Kuidas protsessor töötab?
V: Protsessor loeb käskude nimekirja ja töötab (täidab) iga käsu järjekorras. Juhiste loetelu, mida protsessor saab käivitada, on arvutiprogramm.
K: Mis on protsessori taktsagedus või kiirus, mida mõõdetakse?
V: Protsessori sisemiste osade taktsagedust või kiirust mõõdetakse hertsides (Hz). Kaasaegsed protsessorid töötavad sageli nii kiiresti, et selle asemel kasutatakse gigahertsi (GHz) - üks GHz on 1 000 000 000 tsüklit sekundis.
K: Kes on mõned protsessoreid tootvad ettevõtted?
V: Mõned protsessoreid valmistavad ettevõtted on Intel, Advanced Micro Devices (AMD), ARM (hiljuti Nvidia poolt ostetud), IBM ja AMD ATI Technologiesi all, mis on praegu turuliidriks.
K: Kus kasutatakse kõige rohkem protsessoreid?
V: Enamik lauaarvutites kasutatavatest protsessoritest on kas Inteli või AMD valmistatud mikroprotsessorid, samas kui enamik teisi kasutatakse manussüsteemides, mis on mõeldud spetsiifilisematele asjadele, näiteks mobiiltelefonidele, autodele, videomängukonsoolidele või sõjalistele rakendustele.