Professional Documents
Culture Documents
Cpu
Cpu
Cpu
[Raivo Alla]
]
[Arengulugu./]
Mikroprotsessorite 1. põlvkond(Generation 1)
2.põlvkond(Generation 2)
3.põlvkond(Generation 3)
4.põlvkond(Generation 4)
5.põlvkond(Generation 5)
Cache mälu oli nüüd 16KB - 8K koodi jaoks ja 8 andmetele. Data cache
kasutas MESI protokolli, et kasutada effektiivset write-back mode'i.
Uue ja huvitava asjana lisati branch prediction: if-then-else
konstruktsioonide täitmise etteennustamine.
Välise andmesiini laiust suurendati 64bitini, protsessorisiseselt
liigutati andmeid isegi 128 ja 256 bitisel siinil.
APIC(Advanced Programmable Interrupt Controller) näol saadi mitme
protsessori tugi.
Pentiumi hilisele versioonile lisati ka MMX - tehnoloogia, mis oma 64-
bitiste registritega pidi hõlbustama multimeedia jooksutamist.
6.põlvkond(Generation 6)
7.põlvkond?(Generation 7)
[Mikroprotsessori arhitektuur.]
Sissejuhatus
Järgnevalt käsitleme mikroprotsessorit kui programmeeritavat seadet,
kõigepealt uurides tema programmeerimismudelit ja kuidas ta adresseerib
mälu.
Põhiliselt vaatleme Inteli protsessoreid. On kirjeldatud nii
programmeerimist protected kui real mode’s.
Real mode mälu paikneb 00000H-FFFFFH, kasutades vaid esimest 1MB mälust
ja on olemas kõikidel mikroprotsessoritel.
Protected mode memory asetseb ükskõik millisel aadressil mälusüsteemis
ja ta on olemas alates 80286 protsessoritest.
Protected mode mälu suurus oleneb, mitmebitilise protsessoriga on
tegemist.32-bitiste protsessorite puhul on see tavaliselt 4GB .
Programmeerimismudel.
Lipuregistrid.
Segmendiregistrid.
SegmentAndOffsetAddressingAllowsRelocation.
Näide1:
Baasaadress(Base)=10000000H,G=0,Limit=001FFH,
End=Base+Limit=10000000H+001FFH=100001FFH
Näide2:
Baasaadress(Base)=10000000H,G=1,Limit=001FFH,
End=Base+Limit=10000000H+001FFXXXH=101FFFFFH
Joonisel on toodud,
kuidas
segmentregister
töötab kaitstud
moodis. Lisaks 13
bitisele
selektorile (valib ühe
8192-st kirjeldajast) on TI
bitt (TI=0, globaalne
kirjeldaja; TI=1, lokaalne
kirjeldaja) Soovitud
privileegi tase (reguested
privilege level, RPL)
määratakse ära 2-e bitiga.
Kõrgeim on 00 ja madalaim
11. Kasutatakse
mitmekasutaja keskkondades.
Kõrvaloleval joonisel on
näidatud, kuidas
segmentregister, mis
sisaldab selektorit valib
kirjeldaja globaalsest
kirjeldajate tabelist.
Globaalsed ja lokaalsed
kirjeldajate tabelid on
mälusüsteemis olemas. Et
neile ligi pääseda ja muuta
nende tabelite aadresse,
sisaldab MP programmselt
nähtamatuid registreid.
Neid registreid ei saa
otseselt adresseerida(ehkki
mõned neist on siiski
programmselt juhitavad).
Memory paging.
Et kiirendada mälu
tabuleerimist, on alates 80486-
st sisse viidud TLB
(translation look-aside buffer)
vahemälublokk. Selles hoitakse
32-e viimati külastatud
mälulehekülje aadressi. Alates
Pentiumist on oma TLB nii
andme- kui ka käsustiku jaoks.
Kõrvaloleval joonisel näidatakse,
kuidas töötavad page directory,
page tables ja memory pages.On
ainult üks lehekülje suunaja(page
directory) , mis sisaldab 1024 32-
bitist aadressi, mis viitavad
1024-le võimalikule lehekülje
tabelile(page
table).
Leheküljesuunaja ja iga lehekülje
tabel on igaüks suurusega 4KB.
Kui näiteks tabuleerida 4GB mälu,
läheb vaja 4Kb suunaja jaoks ja
4Kb * 1024 = 4Mb lehekülje
tabelite jaoks. DOS-is kasutab
EMM386.exe leheküljetabeleid, et
ümber defineerida mälupiirkond
C8000H-EFFFFH kui ülemine
mälublokk.EMM386.exe lubab ligi 16MB lisamälule(extended memory)
[MASINKEEL.]
Masinkood on binaarne ehk kahendkoodis kirjutatud instruktsioonide
jada, mis täidab teatud ülesannet ja on ainukene otsene viis MP-le
öelda, mida me temast tahame.
Masinkeelsed instruktsioonide pikkus varieerub vahemikus 8086-Pentium
II ühest kuni 13 baidini.On üle 100 000 erineva masinkeelse
instruktsiooni variatsiooni, võib öelda, et kindlat nimekirja pole
olemas, see täieneb üha.
8086-80286 on 16-bitised instruktsioonid,386 ja kõrgematel 32-bitised.
386 ja kõrgemad MP-d eeldavad, et kõik reaalmoodi instruktsioonid on
16-bitised, kaitstud moodis võib olla valitud kas 16-bitine või 32-
bitine instruktsioonide mood.
MOD-väli:
MOD-väli määrab adresseerimismoodi valitud
instruktsiooni jaoks ja kas displacement on
olemas antud juhul.
Kõrvalolev tabel on 16-bitise
instruktsioonmoodi jaoks, 32-bitise moodi
tabel on sarnane, ainult et 10 tähistab 32-
bitist displacementi.Kui MOD väljal on 11,
siis valitakse registri adresseerimine mälu
adresseerimise asemel.Kui väljal 00,01,10, siis valitakse üks
mäluadresseerimismoodidest.
MOV AL,[DI] on üks näide, kus valitakse 00(no displacement),
MOV AL,[DI+2] 8-bitine displacement ja MOV AL,[DI+1000H] 16-bitine
displacement.
REG ja R/M väljade
tähendused, registrite
valimine:
Üleval on toodud üks näide, kuidas MP loeb kahebaidilisest binaarsest
käsust välja meile arusaadava instruktsiooni.
Mälu adresseerimine.
Kui MOD väli sisaldab 00, 01,10, saab R/M väli
teise tähenduse.
Toodud tabel näitab 16-bitise
instruktsioonimoodi R/M adresseerimismoode.
Kui spetsiaalset
adresseerimist poleks,
tõlgendataks seda kui
käsku MOV [BP],DL, mis
oleks kolme-, mitte
neljabaidine
instruktsioon.
(jooniselt Byte 4 jääks
ära)
32-bitine adresseerimismood.
Järgnev joonis toob ära 32-bitise moodi R/M kooditabeli.Pane tähele, et
kui R/M=100, siis ilmub instruktsiooni
a lisabait, mida kutsutakse scaled-index
byte(skaalaindeksi bait).Seda baiti
kasutatakse peamiselt siis, kui kaks
registrit liidetakse kokku et saada
mäluaadress instruktsioonis.
Kuna see bait lisatakse instruktsioonile,
on 7 bitti opkoodi jaoks ja 8 bitti
skaalaindeksi baidis. St. et scaled-index
instruktsioonil on 219(32K) erinevat
variatsiooni.
Seega on üle 32 000 MOV instruktsiooni variandi.