Máté: Architektúrák10. előadás1 Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’... szegmens sz_név ENDS sz_név a szegmens (szelet)

Slides:



Advertisements
Hasonló előadás
Alaplap.
Advertisements

1 Számítógépek felépítése 9. előadás I/O rendszerek.
Hatékonyságvizsgálat, dokumentálás
A számítógép felépítése
C++ programozási nyelv Gyakorlat hét
Neumann-elvek A számítógép legyen teljesen elektronikus, külön vezérlő és végrehajtó egységgel. Kettes számrendszert használjon. Az adatok és a programok.
A mikroprocesszor 1. rész.
Számítógépek felépítése 3. előadás CPU, utasítás ciklus, címzés
Adatbázisrendszerek elméleti alapjai 5. előadás
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
Gyorsító tár (cache – ábra)
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Máté: Architektúrák12. előadás1 Blokk ismétlés Nemcsak a blokk definíciójának kezdetét jelölik ki, hanem a kifejtést (hívást) is előírják. A program más.
Mutatók, tömbök, függvények
Alapfogalmak Hardver:  A számításokat végző fizikai-technikai rendszer (kézzel fogható, fizikai termékek) Szoftver:  Programok, programrendszerek (szellemi.
A memória.
Alapfogalmak Adat: fogalmak, tények, jelenségek olyan formalizált ábrázolása, amely emberi vagy gépi értelmezésre, feldolgozásra, közlésre alkalmas. Információ:
Mikroszámítógépek I 8085 processzor.
Utasítás végrehajtás lépései
PIC processzor és környezete
CISC - RISC processzor jellemzők
A memória.
Fuzzy halmazok. 4. előadás2 3 4 Egy hagyományos halmazEgy Fuzzy halmaz.
A memóriák típusai, jellemzői
A mikrovezérlők világa
Egy harmadik generációs gép (az IBM 360) felépítése
A számítógép felépítése (funkcionális)
A programozás alapjai A számítógép számára a feladat meghatá- rozását programozásnak nevezzük. Ha a processzor utasításait használjuk a feladat meghatározásához,
Máté: Architektúrák12. előadás1 Operációs rendszer szintje Operating System Machine (OSM) Ezen a szinten programozóknak rendelkezésre állnak a felhasználói.
Máté: Architektúrák11. előadás1 Szegmens, szegmens csoport sz_név SEGMENT aling_type combine_type ’osztály’... szegmens sz_név ENDS sz_név a szegmens (szelet)
Számítógép architektúra Címzésmódok. 2007Címzésmódok2-21 Operandusok egy operandus hossza lehet: –1 byte –2 byte (szó) –4 byte egy operandus lehet: –az.
Számítógép architektúra
Mikrokontroller (MCU, mikroC)
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
Hernyák Zoltán Programozási Nyelvek II.
Máté: Architektúrák10. előadás1 Blokk ismétlés Nemcsak a blokk definíciójának kezdetét jelölik ki, hanem a kifejtést (hívást) is előírják. A program más.
Egy második generációs gép (az IBM 7094) felépítése
Egy első generációs gép (az IAS) felépítése
A Mikroprocesszor Harmadik rész.
CUDA C/C++ programozás
A központi egység Informatika alapjai Készítette: Senkeiné B. Judit.
Mikroprocesszor.
Funkciós blokkok A funkciós blokkok áttekintése Az alkalmazás előnyei.
Osztott adatbázisok.  Gyors ismétlés: teljes redukáló  Teljes redukáló költsége  Természetes összekapcsolások vetítése  Természetes összekapcsolások.
Ismerkedjünk tovább a számítógéppel
Barna Róbert KE GTK Informatika Tanszék Pénzügyi feladatok VBA támogatása 7. előadás.
C Programozási alapok.
Írja fel a tizes számrendszerbeli
IT ALAPFOGALMAK HARDVER.
HEFOP 3.3.1–P /1.0A projekt az Európai Unió társfinanszírozásával, az Európa terv keretében valósul meg. 1 Számítógép architektúrák dr. Kovács.
ifin811/ea1 C Programozás: Hardver alapok áttekintése
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
CISC-RISC processzor jellemzők Előadó: Thész Péter Programtervező informatikus hallgató Budapest,
Pentium 4 logikai lábkiosztása (3.45. ábra)
Máté: Architektúrák9. előadás1 Pentium 4 (2000. november) Felülről kompatibilis az I8088, …, Pentium III-mal , …, 42 → 55 M tranzisztor, 1,5 → 3,2.
Számítógépek felépítése 4. előadás ALU megvalósítása, vezérlő egység
1 Számítógépek felépítése 5. előadás a CPU gyorsítása, pipeline, cache Dr. Istenes Zoltán ELTE-TTK.
Informatikai gyakorlatok 11. évfolyam
A ROM ÉS A BIOS. K ÉSZÍTETTE R ELL P ATRIK A ROM A ROM egy olyan elektrotechnikai eszköz, amely csak olvasható adatok tárolására alkalmas memória. Tartalma.
1 A számítógépek felépítése jellemzői, működése. 2 A számítógép feladata Az adatok Bevitele Tárolása Feldolgozása Kivitele (eredmény megjelenítése)
1 A számítógépek tárolói. 2 Memória Memóriaszó  A tárak olyan egységei, melyek egyetlen művelettel kezelhetők.  A legrövidebb memóriaszó a byte (bájt)
Sz&p prof.
RAM (Random Access Memory)
Programozás C# -ban Elágazások.
Változók.
Számítógép architektúrák
A számítógép működésének alapjai
Cache példák 2019 (IMSC).
Előadás másolata:

Máté: Architektúrák10. előadás1 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.

Máté: Architektúrák10. előadás2 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.

Máté: Architektúrák10. előadás3 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.

Máté: Architektúrák10. előadás4 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.

Máté: Architektúrák10. előadás5 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.

Máté: Architektúrák10. előadás6 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.

Máté: Architektúrák10. előadás7 GRPGROUPADAT1,ADAT2 ADAT1SEGMENTpara public ’data’ Adw1111h... ADAT1ENDS ADAT2SEGMENTpara public ’data’ Wdw2222h... ADAT2ENDS

Máté: Architektúrák10. előadás8 codesegmentpara public ’code’ ASSUMECS:code, DS:GRP ASSUMESS:stack, ES:nothing... MOVSI,OFFSET W; SI  W offset-je: 0 ; az ADAT2 szegmens elejétől mért távolság MOVAX,[SI]; AX  1111h, ; de!!! LEASI, W; SI  effektív címe: ; a GRP szegmens csoport elejétől mért távolság MOVAX,[SI] ; AX  2222h....

Máté: Architektúrák10. előadás9 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: PUBLICszimb1[, 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: EXTRNszimb1: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.

Máté: Architektúrák10. előadás10 INCLUDE utasítás INCLUDEFile_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.

Máté: Architektúrák10. előadás11 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.

Máté: Architektúrák10. előadás12 Lista vezérlési utasítások TITLEcím A fordítás során keletkező lista minden oldalán megjelenik ez a cím. Egy modulon belül csak egyszer alkalmazható. SUBTITLEalcí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.

Máté: Architektúrák10. előadás13 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 ( 10  op1  255 ), op2 az egy sorba írható karakterek számát jelenti ( 60  op2  132 ). 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.

Máté: Architektúrák10. előadás14 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. NAMEné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.

Máté: Architektúrák10. előadás15 COMMENThatá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. %OUTszö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..RADIXszá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).

Máté: Architektúrák10. előadás16.LIST Engedé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.

Máté: Architektúrák10. előadás17.CREF Ké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).

