Protsessor

teejuht
 
1.
Sissejuhatus
2.
Protsessori kirjeldus
3.
Data ja Address Buses (andme ja adresseerimise kanalid) - Protsessor ja mälu 
4.
Real, Protected ja Virtual Real Mode'id
5.
Protsessorite areng - kronoloogiliselt
lugemist http://www.ece.uiuc.edu/~ece291/books/ 
 

1. 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.
 

2. 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 selline arvutikeel, mis mõnede asjatundjate meelest ei klassifitseerugi arvutikeeleks. 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 konreetsel 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 erivevad 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, korrutmine) 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:
 
 
 
 
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.
 

3. 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älupeasaga parasjagu tegeles andmekanal.

Olukorda võiks võrrelda kaheksasoonelise veevoolikuga kusjuures igas soones saab vee kiinni panna või jooksma lasta (andmenal). 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 kiiremine protsessor saab tegutseda. Andemkanali laius näitab kui suures tempos suundab 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 veenuda, 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 paremine 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:


 

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;

4. 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 lomulikult 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 adresseeida saaks!) . Mida ta tegelikult kasutada sai määras siiski ära reealse mälu ja swap'i summa. Protected mode's ei saanud käivitada real mode'i jaoks kirjutatud programm; vähemalt mitte lihtsasti. Ümerlülitamiseks kahe mode vahel tuli teha masinale restart. Siin tuleb tähelepanna, 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. Ümerlü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.

5. Protsessorite areng - kronoloogiliselt
 
 
markeering sagedus Internal 
Register 
Size
Data bus 
width
address bus 
width
aasta tsüklit 
instruktsiooni 
kohta
omadused
8086 4,77 MHz 16 8 20 78 12
8088 79
286 16 16 24 82
386DX 32 32 32 85
386SX 88
486DX 89
386SL 90
 
 

gggg