Sie sind auf Seite 1von 7

A processzorok szmtalan jellemz tulajdonsga kzl az albbiakban a felhasznli,

programozstechnikai szempontbl leglnyegesebb jellemzkkel foglalkozunk.

2.1. A szervezs
Szervezs alatt a processzor ltal az aritmetikai s a logikai mveletek sorn egyidejleg
(prhuzamosan) feldolgozott bitek szmt, a gpi sz hosszsgt rtjk. A processzorhoz
csatlakoz memria szervezsnek, (az egy cmen elrhet adat mennyisgnek), valamint az
adatbusz szlessgnek ezzel kompatibilisnek kell lennie. (gy tulajdonkppen inkbb a
szmtgp szervezsrl beszlhetnnk.) Ngy alapvet vltozat van: a bit-, a bjt-, a sz- s a
kombinlt szervezs. A bitszervezsnek inkbb csak elvi jelentsge van. Szszervezsnl a gpi
sz hosszsga ltalban binrisan kerek szm (16 bit, 32 bit, stb.) A szszervezs igen gyakori
specilis esete a bjtszervezs, ahol a gpi sz hosszsga 8 bit. Nemrg mg a folyamatirnyts
terletn az ilyen processzorok voltak a legelterjedtebbek. A kombinlt szervezs azt jelenti, hogy
a processzor bizonyos gpi utastsok vgrehajtsa sorn rvidebb, mg ms utastsoknl
hosszabb adatokkal dolgozik. A nagyobb adatelem hossza a rvidebbnek ltalban binrisan
kerek szm tbbszrse. A kombinlt szervezsnl memriacmzskor elrhet a teljes adat s
annak nllan cmezhet rszei is. Tipikus eset: 32 bites sz, 4 bjtra osztva.
2.2. Az adatbrzols
Az adat a gpi szban elhelyezked bitek sorozata, melynek nmagban jelentse nincs.
rtelmezse, valamint a gpi sz esetleges struktrlsa a feldolgoz program feladata. (Ugyanaz
a bitminta klnbz programok szmra klnbz jelentstartalmat hordoz.) Ilyen rtelemben
az adatbrzols ktetlen, a gpi szban brmi lehet. Vannak azonban olyan gpi utastsok,
amelyek felttelezik a bitsorozat bizonyos struktrltsgt, vagyis rtelmezik az adatot. Az ilyen
utastsok (pl lebegpontos aritmetikai mveletek) kttt adatformtumot ignyelnek, vagyis a
gpi sz bizonyos helyein adott rtelm adatelemnek kell lennie. Ellenkez esetben az utasts
vgrehajtsakor hibs eredmny keletkezik.

2.3. A regiszterek
A regiszterek a processzorba integrlt, gyors elrhetsg bels trolelemek. A gyors
elrhetsg abbl addik, hogy olvassukkor vagy rsukkor nem kell idignyes buszciklust
lebonyoltani. A regiszterek hossza ltalban megegyezik a gpi sz hosszsgval, de vannak
ennl hosszabb s rvidebb regiszterek is. Lteznek un. ltalnos cl, valamint un. specilis cl
regiszterek.
Az ltalnos cl regiszterek tartalmt a processzor nem rtelmezi teht bennk gymond
brmi lehet, vagyis a programoz szabadon, akrmilyen adat trolsra hasznlhatja ket.
ltalnos cl regiszterek nlkl elkpzelhet ugyan processzor, de az olyan is, hiszen a
regiszterek rendkvl hasznos programozstecnikai eszkzk. Mondhatjuk, hogy egy processzor
annl jobb, minl tbb univerzlis regisztert tartalmaz.
A specilis cl regiszterekkel ms a helyzet. Ezek tartalmt a processzor meghatrozott
mdon rtelmezi, teht nem mindegy, hogy mi van bennk. Az ilyen regiszterekhez a
programoz csak specilis mdon (meghatrozott utastsokkal) frhet hozz, egyesekhez pedig
sehogy. Durva programhibk forrsa lehet, ha nem az elrt mdon s clra hasznljuk ket.
Specilis cl regiszterek nlkl nem kpzelhet el mkdkpes processzor, s minl
komplexebb egy processzor, annl tbb ilyen regisztert tartalmaz.
A specilis regisztereket kt csoportba szoks sorolni, vannak un. adatregiszterek s vannak
un. cmregiszterek. (Az elnevezs nem tl szerencss, mert a cm is tekinthet adatnak.) Az
adatregiszterek hossza megegyezik a gpi sz hosszval, a cmregiszterek pedig a cmvel. (Az
utbbiak ltalban hosszabbak, pl. bjt-szervezs processzornl a cm rendszerint kt-bjtos.)

