48
Máté: Architektú rák 10. előadás 1 Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens sz_név ENDS sz_név a szegmens (szelet) neve. A fordító az azonos nevű szegmens szeleteket úgy tekinti, mintha folyamatosan, egyetlen szegmens szeletbe írtuk volna. Az azonos nevű szegmens szeletek paraméterei egy modulon belül nem változhatnak. A szerkesztő egy memória szegmensbe szerkeszti az azonos nevű szegmenseket. A szegmens osztály legtöbbször CODE, DATA, CONSTANT, STACK, MEMORY.

Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

  • Upload
    neo

  • View
    17

  • Download
    0

Embed Size (px)

DESCRIPTION

Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens sz_név ENDS sz_név a szegmens (szelet) neve. A fordító az azonos nevű szegmens szeleteket úgy tekinti, mintha folyamatosan, egyetlen szegmens szeletbe írtuk volna. - PowerPoint PPT Presentation

Citation preview

Page 1: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 1

Szegmens, szegmens csoportsz_név SEGMENT aling_type combine_type ’osztály’. . . szegmens sz_név ENDSsz_név a szegmens (szelet) neve. A fordító az azonos nevű szegmens szeleteket úgy tekinti,

mintha folyamatosan, egyetlen szegmens szeletbe írtuk volna.

Az azonos nevű szegmens szeletek paraméterei egy modulon belül nem változhatnak.

A szerkesztő egy memória szegmensbe szerkeszti az azonos nevű szegmenseket.

A szegmens osztály legtöbbször CODE, DATA, CONSTANT, STACK, MEMORY.

Page 2: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 2

aling_type (illesztés típusa) azt mondja meg, hogy a szegmens szelet milyen címen kezdődjön:

BYTE 1-gyel,WORD 2-vel,DWORD 4-gyel,PARA 16-tal,PAGE 256-tal osztható címen. Akkor van jelentősége, ha a szegmens szelet egy

ugyanilyen nevű szegmens szelet folytatása.

Page 3: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 3

combine_type (kombinációs típus) a szerkesztőnek szóló üzenet. Lehet:

PUBLIC: (alapértelmezés) az azonos nevű szegmens szeletek egymás folytatásaként szerkesztendők.

STACK: a stack részeként szerkesztendő a szegmens szelet, egyebekben megegyezik a PUBLIC-kal. Amennyiben van STACK kombinációs típusú szegmens a programban, akkor SS és SP úgy inicializálódik, hogy SS az utolsó STACK kombinációs típusú szegmensre mutat, SP értéke pedig ennek a szegmensnek a hossza.

COMMON: az azonos nevű szegmens szeletek azonos címre szerkesztendők. Az így keletkező terület hossza megegyezik a leghosszabb szegmens szelet hosszával. A COMMON hatása csak különböző modulokban megírt szegmens szeletekre érvényesül.

Page 4: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 4

MEMORY: a szerkesztő ezt a szegmenst az összes többi szegmens fölé fogja szerkeszteni, mindig a program legmagasabb címre kerülő része (a Microsoft LINK programja ezt nem támogatja).

AT kif: a kif sorszámú paragrafusra kerül a szegmens szelet. Alkalmas lehet pl. a port-okhoz kapcsolódó memória címek szimbolikus definiálására.

Page 5: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 5

Az ASSUME utasítás az assembler-t informálja arról, hogy a címzésekhez a szegmens regisztereket milyen tartalommal használhatja, más szóval, hogy melyik szegmens regiszter melyik szegmensnek a szegmens címét tartalmazza (melyik szegmensre mutat):

ASSUME sz_reg1:sz_név1[, sz_reg2:sz_név2 ...]

Az ASSUME utasításban felsorolt szegmenseket „aktívak”-nak nevezzük. Az ASSUME utasítás nem gondoskodik a szegmens regiszterek megfelelő tartalommal történő feltöltéséről! Ez a programozó feladata!

