Protsessor

Allikas: Kuutõrvaja

Protsessor

Sissejuhatus

Arvuti protsessor on arvuti aju :) No nii ütlevad figuratiivsed narratiivid. Aga tõsi, protsessor on see aparaat (mikroskeem ehk chip) mis reaalselt liidab ja korrutab kahendarve.

Liitmine

 0010
+0010
------
 0100


Korrutamine

 0010
*0110
------
 0000
0110
------
 1100

Toimub sama tehnikaga nagu tavaliste st. kümnendarvudega paberi ja pliiatsiga arvutamisel (meeldejätmine, nihutamine)

Ja miks talle on just meelepärsed kahendarvud on sellepärast, et tema tegeleb tegelikult elektriga: 1 on signaali kõrge nivoo ja 0 madal nivoo. Järgnev jutt põhineb ettekujutusele vanadest protsessoritest nn. 8088 protsessoritest. Selgitatakse mõisteid ning seda mida nad praktiliselt tähistavad. See on oluline kaasaegsete protsessorite omadustes orienteerumiseks.


Protsessori kirjeldus

Kõneleme nn. klassikaliselt 8086 protsessorist millest kõik muud Inteli ja mõnede teiste tootjate (AMD, Cyrix) protsessorid välja/edasi arenesid. Siiski, maailmas on ka muid kui Ineteli protsessorid ja Intel pole veel maailma tipp. Aga levinud on nad küll. Allpool tuleb juttu sellest, kust protsessor andmeid saab, aga praegu pöörame tähelepanu sellele kuidas protsessor sisemiselt andmetega ümber käib. Õigemini, piirdume nende elementide nimetamisega, mis andmetega tegelevad.

Kui selles liinis juttu jätkata, siis tuleks hakata tegelema Assembler keeles programmeerimisega. See on arvutikeel, mis mõnede asjatundjate meelest ei klassifitseerugi keeleks. Assembler on järgnevus sisuliselt masinkeelseid protsessori käske mida esitatakse masinkeele omadega ekvivalentsel kujul kuid inimesele paremini meeldejäävate mnemoonikutena (mov, jmp ...). Need masinkeelsed käsud juhtivad protsessori tööd kõige madalamal tasemel. Assembleris saab tõepoolest võtta konkreetsest protsessorist välja viimast, kuid puuduseks on see, et too assemblerprogramm töötaks siis vaid valitud kokreetsel protsessoril millele ta on mõeldud. Niipalju siis Assemblerist. DOS'i alla on huvitav asi - debug, ta võimaldab suhelda vahetult protsessoriga.

Niisiis, nagu mainitud on igal protsessoril oma käsustik, uuemad protsessorid erinevad vanematest just sellle poolest, et neil on olemas rohkem käske (samuti registreid) mis omakorda võimaldavad efektiivsemalt töötada mingit sorti andmetega (arvutada, näidata pilti ...). Samuti määrab protsessori tüüp ära kuidas ta mälule juurde saab.

Protsessoris on olemas andmete ajutiseks paigutuseks mälupesad. Sinna paigutatakse arvud enne nendega tehete tegemist (liitmine, korrutamine) ja seal samas asuvad ka tulemused. Protsessori töö ajal liigub temast pidevalt läbi andmeid millega ta tegeleb. Asja võib ette kujutada umbes nii, et ühed protsessorist läbijooksvad bitid/baidid juhivad seda kuidas protsessor teiste läbijooksvate bittide/baitidega peab toimima nn. CODE ja DATA.

Mainitud protsessori mälupesi nimetatakse tavaliselt registriteks ja kujutatakse selliselt:

Prose.gif

register

funktsioon, kirjeldus

AX koosneb AH ja AL 	Akumulaator- Neis toimuvad aritmeetilised ja loogilised tehted
BX koosneb BH ja BL 	Base - kasutatakse mäluaadresside hoidmiseks mis viitavad andmete asukohale
CX koosneb CH ja CL 	Count - lugemiseks, nt. tsüklite arv
DX koosneb DH ja DL 	Data - tegeleb nn. overflow'ga ja I/O aadressidega
SI 	Source Index sarnased BX-i funktsionile
DI 	Destination Index, sarnane SI'ga
BP 	Base Pointer sarnane BX'le
SP 	Stack Pointer
CS 	Code Segment see ja kolm järgmist tegelevad vastavate mälusegmentide määramisega
DS 	Data Segment
ES 	Extra Segment
SS 	Stack Segment 