Tipikus adatregiszterek:
Akkumultor (AC): az aritmetikai egysg kzponti regisztere, az aritmetikai s a logikai
utastsok egyik (vagy egyetlen) operandusa.
Utastsregiszter (Instruction Register, IC): az ppen folyamatban lv utasts kdjt
tartalmazza.

Tipikus cmregiszterek:
Utastsszmll (Program Counter, PC): a soron kvcetkez utasts cmt tartalmazza.
Stack-pointer (SP): a stack aktulisan elrhet elemnek (tetejnek) a cmt tartalmazza.
Indexregiszterek: tmbelem elrsekor a tmb bziscmt (vagy az elem indext)
tartalmazzk.
Szegmensregiszterek: szegmentlt memria alkalmazsa esetn az egyes memria-
szegmensek bziscmt tartalmazzk.
Mg egyb specilis regiszterek is lteznek (az jabb processzorokban egyre tbb van); az
rdekld Olvas egy-egy konkrt processzor felhasznli kziknyvt tanulmnyozva bven
tallhat mg pldkat.

Tevkenysg: A mr emltett forrsok felhasznlsval


tanulmnyozza az Intel 8080 processzor regisztereit!
Termszetesen ms processzort is vlaszthat, ha van rla
megfelel dokumentcija.
-
1974/ 4.8 ezer
-
tranzisztor/ 20
mm2
-
8 bit; 2,5 Mhz

Megjegyezzk, hogy az emltettek kzl alapvet jelentsg s minden processzorban


elengedhetetlen az akkumultor, az utastsregiszter s az utastsszmll meglte. A tbbi akkor
szksges, ha a processzor hardveresen tmogatja a stack-kezelst, a tmb-brzolst, illetve a
memrit logikai szegmensekre osztva hasznlja. (A mai processzorok mind ilyenek).
Vannak mg klnleges, egybites specilis regiszterek, ezek a fizikailag egy-egy flip-floppal
megvalstott un. jelzbitek (flag-ek). Nmelyikk az aritmetikai mveletek eredmnynek
jellegzetes tulajdonsgait (eljel, nullasg, tvitel) jelzi, msok a processzor zemllapotaival
kapcsolatos, fontos jelzseket kpviselik ( pl. megszakts engedlyezve/tiltva, stb.). ltalban az
aritmetikai jelzbitek kpezik a programelgazsokat megvalst feltteles vezrlstad
utastsok dntsi alapjt. Nlklk nem lehetne elgaz programot rni, ciklust szervezni,
megltk teht elengedhetetlen.
2.4. Utastskszlet, utaststpusok
Felhasznli (programozi) szempontbl az utastskszlet a processzor legfontosabb
jellemzje. Egy gpi utasts egy - a processzor ltal kzvetlenl elvgeztet - elemi mvelet
lersa. Az utastsok a gpi nyelv szkszlett alkotjk, minden, a gp szmra rtelmes mondat
(vgrehajthat program) csak e szkszlet elemeivel fogalmazhat meg.
Minden gpi utasts kt krdsre: a MIT? s a MIVEL? (vagy HOV?) krdsekre vlaszol.
A MIT? krdsre az utasts kdrsze, a gpi tevkenysg lersa, a MIVEL? (HOV?) krdsre
az operandusrsz, a mveletben rsztvev adatok kijellse vlaszol. Az utastskszlet a gp ltal
kzvetlenl elvgezhet mveletek sszessge.
Egy program vgrehajtsa gpi utastsok egyms utni vgrehajtst jelenti. A gpi mkds
alapegysge egy utasts teljes vgrehajtsnak tartama. Ezt utastsciklusnak nevezzk. Egy
utasts vgrehajtsa sorn legalbb egyszer, de - az utasts jellegtl fggen - gyakran tbbszr
is kapcsolatba kell lpni a memrival, vagy egy perifria-regiszterrel (porttal). Az adattvitel a
rendszerbuszon zajlik le. Egy-egy ilyen tviteli folyamat egy kisebb egysget kpvisel, ezt gpi
ciklusnak, vagy buszciklusnak nevezzk. A buszmvelet meghatrozott szablyok szerint zajlik le
s mg kisebb egysgekre tagolhat. Ezzel elrkeztnk a gpi mkds legkisebb egysghez: az
rajel-ciklushoz (vagy llapothoz). Ennl kisebb egysg mr nincs, hiszen a processzor egy
szinkron sorrendi hlzat, s mint ilyen, minden llapotvltozsa az rajel valamelyik lhez
ktdik.
Teht egy program vgrehajtsa: utastsciklusok sokasgnak egyms utni vgrehajtsa. Egy
utastsciklus vgrehajtsa: nhny gpi ciklus vgrehajtsa. Egy gpi ciklus vgrehajtsa: nhny
llapotvltozs lezajlsa. A programoz az utastsciklusig lt el; a gpi ciklusokat mr nem, az
llapotokat pedig mg kevsb rzkeli. Ez azt jelenti, hogy a programoz az utastsciklusokat,
azok egymsutnjt elrhatja (ez maga a programozs), de a kisebb lptk folyamatokra mr
nem lehet befolysa.