Az ASSUME utasítás hatása egy-egy szegmens regiszterre vonatkozóan mindaddig érvényes, amíg egy másik ASSUME utasítással mást nem mondunk az illető regiszterről.

Page 6: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 6

A GROUP utasítással csoportosíthatjuk a szegmenseinket:

G_nevGROUP S_név1[, S_név2...]

Az egy csoportba sorolt szegmensek a memória egy szegmensébe kerülnek. Ha ilyenkor az ASSUME utasításban a csoport nevét adjuk meg, és ennek megfelelően állítjuk be a bázis regisztert, akkor a csoport minden szegmensének minden elemére tudunk hivatkozni. Ilyenkor egy változó OFFSET-je és effektív címe (EA) nem feltétlenül egyezik meg.

Page 7: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 7

GRP GROUP ADAT1,ADAT2

ADAT1 SEGMENT para public ’data’

A dw 1111h

...

ADAT1 ENDS

ADAT2 SEGMENT para public ’data’

W dw 2222h

...

ADAT2 ENDS

Page 8: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 8

code segment para public ’code’ASSUME CS:code, DS:GRPASSUME SS:stack, ES:nothing

...MOV SI,OFFSET W ; SI W offset-je: 0

; az ADAT2 szegmens elejétől mért távolságMOV AX,[SI] ; AX 1111h,

; de!!!LEA SI, W ; SI effektív

címe:; a GRP szegmens csoport elejétől mért távolság

MOV AX,[SI] ; AX 2222h....

Page 9: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 9

Globális szimbólumok

A több modulból is elérhető szimbólumok.

Ha egy szimbólumot globálissá kívánunk tenni, akkor PUBLIC-ká kell nyilvánítanunk annak a modulnak az elején, amelyben a szimbólumot definiáljuk:

PUBLIC szimb1[, szimb2...]

Azokban a modulokban, amelyekben más modulban definiált szimbólumokat is használni szeretnénk, az ilyen szimbólumokat EXTRN-né kell nyilvánítanunk:

EXTRN szimb1:típus1[, szimb2:típus2...]

A globális szimbólumok lehetővé teszik, hogy a programjainkat modulokra bontva készítsük el. Az egyes modulok közötti kapcsolatot a globális szimbólumok jelentik.

Page 10: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 10

INCLUDE utasítás

INCLUDE File_Specifikáció

hatására az assembler az INCLUDE utasítás helyére bemásolja az utasítás paraméterében specifikált file szövegét.

Az INCLUDE-olt file-ok is tartalmazhatnak INCLUDE utasítást.

Page 11: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 11

Ha makró definícióinkat a MyMacros.i file-ba kívánjuk összegyűjteni, akkor célszerű ezt a file-t így elkészítenünk:

IFNDEF MyMacros_i

MyMacros_i= 1

... ;; makró, struktúra definíciók

... ;; EXTRN szimbólumok

ENDIF

Ekkor a MyMacros.i file legfeljebb egyszer kerül bemásolásra, mert az összes további esetben a feltételes fordítás feltétele már nem teljesül.

A .-ot _-sal helyettesítettük!

A legtöbb include file-ban ezt a konvenciót alkalmazzák.

Page 12: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 12

Lista vezérlési utasítások

TITLE cím

A fordítás során keletkező lista minden oldalán megjelenik ez a cím. Egy modulon belül csak egyszer alkalmazható.

SUBTITLE alcím

Többször is előfordulhat egy modulon belül. A program lista minden oldalán – a cím alatt – megjelenik az utolsó SUBTITLE utasításban megadott alcím.

Page 13: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 13

PAGE [op1][,op2]

Paraméter nélkül lapdobást jelent.

Ha egyetlen paramétere van és az egy + jel, akkor a fejezet sorszámát növeli eggyel, és a lapszámot 1-re állítja.

Ettől eltérő esetekben op1 az egy lapra írható sorok (10op1255), op2 az egy sorba írható karakterek számát jelenti (60op2132). Ha valamelyik paramétert nem adjuk meg, akkor természetesen nem változik a korábban beállított érték. A sorok száma kezdetben 66, a karaktereké 80.