Tabelis toodud kaheksat esimest nimetatakse 'general purpose' registriteks. Kõik joonisel kujutatud registrid on mälupesad laiusega 16 bitti. Pange tähele, et AX, BX, CX ja DX saab käsitleda mitte vaid kui 16'seid moodustusi vaid ka kui kahete 8 bitist suurust. vastavalt AH ja AL, jne. H tähistab sõna high ja L low

AX koosneb vasakult paremale nn. 15, 14, 13, ..... 0'is bit

AH on aga 15, 14, 13, 12, 11, 10, 9, 8 AL on aga 7, 6, 5, 4, 3, 2, 1, 0

Selge on see, et kui AX 'il on mingi väärtus ning me muudame AL'i väärtust, siis tulemusena muutub ka AX'i väärtus.

Öeldu ei ole piisavalt detailne kirjeldus, et ise hakata protsessorit ehitama, aga peaks teda põgusalt tutvustama.

Data ja Address Buses (andme ja adresseerimise kanalid) - Protsessor ja mälu

Ilmselt on protsessori töö vägagi seotud teiste arvuti komponentidega: emaplaadi ja seal asuva mälu ja videokaardiga. Siiski, vaatleme kuidas suhtuvad ja teevad koos tööd protsessor ja mälu. Mälu võib kujutada ette suure maatriksina (tabelina), kus ruudukesed ehk mälupesad on nummerdatud. Iga pesa mahutab infot 1 B ehk 8 bitti. Probleem on selles kuidas liigutatakse infot neist pesadest protsessori registritesse tehete sooritamiseks ja vastupidi. Siin puutume kokku protsessorite mõnede oluliste omadustega millest sõltub protsessori jõudlus - andmekanali ja aadresskanali laiused.

Andmevahetuse kiirus sõltub sellest kui lai kanal ühendab protsessorit mäluga - see on andmekanal. Esimestel protsessoritel oli see laiusega 1 B. St. kaheksa andmete jaoks mõeldud juhet ühendasid protsessorit mäluga. Tuletage meelde, et ühes mälupesas (kastikeses) on 8 bitti - igale üks juhe, klapib kokku.

Aadressi kanal

Teine juhtmete komplekt mis protsessorist väljub on nn. aadressi kanal. See oli esimestel protsessoritel 20' st juhtmest koosnev komplekt. Neis juhtmetes olevad signaalid määrasid ära millise mälupesaga parasjagu tegeles andmekanal.

Olukorda võiks võrrelda kaheksasoonelise veevoolikuga kusjuures igas soones saab vee kinni panna või jooksma lasta (andmekanal). Ja kümne mehega kes igaüks mõlema käega seda voolikut suunavad (aadresskanal). Viimane pole just kõige paremini õnnestunud võrdlus- kui tulen mõne parema peale, kirjutan!

Jah, siit jutust ei saa teada konkreetselt kuidas juhtmed on asetatud aga põhimõtteliselt küll. Seda ma taotlengi.

Igaljuhul, see fakt, et aadresskanal koosneb 20 juhtmest paneb adresseerimisele peale olulise piiri - mõtiskleme selle üle.

Kui aadresskanalis oleks vaid üks juhe, siis saaks selles signaali hoides (loogiline 1) suunata andmekanali tegelema ühe mälupesaga ja kui selles signaali mittehoida siis teisega. Kaks olekut: 0; 1 - võimaluste arv 2^1 =2 = 2 B

Kui aadresskanalis oleks kaks juhet, siis oleks adresseeritavaid mälupesi: 0,0; 1,0; 0,1; 1,1 - võimaluste arv 2^2 = 4 = 4 B Kui aadreskanalis oleks 8 juhet : 0,0; 0,0; .................. - võimalusi 2^8 = 256 = 256 B ................................. 16 juhet: 0,0; ............... - võimalusi 2^16 = 65536 = 65536 B = 64 kB ................................. 20 juhet nagu on ... - võimalusi 2^20 = 1 048 576 = 1 024 kB = 1 MB

Siit selgus ka see miks klassikaliselt DOS peab esimest megabaiti nii oluliseks ja ainuvõimalikuks (tegelikult isegi esimest 640 kB sest 384 kB reserveerib ta draiveritele)

Aja edasi liikudes ja samuti ka tehnoloogi arenemisega suurenes adresserimiskanali juhtmete arv nagu all tabelis toodud.


Muide see adresseeritav objekt - bait jäi ikka samaks 8 bitti.

Andmekanal ja registri laius

