Wednesday, January 5, 2011

Protsessor

Protsessorit võib päris kindlalt nimetada arvuti ajuks. Põhjus väga lihtne: protsessori ülesandeks ongi töödelda kõiki etteantub ülesanded läbi ning väljastada tulemused. Kõik programmid, mida sa kasutad lähevad nullide ja ühtede jadana protsessori, seal nad töödeldakse tohutul hulgal loogikaelementidega ning lõpuks väljastatakse järjekordne nullide ja ühtede jadam millest moodustatakse videokaartis pilt või helikaartis heli.

Protsessori valimise juures vaadatakse peamiselt 2 näitaja:
Esiteks millisest Protsessori seeriast on protsessor (Näiteks: Pentium, Pentium II, i7, i5 jne.) ja kui suur on protsessori taktsagedus gigahertsides (Ghz). See parameeterist sõltub, kui palju loogikatehteid suudab antub protsessot ühes sekundis teha.
Protsessori seeria mõjutab vahel arvuti kiirust samuti päris oluliselt, sest erinevates protsessorite tüüpides on kasutatud erinevaid tehnoloogiad, mis lubavad erinevaid võimalusi.

Ehitus
Kell
Süsteemne kell dikteerib protsessori taktsageduse ja määrab sellega osaliselt viimase töökiiruse. Kella töö on äärmiselt lihtne: kindlate ajavahemike tagant vahetatakse protsessorile antavat pinget 0V, 5V, 0V, 5V jne jne... Kell on protsessori töötamiseks fundamentaalse tähtsusega, võimaldades protsessoril täita kordamööda erinevaid operatsioone - ilma kellata saaks protsessor hakkama vaid ühe tehtega.

Siinid
Info liigutamiseks on protsessor ühendatud mäluga läbi siinide. Peamised siinid on andmesiin (data bus) ning aadressi siin (address bus). Aadressi siinile 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
Kui info jõuab mälust protsessorisse, siis ei lähe ta otsekohe töötlemisele vaid kirjutatakse esmalt registrisse. Registrid on protsessori kiibil paiknevad erilised mälupesad, mis koosnevad eelpool mainitud flip-floppidest ja töötavad protsessoriga samal taktsagedusel - olles seega kõige kiiremad info talletamise paigad. (Registrite mälu kutsutakse tihti zero-wait-state memory-ks, rõhutamaks selle erinevust harilikust mälust, mis töötab protsessorist hulka aeglasemalt ja mille järgi viimane tihti ootama peab.)

Registrid jagunevad üldkasutatavateks (need millele näiteks programmeerija oma programmiga ligi pääseb) ning spetsiaalseteks, mis hoolitsevad süsteemi toimimise eest. Nii näiteks ühel lihtsustatud x86 protsessoril on 4 üldkasutatavat registrit AX, BX, CX ja DX ning süsteemseteks registriteks on IP (Instruction Pointer), kus hoitakse järgmise instruktsiooni mäluaadressi ning Flags register, kus on kirjas mitmesugused süsteemsed staatused (lipud), teiste seas näiteks eelmise võrdlustehte tulemus.

Täis- ja ujukomaarvudega arvutused
Lisaks registritele on ühes korralikus protsessoris kindlasti ka osa, mis tegeleb arvutamisega. Päris kindlasti on olemas täisarvudega arvutuste tegemise moodul, aga praktiliselt kõigil tänapäeva protsessoritel on ka integreeritud ujukomaarvudega opereerimise moodul (FPU - Floating Point Unit). Vanematel protsessoritel polnud see sugugi alati nõnda. Esialgu tuli teha reaalarvulisi arvutusi kasutades harilikku täisarvumoodulit, sellised arvutused pole aga kaugeltki kiired. Edasi võeti kasutusele eraldiseisev lisaprotsessor nn. Math-coprocessor ehk matemaatikaprotsessor.

Dekooder
Kui lisada eelpoolmainitutele ka instruktsioonide dekodeerimisega tegelev moodul, siis saamegi juba midagi töötava protsessori taolist. Dekooder, nagu nimigi arvata võib, dekodeerib instruktsioonid ja "ütleb" protsessorile, mida ta tegema peab.

Kontroll-moodul
Protsessor juhib arvuti tööd, aga protsessori tööd juhib omakorda protsessori sisene kontroll-moodul (control unit). Selle ülesanne on organiseerida, et kõik toimuks korrapäraselt - dekodeerimine, andmete lugemine, arvutamine ja salvestamine. Kontroll-moodul juhib kõiki teisi protsessori osasid.

Puhvrid
protsessori vaatevinklist on mälu alati ääretult aeglane, aga suure osa protsessori tegevusest moodustab mälusse kirjutamine ning sealt lugemine. Niiviisi peab protsessor pidevalt mälu järgi ootama. Programmidel on aga tendents kasutada korduvalt ühtesid ja samu mäluaadresse.

Kujutage ette raamatukoguhoidjat, kes töötab raamatukogus, kus on 1000 erinevat köidet. Raamatukogust võidakse küsida suvalist raamatut ning siis kaob too isik pikaks ajaks riiulite vahele ning väljub lõpuks koos soovitud eksemplariga. Mõned raamatud on aga populaarsemad kui teised ning saab selgeks, et pole mõtet viia alati raamatut kohe tagasi tema esialgsele kohale, kui juba järgmine külastaja suure tõenäosusega sedasama raamatut soovib. Niiviisi moodustab raamatukoguhoidja endale väikese riiuli, kuhu paneb alguses kõik tagastatud raamatud, et neid oleks vajadusel sealt jälle hea ja kerge võtta.

Samamoodi toimivad ka protsessori puhvrid. Protsessori "lähedal" asub väikene hulk mälu, kus talletatakse viimati kasutatud andmed. Kui protsessor saab instruktsiooni lugeda registrisse AX bait aadressilt 234, siis ei pöördu ta kohe mälu poole vaid "küsib" alguses puhvrist, ega sellel aadressil asuv bait juba seal olemas pole ning alles siis, kui puhvris soovitud andmed puuduvad, pöördutakse mälu poole.

Tänapäeaval kasutavad protsessorid reeglina koguni kahte puhvrit (primary cache ja secondary cache), millest esimene on väiksem ja kiirem ning teine natukene suurem ja aeglasem. Sellisel juhul pöördub protsessor alguses primaarse puhvri poole, siis teise puhvri poole ning alles seejärel mälu juurde.

Kasutatud materjal
http://triin.net/2004/09/29/Protsessor
http://www.hot.ee/tanelioma2/prose.html

No comments:

Post a Comment