Page 14: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 14

A TITLE, a SUBTITLE és a PAGE egy elkészült programcsoport végső papír-dokumentációjának jól olvashatóságát segíti.

A programfejlesztés során ritkán készítünk program listákat.

NAME név

A modul nevét definiálhatjuk vele. A szerkesztő ezt a nevet fogja használni. Ha nem szerepel NAME utasítás a modulban, akkor a TITLE utasítással megadott cím a modul neve. Ha ez sincs, akkor a file nevének első 6 karaktere lesz a modul neve.

Page 15: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 15

COMMENT határoló_jel szöveg határoló_jel

Segítségével több soros kommentárokat írhatunk. Az assembler a COMMENT utáni első látható karaktert tekinti határoló_jel-nek, és ennek a jelnek az újabb előfordulásáig minden kommentár. Nyilvánvaló, hogy a belsejében nem szerepelhet határoló_jel.%OUT szöveg

Amikor ehhez az utasításhoz ér a fordítóprogram, akkor a paraméterként megadott szöveg-et kiírja a képernyőre..RADIX számrendszer_alapja

Ha programban egy szám nem tartalmaz számrendszer jelölést, akkor az illető számot ebben a számrendszerben kell érteni (alapértelmezésben decimális).

Page 16: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 16

.LISTEngedélyezi a forrás- és tárgykódú sorok bekerülését a lista

file-ba (alapértelmezés)..XLIST

Tiltja a forrás- és tárgykódú sorok bekerülését a lista file-ba. Jól használható arra, hogy INCLUDE előtt tiltsuk a listázást, utána .LIST -el újra engedélyezzük, és ezzel az INCLUDE file-ok többszöri listázását elkerüljük..LFCOND

Minden feltételes blokk kerüljön listára..SFCOND

Csak a teljesülő feltételes blokkok kerüljenek listára (alapértelmezés)..TFCOND

Vált a két előző listázási mód között.

Page 17: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 17

.CREFKészüljön kereszthivatkozási (cross-reference) tábla

(alapértelmezés). Ez a tábla azt a célt szolgálja, hogy könnyen megtaláljuk az egyes változókra történő hivatkozásokat a programban..XCREF

Ne készüljön kereszthivatkozási tábla..LALL

Kerüljön listára a makró hívások kifejtése..SALL

Ne kerüljön listára a makró hívások kifejtése..XALL

A makró hívások kifejtéséből csak a kódot generáló rész kerüljön listára (alapértelmezés).

Page 18: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 18

END kifejezés

A modul végét jelzi, kifejezés a program indítási címe. Ha a programunk több modulból áll, akkor természetesen csak egy modul végén adhatunk meg kezdő címet.

Page 19: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 19

Halmaz kezelésű gyorsítótár (4.39. ábra)Ha egy program gyakran használ olyan szavakat,

amelyek távol vannak egymástól, de ugyanoda képződnek le a gyorsítótárba, akkor sűrűn kell cserélni a gyorsító sort.

Ha minden címhez n bejegyzés van, akkor n utas halmazkeresésű gyorsítótárról beszélünk. Ritka a több, mint 4 utas kezelés.

LRU (Least Recently Used) algoritmus: gyorsító sor betöltésnél a legrégebben használt sor kerül ki a gyorsítótárból.

Page 20: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 20

Memóriába írásStratégiák:Írás áteresztés (write through): az írás a memóriába

történik. Ha a cím a gyorsítóban van, oda is be kell írni, különben el kellene dobni a gyorsító sort.

Késleltetett írás (write deferred, write back): ha a cím bent van a gyorsító tárban, akkor csak a gyorsító tárba írunk, a memóriába csak gyorsító sor cserénél. Ha a cím nincs a gyorsító tárban, akkor előtte betölthetjük: írás allokálás (write allocation) – többnyire ezt alkalmazzák késleltetett írás esetén.

Page 21: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 21

UltraSPARC II

