teejuht
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.
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:
|
|
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 |
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