Tevkenysg: Javasoljuk az Olvasnak, hogy a fentiekhez kapcsoldan vegyen kzbe egy


konkrt processzor rszletes felhasznli (vagy hardver) kziknyvt s tanulmnyozza az
utasts-vgrehajts mechanizmust! Ajnljuk erre a clra az Intel 8080 processzort, amely ugyan
ma mr muzelis darab, de mg sok van hasznlatban, s sokig kpviselte az lvonalat.
Klnleges elnye, hogy nagy tudomnya ellenre is rendkvl ttekinthet s egyszer a
felptse s a mkdse. Az embernek az az rzse, mintha tervezsekor didaktikai
szempontokat is rvnyestettek volna, s oktatsi modelleszkznek (is) szntk volna. (Pedig
biztos nem gy volt)

A gpi utastsokrl ltalnossgban nem tl sokat lehet mondani. Ahny processzor,


annyifle utastskszlet van. Termszetesen minden alapvet utastst minden processzor
megvalst, de eltr vltozatokban.
Az ltalnosan jellemz utastsok funkcionlis szempontbl az albbi csoportokba
rendezhetk:
adatmozgat utastsok,
aritmetikai utastsok,
logikai utastsok,
forgat s tol utastsok,
vezrlstad utastsok s
egyb utastsok.

Az adatmozgat utastsok adattalaktst nem vgeznek, csak az adatok szmtgpen


belli helyt jellik ki, vagy vltoztatjk meg. Szoks ezt a csoportot (a tipikus mnemonikus nevek
alapjn) MOVE- vagy LOAD-csoportnak is nevezni. Statisztikailag a leggyakoribb utastsok, egy
tlagos program utastsainak legalbb a fele ilyen jelleg. Operandusaik regiszterek,
memriarekeszek, perifrilis regiszterek lehetnek, gyakran tetszleges prostsban. Szimbolikus
formjuk: SD, ami gy rtend, hogy az S helyen (forrs) lv adat trdik a D helyre (cl).
Ebbe a csoportba tartoznak olyan specilis utastsok is, mint a stackbe val rs (PUSH) vagy az
onnan val olvass (POP); ezek operandusa ltalban csak regiszter lehet.
Az aritmetikai utastsok operandusaik kztt valamilyen aritmetikai mveletet vgeznek.
ltalban az egyik operandusnak a mvelet eltt az akkumultorban kell lennie s az eredmny is
ott keletkezik. A msik operandus rendszerint brhol lehet (regiszter, memria). A rgebbi
processzorok aritmetikai kszlete meglehetsen szegnyes volt. Utastsszinten csak fixpontos
sszeadst s kettes komplemens kpzst tudtak vgezni. E mveletek felhasznlsval persze
brmilyen aritmetikai mvelet megvalsthat, de csak viszonylag nagy s bonyolult programok
segtsgvel, teht nem kzvetlenl, hanem szoftverrel. A mai processzorok mr mind a ngy
alapmveletet elvgzik, st, lebegpontos aritmetikval is rendelkeznek. Az aritmetikai csoport
tipikus utastsai mg a szmll utastsok (inkrementls, dekrementls), ezek operandusa
regiszter lehet.
A logikai utastsok operandusaik kztt logikai mveleteket vgeznek. A mvelet eltt itt
is az egyik (vagy egyetlen) operandusnak az akkumultorban kell lennie s az eredmny is ott
keletkezik. Az operandusok teljes gpi szavak s a mvelet a sz minden bitjre vgrehajtdik.
Utasts-szint szelektv bitkezelst ltalban nem valstanak meg a processzorok, gy az ilyen
feladatokat tbb utastssal (programmal) lehet megoldani. A hrom logikai alapmveletet: az S-
, a VAGY-kapcsolatot, valamint a negcit (komplementls) minden processzor utastskszlete
tartalmazza. Ez azt jelenti, hogy a processzorok (termszetesen) univerzlis logikai mveletvgz
eszkzk, hiszen a hrom alapmvelettel brmilyen logikai fggvny megvalsthat. Ennek
ellenre sok processzor utastskszlete - redundns mdon - mg egyb logikai mveleteket is
tartalmaz, ami persze a programoz szempontjbl knyelmes. Szinte ltalnos pl. a KIZR-
VAGY mvelet megvalstsa.
A forgat s a tol (rotate, shift) utastsok operandusa mindig az akkumultor. Ezek az
utastsok rszben a szelektv bitkezelst segtik el, rszben az aritmetikai utastsok kiegszti,
mert jl hasznlhatk szorz, illetve oszt algoritmusok megvalstsban. A forgats az
akkumultor tartalmnak sajt magban, vagy az tvitel-biten (carry flag) keresztli, jobbra vagy
balra trtn, ciklikus eltolst jelenti. Az eltolskor (shift) az akkumultor tolsirny szls bitje
eltnik s az ellenkez oldalon zrus-bit kerl be.
A vezrlstad utastsok rendkvl fontos s ltalban npes csoportot alkotnak. Ide
tartoznak azok az utastsok, melyek segtsgvel program-elgazsokat lehet megvalstani.
Kzs jellemzjk, hogy az utastsszmll (PC) tartalmt mdostjk (ez jelenti a
vezrlstadst). Vannak ugr-tpus (JUMP-jelleg), szubrutinhv (CALL-jelleg) s
szubrutinbl val visszatrst biztost (RETURN-jelleg) vezrlstad utastsok. Rendszerint
mindhrom tpusnak vannak feltteles vltozatai, st, van olyan processzor, amely - szinte pazarl
mdon - mindhrom tpus minden aritmetikai flag mindkt llapotra vonatkoz feltteles
vltozatt megvalstja (pl. JZ: ugorj, ha zr, JNZ: ugorj, ha nem zr, CP: szubrutinhvs, ha
plusz, CM: szubrutinhvs, ha mnusz, stb.). Vannak azrt takarkosabb processzorok is. Tbb
esetben csak a JUMP-nak van feltteles vltozata, a CALL-nak s a RETURN-nek nincs.