64 bites RISC gép, felűről kompatibilis a 32 bites SPARC V8 architektúrával.

CPU, 5.4 millió tranzisztor, 4 CPU közös memóriával használható. 787 láb (3.46-47. ábra). 64 (jelenleg csak 44) bites cím és 128 bites adat lehetséges.

Page 22: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 22

UPA (Ultra Port Architecture) sín és/vagy kapcsoló. A memóriákat és max. 4 CPU –t szolgál ki. Sor és oszlop cím. Két független tranzakció sorozatot tud kezelni egyidejűleg (írás, olvasás), mindkettőben több függőben lévő tranzakcióval.

UDB II (UltraSPARC Data Buffer II). Puffereli a beolvasott, kiírandó adatokat. Gondoskodik a tényleges memóriába írásról, az átviteleknél hiba javító kódot generál/ellenőriz.

SBus: 25 MHz-es szinkron sín a perifériáknak.

Page 23: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 23

64 B-os gyorsító sor (cash line).

Belső gyorsító tár (16 KB utasítás + 16 KB adat).

Külső 512 KB - 16 MB.

A másodlagos gyorsító tár mérete 512 KB –től 16 MB –ig terjedhet, tehát 8 K –tól 256 K gyorsító sor lehet a gyorsító tárban. A gyorsító tár címzéséhez 13 – 18 bit szükséges. A CPU mindig 18 bites „Line” címet (Címkeazonosítót) ad át. A gyorsító tár csak maximális méret esetén használja mind a 18 bitet címzésre.

Page 24: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 24

512 KB –os gyorsító tár esetén a 44 bites cím felosztása (~4.38. ábra):

Tag: 25 bit, Line: 13 bit, gyorsító soron belüli bájt cím: 6 bit = 44 bit.

Nagyobb gyorsító tár esetén rövidebb Tag (Címkeadat) is elég lenne (pl. 16 MB –os tár esetén 20 bites), de ilyekor – hogy a CPU egységesen működhessen – a gyorsító tár Tag-et kiegészíti Line legmagasabb helyértékű bitjeivel, ezt nevezi a 3.47. ábra Címkeadatnak.

Az Adat címe a gyorsító sor címén (Címkeazonosító) kívül még 2 bitet tartalmaz, mert egy átvitel során a gyorsító sornak csak negyed része mozgatható.

Page 25: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 25

UltraSPARC II CPU mikroarchitektúrájaA SPARC sorozat RISC elgondoláson alapul. A

legtöbb utasításnak két forrás és egy cél regisztere van.

Óra ciklusonként 4 utasítást tud kiosztani. A kiosztás sorrendben történik, de befejeződhet eltérő sorrendben.

PREFETCH utasítás feltételezett betöltésre, nem okoz hibát gyorsító tár hiánykor.

Page 26: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 26

Előre betöltő/Elküldő (4.49. ábra): ciklusonként négy utasítást tölt be – egy fél gyorsítósort. 2 bites elágazás jövendölő + statikus elágazás jövendölés. Maximum 12 elemű sort épít.

Csoportosító: egyszerre 4 (maximum 2 fix- és 2 lebegőpontos) utasítást tud kiosztani. A kiosztás és befejezés a sorrendtől eltérő lehet.

Az egész és lebegőpontos egység tejesen független, nem kell őket szinkronizálni.

Betöltő/Tároló: írás áteresztő. A gyorsítótár hiány elkerülésére külön sor a függőben lévő LOAD-ok és STORE-ok számára.

Page 27: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 27

9 szakaszos csővezeték (4.50. ábra)1. ciklusonként max. 4 utasítás az I-gyorsítóból,2. néhány irányító bitet tesz az utasításokhoz,3. a négyes utasítás csoportból annyit kioszt, ahányat tud,

– a fix pontos utasítások 1 ciklus alatt végrehajtódnak + 3 üres szakasz,

– a gyorsítótár szakaszban LOAD és STORE még dolgozik + 2 üres szakasz,