Andmekanaliga on lugu nii, et siin toimus samuti areng laienemise suunas. Andmekanalist mainides tuletame meelde, et andmed satuvad protsessorisse tulles registritesse. Aga mitte otse, st andmekanali ja registrite laius ei pruugi sama olla. Erinevus on tavaliselt täis arv kordi. Registri laius (see mis oli enne 8 bitti) on toodud allaolevas tabelis ja mida suurem seda kiiremini protsessor saab tegutseda. Andmekanali laius näitab kui suures tempos suudab mälu protsessorit andmetega varustada. Mida laiem seda parem. Märgime, et kui nt. andmekanali laius on 64 bitti siis tuleb mööda kanalit kohale kaheksa kõrvutise mälupesa sisu.

tüüp                aadresskanali laius   MB    GB        registri laius    andmekanali laius
8088/8086             20                  1                      16                 8
286/386SX             24                 16                      16                16
386DX/486/Pentium     32                         4               32                32
P6                    36                        64               32                64 

Vahetult võib arvutuste teel veenduda, et aadresskanali laius ja MB/GB on seotud. Ja kui kõneldakse 32 bitilistest programmidest, siis mõeldakse seda, et nad töötavad kõige paremini kui protsessoril on register laiusega 32. Asi on nimelt selles, et hulka aega toodeti juba häid protsessoreid, aga toodetud tarkvara on 16 bitiline ja ei töötanud nende peal nii efektiivselt kui oleks võinud.

Siin all on kaks joonist, Esimene kujutab olukorda kus adresseeritakse mälupesa nr. 0000 0000 0000 0000 0011 b = 3 d ja sinna kantakse sisse kahendarv 1000 1011 b = 209 d;

- mäluaadresside numeratsioon algab nullist - joonisel kujutavad rõhutatud värvidega jooned seda, et signaal on 1 ja muud vastavad 0'le - roheline on andmekanal ja sinine aadresskanal:

P31.gif


Teine kujutab olukorda kus adresseeritakse mälupesa nr. 0000 0000 0000 0000 1010 b = 10 d ja sinna kantakse sisse kahendarv 1010 1001 b = 169 d;

P10.gif

Real, Protected ja Virtual Real Mode'id

Real Mode

Kõige esimesed protsessorid (8088, 80 186) 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 taas käivitada (reboot). Peale selle sai arvuti kasutada just nii palju mälu kui arvutil tegelikult oli (tavaliselt 640 kB). Swap'i ketta peale teha ei saanud. Selle mode'i tarvis kirjutati ohtralt tarkvara ja see on paljuski järgmisi samme protsessorite arengus määranud. Nimelt pidid uued protsessorid olema loomulikult uute omadustega kuid samas võimaldama ka kasutada vanu programme.

Protected Mode

Alates 80286 ehk lihtsalt 286 protsessorid oskasid töötada kahes mode's: vanas real modes ning uues Protected Mode's. Protected Mode tähendab seda, et sellistel protsessorite sai kasutada UNIX'i laadseid OS'e - korraga võis käia mitu programmi ning kui mõni neist kinni jooksis siis jäi süsteemi terviklikkus puutumatuks ning tuli ainult too üks programm ära tappa ja taas käivitada. Samuti Sai programmidele jätta mulje et arvutil on väga palju mälu - 1 GB (NB! Protected Mode'i poolt emuleeritav mälu on suurem kui protsessor adresseerimiskanali abil adresseerida saaks!) . Mida ta tegelikult kasutada sai määras siiski ära reaalse mälu ja swap'i summa. Protected mode's ei saanud käivitada real mode'i jaoks kirjutatud programm; vähemalt mitte lihtsasti. Ümberlülitamiseks kahe mode vahel tuli teha masinale restart. 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). Tunnistagem, et paljuski ei kasutatud 286 protsessori uusi Protected Mode 'i omadusi ära ning neid tarvitati kui kiiremaid 80 186 protsessoreid.

Virtual Real Mode

See on selline kaval mode mida hakkasid toetama 386 protsessorid lisaks real ja protected mode'le; nimelt, osutus võimalikuks käivitada real mode'i tarvis kirjutatud programme, ja isegi mitut samaaegselt. Ümber lülitamiseks kahe mode vahel ei olnud enam vaja teha masinale restarti. Kõigi hilisemate protsessorite (486, Pentium) on loomulikuks mode'ks peetud Protected Mode'i. Seda Protected Mode oskavad kasutada UNIX, Linux, W95, NT, OS/2 ning ei oska kasutada DOS.

Lingid

http://triin.net/2004/09/29/Protsessor

http://www.ibm.com/developerworks/library/pa-microhist.html?ca=dgr-lnxw01MicroHistory

http://www.4004.com/mcs4-masks-schematics-sim.html#schematics ajaloolne 4004 protsessor ja selle ehitus

http://et.wikipedia.org/wiki/Keskprotsessor