Ltezik mg egy rdekes, indirekt megolds. Egyes processzorokban csak felttel nlkli JUMP,
CALL s RETURN van, viszont van feltteles utastskihagy utasts (SKIP). Itt gy lehet
feltteles elgazst ltrehozni, hogy a felttel inverzt kpvisel SKIP utastssal kihagyjuk, vagy
sem a felttlen vezrlstad utastst.
Pldul: JZ most_nulla = SNZ, JUMP most_nulla,

ahol JZ: ugorj, ha zr, SNZ: hagyd ki, ha nem zr.

Az egyb utastsok csoportja klnsen processzorspecifikus, hiszen ide olyan klnleges


utastsok tartoznak, amelyek az adott processzor specilis mkdsi jellemzivel kapcsolatosak.
Ide sorolhatjuk (ha vannak) a kln input/output utastsokat, a megszaktsi rendszert
engedlyez/tilt utastsokat, a memriaszegmenseket bellt utastsokat, stb. s ide tartozik a
minden processzorban meglev ne csinlj semmit utasts (NOP) is. Ez a lzas semmittevs
utastsa, mert a processzornak ezt a semmittevst izzadva vgre kell hajtania.

Tevkenysg: jra javasoljuk az Olvasnak egy konkrt processzor gpknyvnek alapos


tanulmnyozst! E nlkl ugyanis nem fogja elgg megrteni s egyltaln nem fogja
megrezni egy processzor lktet mkdst. Most az utastskszletre koncentrljon! A gpi
utastsok ismerete manapsg nem azrt szksges, hogy gpi nyelven programozzunk, hanem
azrt, hogy megrtsk a processzort. A magas szint nyelvek steril cscsairl mindebbl semmi
nem ltszik. s ha nem is jr kzvetlen haszonnal, az semmikppen nem kros, ha valaki megrt
valamit.

2.5. A cmzsi mdok


Az utastsokkal kapcsolatban korbban emltett MIVEL? (HOV?) krdsre az operandusok
kijellse, a cmzs ad vlaszt. Az operandusokat klnflekppen adhatjuk meg, ennek
lehetsges formi a cmzsi mdok.

80x86 cmzsi mdok


A sklzott indexelt cmzsi md

(www.inf.unideb.hu/~jvegh/edu/prog/AoAHLA/html/ch0
7s02.html)