– a lebegőpontos utasítások általában 1 szakaszt igényelnek a regiszterek eléréséhez + 3-at a végrehajtáshoz,

8. csapda kezelés9. regiszterekbe írás

Page 28: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 28

picoJava II (SUN, 3.48. ábra).

JVM-et (Java Virtual Machine) megvalósító hardver.1, 2, 4, 8 vagy 16 KB I és D 2 utas gyorsítótár, 16 bájtos gyorsító sor, késleltetett írás, írás allokálás.64 bites memória sín (külön adat és cím vezetékek) és 32 bites PCI sín interfész. Flash PROM.16 I/O vonal nyomógombokhoz, kapcsolókhoz, lámpákhoz.Elsősorban beépített számítógépekben alkalmazzák.

Sun microJava 701 szabványos BGA (Ball Grid Array) tokban: picoJava II CPU + 16 KB I és D gyorsító, 316 láb: memória (adat, cím), PCI sín, vezérlés, órák, megszakítás, tesztelés, programozható B/K, … számára.

Page 29: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 29

picoJava II CPU mikroarchitektúrája

4.51. ábra

Regiszter oszlop, a verem fölső 64 szavát tartalmazza.

A regiszter oszlop közvetlenül, a D gyorsító egy ciklus késleltetéssel érhető el.

Automatikus eljárás (cselező – dribbling): a regiszter oszlop ne legyen túl tele vagy túl üres. Ciklikus puffer 2 mutatóval: nem kell másolgatni.

Nem szuperskaláris: a mikroműveleteket abban a sorrendben hajtja végre és fejezi be, ahogy kiosztottuk.

Page 30: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 30

picoJava II csővezetéke (4.52. ábra)

1. Betöltés: egyszerre 8 bájt az I gyorsítótárból.

2. Dekódolás: RISC jellegű, két forrás és egy cél regisztert tartalmazó mikroutasításokat állít elő CISC utasítás folyamból.

3. Operandus betöltés a veremből (regiszter oszlopból).

4. Utasítás végrehajtás.

5. D gyorsítóba írás, ha kell.

6. Eredmények verembe írása , ha kell.

Page 31: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 31

Utasítás összevonás, pl.: n=k+m; (4.53. ábra)

Tegyük fel, hogy k, m, n rendre a 7., 1. és 3. lokális változó, akkor egy lehetséges IJVM program:

iload 7 // a 7. lokális változó a verem tetejére,

iload 1 // az 1. lokális változó a verem tetejére,

iadd // a verem tetején lévő két regiszter

// összege a verem tetejére,

istore 3 // a verem tetejét a 3. lokális változóba.

A dekódoló egyetlen mikroműveletté vonja össze.

Page 32: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 32

Utasítások összevonása (4.54. ábra). JVM-nek több utasítása van, mint IJVM-nek!

A dekódoló 74 bites mikroműveleteket oszt ki, ezek legtöbbje egy kódot és három regisztert tartalmaz, és egy ciklusban végrehajtható. Közben figyel, hogy a sorozat megfelel-e egy legfeljebb 4 hosszú mintának (4.55. ábra). Ha megfelel, akkor a sorozatot egyetlen mikroutasítással helyettesíti.

Elágazás jövendölés: nem lesz elágazás! Inkább olcsó, mint bonyolult hardver.

Page 33: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 33

Összehasonlítás

Pentium II CISC gép

egy CISC utasítás → több RISC mikroutasítás

UltraSPARC II RISC gép

picoJava II verem gép, sok memória hivatkozás

több CISC utasítás → egy RISC mikroutasítás

Page 34: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 34

Történeti áttekintés

• Kezdetben: kevés, egyszerű utasítás.

• Később: sok, egyre összetettebb utasítás.

• IBM 360-as család. Lefelé kompatibilis, csak a nagyobb gépek hajtják végre hardveresen az utasításokat (gyors), a kicsik interpretálnak (olcsó).

Interpretálás előnyei:

• hibásan interpretált utasítások könnyű javítása,