Máté: Architektúrák10. előadás18 ENDkifejezé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.

Máté: Architektúrák10. előadás19 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.

Máté: Architektúrák10. előadás20 Memóriába írás Straté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.

Máté: Architektúrák10. előadás21 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 ( ábra). 64 (jelenleg csak 44) bites cím és 128 bites adat lehetséges.

Máté: Architektúrák10. előadás22 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.

Máté: Architektúrák10. előadás23 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.

Máté: Architektúrák10. előadás 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 á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ó.

Máté: Architektúrák10. előadás25 UltraSPARC II CPU mikroarchitektúrája A 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.

Máté: Architektúrák10. előadás26 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.

Máté: Architektúrák10. előadás27 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és 9.regiszterekbe írás

Máté: Architektúrák10. előadás28 picoJava II (SUN, á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.

Máté: Architektúrák10. előadás29 picoJava II CPU mikroarchitektúrája á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.

Máté: Architektúrák10. előadás30 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.

Máté: Architektúrák10. előadás31 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.

Máté: Architektúrák10. előadás32 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.

Máté: Architektúrák10. előadás33 Összehasonlítás Pentium IICISC gép egy CISC utasítás → több RISC mikroutasítás UltraSPARC IIRISC gép picoJava IIverem gép, sok memória hivatkozás több CISC utasítás → egy RISC mikroutasítás

Máté: Architektúrák10. előadás34 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.

Máté: Architektúrák10. előadás35 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 egyszerű utasításokkal nagy interpretert épít (siker), - Zilog 8000 bonyolult hardver utasításokat (kudarc).

Máté: Architektúrák10. előadás36 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.

Máté: Architektúrák10. előadás37 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!

Máté: Architektúrák10. előadás38 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

Máté: Architektúrák10. előadás39 Memória modellek Byte - 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.

Máté: Architektúrák10. előadás40 Regiszterek ISA-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,...

Máté: Architektúrák10. előadás41 Utasításkészlet LOAD, 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 : 24 bites (nem lineáris) címtartomány (16K darab 64 KB-s szegmens) : 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.

Máté: Architektúrák10. előadás42 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.

Máté: Architektúrák10. előadás43 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: Little Endian tárolási mód: az alacsonyabb címen van az alacsonyabb helyértékű bájt.

Máté: Architektúrák10. előadás44 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.

Máté: Architektúrák10. előadás45 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).

Máté: Architektúrák10. előadás46 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).

Máté: Architektúrák10. előadás47 Á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.

Máté: Architektúrák10. előadás48 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 KB cache).