Ha meggondoljuk, egy kt-operandus utasts (pl. sszeads) vgrehajtshoz ngy cmet kellene
megadni: a kt operandus cmt, az eredmny cmt s a kvetkez utasts cmt. Valban, ez
volt a helyzet az un. ngycm gpeknl. (Volt, mert ma mr ilyenek nincsenek.) E gpek hallatlan
elnye az volt, hogy a program egyes utastsait nem kellett sorban egyms utn rni s a
memriba sem kellett sorban betlteni, hanem ssze-vissza lehetett doblni, hiszen minden
utasts tartalmazta a kvetkez cmt. Ha kiktjk, hogy a mveletvgzs eltt az egyik
operandusnak mr az aritmetikai egysg adatregiszterben, az akkumultorban kell lennie, akkor
ennek megadsa elmaradhat (hromcm gp). Ha azt is kiktjk, hogy az eredmny is az
akkumultorban marad (hiszen gyis ott keletkezik), akkor ezt sem kell megadni (ktcm gp).
Vgl, ha bevezetnk egy specilis regisztert, amely nyilvntartja, hogy a program vgrehajtsa hol
tart (vagyis kijelli a kvetkez utasts cmt), s amelyet a processzor az utastsciklus sorn
automatikusan inkrementl (ez az utastsszmll, a PC), akkor mr csak egy operandust kell
megadni. Ez a jelenlegi, un. egycm gp. Termszetesen itt kln utastsokkal kell gondoskodni
az egyik operandus akkumultorba-tltsrl, illetve az eredmny thelyezsrl.

Az egyes processzorok ltal biztostott klnbz cmzsi lehetsgeket a programoz


nagyon jl kihasznlhatja: nvelheti az adatelhelyezs rugalmassgt, ttekinthetsgt, az
adathalmaz strukturltsgt, javtva ezltal a program hatkonysgt. A cmzsi mdoknak
klnbz szempontok szerint tbb csoportja ltezik. (Termszetesen nem minden processzor
biztost minden lehetsget.)

A) Az operandus elhelyezsnek szabadsgfoka szerint


azonnali (immediate),
kzvetlen (direct) s
kzvetett (indirect)
cmzsrl beszlnk.

Az azonnali cmzsnl az operandus rtke az utasts rsze. Ez az rtk a program rsakor


rgzl s futskor vgig lland marad.

A direkt cmzsnl az operandus memriabeli helyt (az operandust tartalmaz


memriarekesz cmt) adjuk meg. Futskor az adat helye lland marad, de rtke vltozhat.

Az indirekt cmzsnl egy pointert adunk meg, amely az adat helyre mutat, vagyis a cm
cmt hatrozzuk meg. Futskor itt mr nem csak az adat rtke, hanem helye is vltozhat.

B) Attl fggen, hogy a cm egszt, vagy csak egy rszt adjuk meg, beszlnk abszolt, illetve
relatv s indexelt cmzsrl.

Az abszolt cmzsnl az operandus teljes cmt adjuk meg.

A relatv s az indexelt cmzs hasonl; mindkettnl a cmnek csak egy rszt, egy
bziscmhez kpesti eltolst kell megadni. A teljes cmet a processzor futs kzben
automatikusan generlja a bziscmbl s az eltols rtkbl. Relatv cmzsrl akkor
beszlnk, ha a bziscmet tartalmaz regiszter az utastsszmll (PC), indexelt cmzsrl
pedig akkor, ha a bziscm egy indexregiszter tartalma.

Taln szksgtelen, mgis megjegyezzk, hogy mkds kzben a cmbuszon mindig teljes
cmnek kell megjelennie. A fentiek csak arra vonatkoznak, hogy a teljes cm meghatrozsa
egszben, vagy csak rzben a programoz feladata.

C) Vgl, ha az aktulis cmet elllt regiszter tartalmt a processzor felhasznls eltt


automatikusan eggyel cskkenti, vagy felhasznls utn eggyel nveli, autodekrementl,
illetve autoinkrementl cmzsrl beszlnk. E md programoz ltali elrsa elnysen
hasznlhat pl. egy tblzat elemein val vgiglpkeds sorn. A stackre vonatkoz mveletek
is implicit autodekrementl (PUSH) s autoinkrementl (POP) cmzsi mdot hasznlnak.

A fenti hrom szempont szerinti klnbz csoportokba tartoz cmzsi mdok a processzor
ltal biztostott keretek kztt egy mssal kombinlhatk. gy pl. beszlhetnk indirekt, indexelt
cmzsrl, ahol az operandus cmnek a cme van megadva (indirekt), de ez a cm egy tblzat
adott index eleme (indexelt).
Tevkenysg: Tanulmnyozza egy konkrt processzor ltal biztostott cmzsi lehetsgeket!
Kvesse vgig az adatelrs folyamatt.!

Das könnte Ihnen auch gefallen