• új utasítások egyszerű hozzáadása,

• strukturált felépítés; összetett utasítások hatékony fejlesztése.

Page 35: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 35

Hetvenes évek vége:

• a csak olvasásra használható gyors memóriák (vezérlőtárak – ROM Read Only Memory) megjelenése és beépülése a CPU-ba.

• az első 8 bites processzorok:

- Motorola 68000 egyszerű utasításokkal nagy

interpretert épít (siker),

- Zilog 8000 bonyolult hardver utasításokat

(kudarc).

Page 36: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 36

A nyolcvanas évek elejétől: A központi memória sebessége csaknem elérte a

vezérlő tárak sebességét. RISC (Reduced Instruction Set Computer -

csökkentett utasításkészletű számítógép): SPARC, DEC Alpha. Cél: minél gyorsabban indítani és átlapolni a gyors, egyszerű utasításokat.

CISC (Complex Instruction Set Computer, összetett utasításkészletű számítógép): IBM nagy gépek, VAX, … Összetett, viszont lassabb utasítások.

Page 37: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 37

Miért nem nyert a RISC? Kompatibilitás + az elveket az Intel is részben átveszi

(486-tól RISC mag).

RISC tervezési elvei • hardveres (nem mikroprogramozott) utasítások, • az utasítások indítási sebességének maximalizálása, • könnyen dekódolható utasítások, • memóriához fordulás csak betöltés (load) és tárolás

(store) esetén.

Sok regiszter kell!

Page 38: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 38

Utasítások szintje (ISA)

Amit a fordító program készítőjének tudnia kell: memóriamodell, regiszterek, adattípusok, utasítások.

A hardver és szoftver között helyezkedik el, 5.1 ábra.Általában a mikro architektúra nem tartozik hozzá.A jóság két kritériuma: • hatékony hardver megvalósítási lehetőség,• jó médium a fordítóknak. Továbbfejlesztéseknél ügyelni kell a kompatibilitásra!Nyilvános definíció: van: SPARC, JVM (tervezők);

nincs: Pentium II (gyártók).

kernelmód (user) felhasználói mód

Page 39: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 39

Memória modellekByte - ASCII kód 7 bit + paritás. Szó: 4 vagy 8 byte. Igazítás (alignment), 5.2. ábra:

hatékonyabb, de probléma a kompatibilitás (a Pentium II-nek két ciklusra is szüksége lehet egy szó beolvasásához).

Néha külön memória az adatoknak és az utasításoknak (nem ugyanaz, mint az osztott gyorsítótár!).

Memória szemantika: STORE A -t közvetlenül követő LOAD A mit ad vissza?

A memória műveletek végrehajtása: • kötött sorrendben, • definiálatlan sorrendben:

– SYNC utasítás: befejeztet minden megkezdett memória műveletet,

– RAW/WAR függőség esetén a hardver vár.

Page 40: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 40

RegiszterekISA-szinten a mikroszint nem minden regisztere

látszik (TOS, MAR), de van közös is (PC, SP). Speciális regiszterek: PC, SP, …Általános célú regiszterek: a gyakran használt adatok

gyors elérésére. Jó, ha szimmetrikusak: fordítók, konvenciók.

RISC gépen általában legalább 32 általános célú. Kernelmódban továbbiak: gyorsítótár vezérlés,

memória védelem, … PSW (Program Status Word): eredmény negatív,

nulla, ... mód, prioritásszint, megszakítás-állapot, ...

Page 41: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 41

UtasításkészletLOAD, STORE, MOVE, aritmetikai, logikai,

feltételes elágazó utasítások, … Pentium II: Nagyon sok előd (kompatibilitás!), a

fontosabbak: • 4004: 4 bites, • 8086, 8088: 16 bites, 8 bites adat sín. • 80286: 24 bites (nem lineáris) címtartomány (16K

darab 64 KB-s szegmens). • 80386: IA-32 architektúra, az Intel első 32 bites

gépe, lényegében az összes későbbi is ezt használja.• Pentium II –től MMX utasítások.

Page 42: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 42

A Pentium II üzemmódjai

real (valós): az összes 8088 utáni fejlesztést kikapcsolja (8088-ként viselkedik). Hibánál a gép egyszerűen összeomlik, lefagy.

virtuális 8086: a 8088-as programok védett módban futnak (ha az MS-DOS-t WINDOWS-ból indítjuk, és abban hiba történik, akkor nem fagy le, hanem visszaadja a vezérlést a WINDOWS-nak).

védett: valódi Pentium II. 4 védelmi szint (PSW):

0: kernelmód (operációs r.), 1, 2: ritkán használt, 3: felhasználói mód.

Page 43: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 43

Memóriaszervezés:

• 16K db szegmens (de a WINDOWS-ok és UNIX is csak egy szegmenst támogatnak, és ennek egy részét az operációs rendszer foglalja el),

• minden szegmensen belül a címtartomány: 0 - 232-1

• Little Endian tárolási mód: az alacsonyabb címen van az alacsonyabb helyértékű bájt.

Page 44: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 44

Regiszterek (5.3. ábra):

• (majdnem) általános regiszterek: EAX (a fő aritmetikai), EBX (mutatók tárolása), ECX (ciklusszervezés), EDX (szorzás, osztásnál EAX-et 64 bitesre egészíti ki).

Ezek 8 és 16 bites részei önálló regiszterként használhatók.

Page 45: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 45

Regiszterek (5.3. ábra):

• ESI, EDI (mutatók tárolására, szöveg kezelésre),

• EBP (keretmutató, verem kezelésre),

• ESP (verem mutató),

• CS, …, GS (kompatibilitás a régebbi gépekkel, mivel a Windows, Unix csak egy címtartományt használ, ezekre csak a visszafelé kompatibilitás miatt van szükség),

• EIP (utasítás számláló),

• EFLAGS (PSW).

Page 46: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 46

UltraSPARC II

SPARC 1987 még 32, a Version 9 már 64 bites architektúra, az UltraSPARC ezen alapul.

Memóriaszervezés: 64 bites (lineáris) címtartomány (jelenleg maximum 44 bit használható). Big endian, de little endian is beállítható.

Regiszterek (szervezésük túl bonyolult):

• 32 általános (5.4. ábra) 64 bites, a használatuk részben konvención, részben a hardveren alapul),

• 32 lebegőpontos (32 vagy 64 bites, de lehetséges két regiszterben egy 128 bites számot tárolni).

Page 47: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 47

Általános regiszterek (5.4. ábra)• Globális változók: minden eljárás használhatja,• FP: az aktuális veremkeret mutatója,• SP, R31: visszatérési cím,• Be-, kimenő paraméterek, lokális változók. CWP (Current Window Pointer, 5.5. ábra) mutatja az

aktuális regiszter ablakot (több regiszter készlet létezik, de mindig csak egy látszik). Ha kifogy a regiszter készlet, memóriába mentés, …

Load/store architektúra: csak ezek az utasítások fordulhatnak a memóriához. A többi utasítás operandusa regiszterben vagy az utasításban van. Az eredmény regiszterbe kerül.

Page 48: Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’ . . . szegmens

Máté: Architektúrák 10. előadás 48

JVM (Java Virtual Machine)Memóriamodell (4.10. ábra): konstans, lokális,

operandus és metódus terület. Minden cím CPP, LV, SP vagy PC relatív címzésű.

Biztonság: Nincs pointer. Az internetről letöltött bináris programok nem tudnak kárt okozni.

Maximum 64 KB-os ill. 16 KW-ös területek, de minden metódusnak saját lokális területe van.

Nagyobb, vagy dinamikus helyfoglalásra: halom (heap), new, release. Ha ez elfogy: szemétgyűjtő (garbage collector). Más, mint a verem!

Nincs általános regiszter – sok a memóriához fordulás (PicoJava II. legfeljebb 16+16 KB cache).