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

Slides:



Advertisements
Hasonló előadás
Koordináták, függvények
Advertisements

A számítógép felépítése
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.
Feltételezett végrehajtás (Speculative Execution) ábra
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 6. előadás
Adatbázisrendszerek elméleti alapjai 5. előadás
Programozási alapismeretek 7. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 7. előadás2/  Sorozatszámítás.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny,
. . Egyszerű sín alapú számítógép (2.1. ábra)
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)
Máté: Architektúrák10. 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ák7. előadás1 A verem két felső szavának cseréje (ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny,
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (4.17. ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire.
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire előny, de.
Máté: Orvosi képfeldolgozás1. előadás1. Máté: Orvosi képfeldolgozás1. előadás2 A leképezés fizikai alapjai Fény, fénykép, mikroszkóp Röntgen sugárzás.
Mutatók, tömbök, függvények
C A C nyelv utasításai. Ismétlés Utasítások csoportosítása.
A verem működése fpga-n
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.
PIC processzor és környezete
CISC - RISC processzor jellemzők
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Fuzzy halmazok. 4. előadás2 3 4 Egy hagyományos halmazEgy Fuzzy halmaz.
A memóriák típusai, jellemzői
Egy egyszerű gép vázlata
A számítógép felépítése (funkcionális)
Operációs Rendszerek II.
Máté: Architektúrák7. előadás1 A verem két felső szavának cseréje (4.17. ábra) Megállapodás szerint TOS tartalmazza a verem tetején lévő szót! Ez többnyire.
1.3. Pascal program felépítése Az els ő program. Program ; … Begin … End. Program fej Deklarációs rész Végrehajtó rész.
1.4. Fordítás, szerkesztés, az objektumkönyvtár használata.
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.
Mikroprocesszor.
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.
Barna Róbert KE GTK Informatika Tanszék Pénzügyi feladatok VBA támogatása 8. előadás.
Írja fel a tizes számrendszerbeli
Máté: Architektúrák9. előadás1 Feltételes fordítás A fordító programok általában – így az assembler is – feltételes fordítási lehetőséget biztosít. Ez.
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
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.
Összeállította: Gergely János
CISC-RISC processzor jellemzők Előadó: Thész Péter Programtervező informatikus hallgató Budapest,
7. Multiplikatív műveletek:  : szorzás / : osztás
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.
Adatszerkezetek és algoritmusok 2008/ Algoritmus Az algoritmus szó eredete a középkori arab matematikáig nyúlik vissza, egy a i.sz. IX. században.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
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)
RISC – CISC RISC: Reduced Instruction Set Computer csökkentett utasításkészletű számítógép CISC: Complex Instruction Set Computer összetett utasításkészletű.
A számítógép működésének alapjai
Fejlett pipeline megoldások IMSC 2019
Pipeline példák (IMSC, 2019).
Cache példák 2019 (IMSC).
Előadás másolata:

Máté: Architektúrák9. előadás1 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 (mikroprogramozá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ák9. előadás2 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ák9. előadás3 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. Az utasítások általában két regiszteren hajtanak végre műveletet, az eredményt egy harmadik regiszterbe tárolják. CISC (Complex Instruction Set Computer, összetett utasításkészletű számítógép): IBM nagy gépek, VAX, …. Összetett, és lassabb utasítások.

Máté: Architektúrák9. előadás4 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! Miért nem nyert a RISC? Kompatibilitás + az elveket az Intel is részben átveszi (486-tól RISC mag).

Máté: Architektúrák9. előadás5 Pentium II CPU mikroarchitektúrája (4.46. ábra) Magas szintű csővezeték: Betöltő/Dekódoló: az utasításokat szétdarabolja, a RISC szerű mikroműveleteket ROB-ba teszi (ROB: ReOrder Buffer – mikroművelet tár terület). Elküldő/Végrehajtó: a ROB-ban lévő utasításokat – esetleg eltérő sorrendben – végrehajtja. Befejező: sorrendben befejezi az összes mikroművelet végrehajtását, frissíti a regisztereket. Betöltő/dekódoló egység Elküldő/Végrehajtó egység Befejező egység mikroművelet tár terület

Máté: Architektúrák9. előadás6 Utasítás hossz dekódoló IFU1 1. szintű I gyorsító tár gyorsító sor betöltő IFU0 Utasítás sorba állító IFU ID0 IFU0: ha a puffere üres, 32 bájtos gyorsító sort tölt be. IFU1: legfeljebb 30 utasítás határát megkeresi. IFU2: beteszi egy sorba az utasításokat. ID0: az egyszerű utasításokat kettő, a többit a harmadik dekódolja (mint Mic-4), mikroműveletenként: –műveleti kód, –két forrás és –egy cél regiszter. Betöltö/Dekódoló ábra

Máté: Architektúrák9. előadás7 ID1, statikus + dinamikus elágazás jövendölés (4 bites előzmény figyelés). Utasítás hossz dekódoló IFU1 1. szintű I gyorsító tár gyorsító sor betöltő IFU0 Utasítás sorba állító IFU2 Mikroművelet sorba állító (qeuer) ID1 Regiszter lefoglaló RAT Következő IP Dinamikus elágazás jövendölő Mikroművelet sorba állító (sequencer) Statikus elágazás jövendölő ID0 A mikroműveletek a ROB-ba mennek ROB ábra

Máté: Architektúrák9. előadás8 ROB (ReOrder Buffer): maximum 3 mikroműveletet fogad ciklusonként. RAT: 40 firkáló regiszter WAR és WAW feloldására Utasítás hossz dekódoló IFU1 1. szintű I gyorsító tár gyorsító sor betöltő IFU0 Utasítás sorba állító IFU2 Mikroművelet sorba állító (qeuer) ID1 Regiszter lefoglaló RAT Következő IP Dinamikus elágazás jövendölő Mikroművelet sorbaállító (sequencer) Statikus elágazás jövendölő ID0 A mikroműveletek a ROB-ba mennek ROB

Máté: Architektúrák9. előadás9 Foglalóhely 0. port 1. port 2. port 3. port 4. port Elküldő/Végrehajtó Ütemezi és végrehajtja a mikroműveleteket, feloldja a függőségeket és erőforrás igény ütközéseket. Egy ciklusban öt művelet is kiosztható. Foglalóhely: 20 elemű sor azoknak a műveleteknek, amelyeknek minden operandusa megvan. Portok: ezekhez kapcsolódnak a végrehajtó egységek. Ha több művelet osztható ki egy végrehajtó egységnek, akkor bonyolult algoritmus dönt, pl.: egy elágazás végrehajtása elsőbbséget élvez egy aritmetikai művelettel szemben. Portonként sorbaállás lehetséges.

Máté: Architektúrák9. előadás10 Elküldő/Végrehajtó (4.48. ábra) MMX végrehajtó egység Lebegőpontos végrehajtó egység Egész végrehajtó egység MMX végrehajtó egység Lebegőpontos végrehajtó egység Egész végrehajtó egység Betöltő egység Tároló egység Foglalóhely 0. port 1. port 2. port 3. port 4. port ROB Betöltések Tárolások

Máté: Architektúrák9. előadás11 Befejező (4.46. ábra) Ez küldi az eredményeket a megfelelő helyre – regiszterbe és az Elküldő/Végrehajtóba, ahol az eredményre várnak RAW függőség esetén. Az utasításokat a programban lévő sorrendben fejezi be, még akkor is, ha a végrehajtás sorrendje ettől eltért. A feltételesen végrehajtott utasítások eredményét eldobja, ha ezeket az utasításokat nem kellett volna végrehajtani. Betöltő/dekódoló egység Elküldő/Végrehajtó egység Befejező egység mikroművelet tár terület

Máté: Architektúrák9. előadás12 Pentium II CPU mikroarchitektúrája (4.46. ábra) 1. szintű I gyorsító tár 1. szintű D gyorsító tár Sín illesztő egység 2. Szintű gyorsító tár felé Lokális sín a PCI hídhoz Betöltő/dekódoló egység Elküldő/Végrehajtó egység Befejező egység mikroművelet tár terület

Máté: Architektúrák9. előadás13 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. PREFETCH utasítás feltételezett betöltésre, nem okoz gyorsító sor cserét gyorsító tár hiánykor. 2 bites elágazás jövendölő + statikus elágazás jövendölés.

Máté: Architektúrák9. előadás14 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, és dekódolja. Dekódoló: Néhány „irányító” bitet ad minden utasításhoz, ezzel a későbbi folyamatot gyorsítja. Maximum 12 elemű sort épít. A kiosztás sorrendben történik. Csoportosító logika 1. szintű I gyorsító tár Előre betöltő/Elküldő 2. szintű gyorsító tárKülső gyorsító tár egység Memória illesztő egység Fő memória Dekódoló

Máté: Architektúrák9. előadás15 Csoportosító logika: egyszerre maximum 4 (2 fix- és 2 lebegőpontos) utasítást tud kiosztani a sorból. A kiosztás és befejezés a sorrendtől eltérő lehet. Az egész és lebegőpontos egység tejesen független. Betöltő/Tároló: írás áteresztő. A gyorsító tár hiány miatti várakozás elkerülésére külön sor a függőben lévő LOAD -ok és STORE -ok számára. ALU Egész regiszterek Egész végrehajtó ALUFP ALU FP regiszterek Lebegőpontos egység FP ALU Grafikai egység Betöltő sor 1. szintű D gyorsító Betöltő/Tároló Tároló sor Csoportosító logika

Máté: Architektúrák9. előadás16 Az UltraSPARC II mikroarchitektúrája (4.49. ábra) ALU Egész regiszterek Egész végrehajtó ALUFP ALU FP regiszterek Lebegőpontos egység FP ALU Grafikai egység Betöltő sor 1. szintű D gyorsító tár Betöltő/Tároló Tároló sor Dekódoló 1. szintű I gyorsító tár Előre betöltő/Elküldő 2. szintű gyorsítóKülső gyorsító egység Memória illesztő egység Fő memória Csoportosító logika

Máté: Architektúrák9. előadás17 1.max. 4 utasítás az I-gyorsítóból, 2.irányító bitek az utasításokhoz, 3.kioszt annyi utasítást, ahányat tud 8.csapda kezelés 9.regiszterekbe írás Egész csővezeték Betölt Dekódol Csoportosít N3 Gyorsító tár Végrehajt N1 N2 X1 Regiszter X2 X3 FP/Grafikus csővezeték ír 9 szakaszos csővezeték (4.50. ábra)

Máté: Architektúrák9. előadás szakasz –a fix pontos utasítások 1 ciklus alatt végrehajtódnak + 3 üres szakasz, –LOAD és STORE még dolgozik a gyorsító tár szakaszban + 2 üres szakasz, –a lebegőpontos utasítások a regiszterek eléréséhez általában 1 szakaszt igényelnek + 3-at a végrehajtáshoz. Egész csővezeték Betölt Dekódol Csoportosít N3 Gyorsító tár Végrehajt N1 N2 X1 Regiszter X2 X3 FP/Grafikus csővezeték ír

Máté: Architektúrák9. előadás19 picoJava II CPU mikroarchitektúrája (4.51. ábra) Nem szuperskaláris: a mikroműveleteket a kiosztás sorrendjében hajtja végre és fejezi be (a fő cél az volt, hogy olcsó legyen). Regiszter oszlop: 64 db 32 bites regiszter, a verem tetején lévő szavakat tartalmazza. 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.

Máté: Architektúrák9. előadás20 A regiszter oszlop közvetlenül, a D gyorsító egy ciklus késleltetéssel érhető el. picoJava II CPU mikro-architektúrája (4.51. ábra) 32 Végrehajtást vezérlő egység Előre betöltő, dekódoló, összevonó egység Egész és lebegőpontos egység 0-16 KB I gyorsító tár 0-16 KB D gyorsító tár Memória és B/K sín illesztő egység 64 db 32 bites regiszter 32 3x32 2x32 Regiszter oszlop

Máté: Architektúrák9. előadás21 picoJava II csővezetéke (4.52. ábra) Nem szuperskaláris, a mikroműveleteket a kiosztás sorrendjében hajtja végre. 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ő a 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.Ha kell, a D gyorsítóba írás. 6.Eredmények verembe írása, ha kell. Betöltés az I gyorsítótárból Dekódolás, összevonás Operandusok a veremből Utasítás végrehajtás D gyorsítóba írás Eredmények verembe írása

Máté: Architektúrák9. előadás22 Utasítás összevonás, pl.: n=k+m; (4.53. ábra) m k k n m k n m k k+m m A dekódoló egyetlen mikroműveletté vonja össze. k k+m m k n m k k n m k n m SP→ Kezdetben ILOAD k után ILOAD m után IADD után ISTORE n után Kezdetben Összevont utasítás után

Máté: Architektúrák9. előadás23 Utasítás csoportok (4.54. ábra) CsoportLeírásPélda NFNem összevonható utasításokGOTO LVBetesz egy szót a verembeILOAD MEMEgy szót a veremből a memóriába teszISTORE BG1Egy verem operandusú utasításokIFEQ BG2Két verem operandusú utasításokIF_CMPEQ OPKét operandusú utasítások eredménnyelIADD JVM-nek több utasítása van, mint IJVM-nek! Több utasítás tartozik egy csoportba.

Máté: Architektúrák9. előadás24 Utasítások összevonása A dekódoló figyeli, 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. 74 bites mikroműveleteket oszt ki, ezek legtöbbje egy kódot és három regisztert tartalmaz, és egy ciklusban végrehajtható. Utasítás sorozatPélda LV OPMEMILOAD, ILOAD, IADD, ISTORE LV OPILOAD, ILOAD, IADD LV BG2ILOAD, ILOAD, IF_CMPEQ LVBG1ILOAD, IFEQ LVBG2ILOAD, IF_CMPEQ LVMEMILOAD, ISTORE OPMEMIADD, ISTORE

Máté: Architektúrák9. előadás25 Elágazás jövendölés: nem lesz elágazás! Inkább olcsó, mint bonyolult hardver!

Máté: Architektúrák9. előadás26 Ö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ák9. előadás27 Makró és blokk ismétlés Makró definíció: M_névMACRO[fpar1[,fpar2...]] ; makró fej (kezdet)...; makró törzs ENDM; makró vége fpar1,fpar2... formális paraméterek vagy egyszerűen paraméterek. A makró definíció nem lesz része a lefordított programnak, csupán azt határozza meg, hogy később mit kell a makró hívás helyére beírni (makró kifejtés, helyettesítés). A makró törzsön belül előfordulhat makró hívás és másik makró definíció is.

Máté: Architektúrák9. előadás28 Makró hívás: M_név[apar1[,apar2...]] apar1,apar2... aktuális paraméterek/argumentumok. A műveleti kód helyére írt M_név hatására a korábban megadott definíció szerint megtörténik a makró helyettesítés, más néven makró kifejtés. Ez a makró törzs bemásolását jelenti, miközben az összes paraméter összes előfordulása a megfelelő argumentummal helyettesítődik. A helyettesítés szövegesen történik, azaz minden paraméter – mint szöveg – helyére a megfelelő argumentum – mint szöveg – kerül. A helyettesítés nem rekurzív. Makró hívás argumentuma sem lehet makró hívás. Az argumentumnak megfelelő formális paraméternek lehet olyan előfordulása, amely a későbbiek során makró hívást eredményez.

Máté: Architektúrák9. előadás29 Dupla szavas összeadás: (DX:AX)  (DX:AX)+(CX:BX) Eljárás deklaráció: EDADDPROCNEAR ADDAX,BX ADCDX,CX RET EDADDENDP Makró definíció: MDADDMACRO ADDAX,BX ADCDX,CX ENDM

Máté: Architektúrák9. előadás30 Ha a programban valahol dupla szavas összeadást kell végezzünk, akkor hívnunk kell az eljárást illetve a makrót: Eljárás hívás: CALLEDADD Makró hívás: MDADD Futás közben felhívásra kerül az EDADD eljárás Fordítás közben megtörténik a makró helyettesítés: ADDAX,BX ADCDX,CX Futás közben ez a két utasítás kerül csak végrehajtásra.

Máté: Architektúrák9. előadás31 Látható, hogy eljárás esetén kettővel több utasítást kell végrehajtanunk, mint makró esetében ( CALL EDADD és RET ). Még nagyobb különbséget tapasztalunk, ha (CX:BX) helyett paraméterként kívánjuk megadni az egyik összeadandót:

Máté: Architektúrák9. előadás32 Eljárás deklaráció: EDADD2PROCNEAR PUSHBP MOVBP,SP ADDAX,4[BP] ADCDX,6[BP] POPBP RET4 EDADDENDP Ha SI az összeadandónk címét tartalmazza, akkor a felhívás: PUSH2[SI] PUSH[SI] CALLEDADD2 Futás közben végrehajtásra kerül a paraméter átadás, az eljárás hívás, az eljárás: összesen 9 utasítás

Máté: Architektúrák9. előadás33 Most sem része a makró definíció a lefordított programnak. Makró definíció: MDADD2MACROP IFB  P  ADDAX,BX ADCDX,CX ELSE ADDAX,P ADCDX,P+2 ENDIF ENDM Makró hívás: MDADD2[SI] Fordítás közben a hívás az ADDAX,[SI] ADCDX,[SI]+2 utasításokra cserélődik, futás közben csak ez a két utasítás kerül végrehajtásra. MDADD2 hatása: ADDAX,BX ADCDX,CX

Máté: Architektúrák9. előadás34 Paraméter másutt is előfordulhat a makró törzsben, nemcsak az operandus részen, pl.: PLmacrop1,P2 movax,p1 P2p1 endm PLAdat, INC hatása: movax,Adat INCAdat

Máté: Architektúrák9. előadás35 A &, %, ! karakterek továbbá a <> és ;; speciális szerepet töltenek be makró kifejtéskor. & (helyettesítés operátor): ha a paraméter – helyettesített – értéke része egy szónak; idézeten belüli helyettesítés: errgenmacroy, x err&ydb’Error &y: &x’ endm errgen5, hatása: err5db’Error 5: Unreadable disk’

Máté: Architektúrák9. előadás36 <> (literál szöveg operátor): Ha aktuális paraméter szóközt vagy, -t is tartalmaz. Az előző példa eredménye <> nélkül: errgen5, Unreadable disk kifejtve: err5db’Error 5: Unreadable’ adatmacrop dbp endm adat adat’abc’,13,10,0 kifejtve: db’abc’,13,10,0 db’abc’

Máté: Architektúrák9. előadás37 ! (literál karakter operátor): Az utána következő karaktert makró kifejtéskor közönséges karakterként kell kezelni. Pl.: a korábbi errgen makró errgen103, 255> hívásának hatása: err103db’Error 103: Expression > 255’ de errgen103, 255> hívásának hatása: err103db’Error 103: Expression ’

Máté: Architektúrák9. előadás38 % (kifejezés operátor): Az utána lévő argumentum (kifejezés is lehet) értéke – és nem a szövege – lesz az aktuális paraméter. Pl.: sym1equ100 sym2equ200 txtequ’Ez egy szöveg’ kifmacroexp, val db”&exp = &val” endm kif, %(sym1+sym2) kiftxt, %txt db”sym1+sym2 = 300” db”txt = ’Ez egy szöveg’”

Máté: Architektúrák9. előadás39 Az alábbi példa a % használatán kívül a makró törzsön belüli makró hívást is bemutatja: s=0 ErrMsgMACROtext s=s+1 Msg%s,text ENDM MsgMACROsz,str msg&szdbstr ENDM

Máté: Architektúrák9. előadás40 s=0 ErrMsgMACROtext s=s+1 Msg%s,text ENDM MsgMACROsz,str msg&szdbstr ENDM ErrMsg ’syntax error’ makró hívás hatására bemásolásra kerül (.LALL hatására látszik a listán) az s=s+1 Msg%s,’syntax error’ szöveg. s értéke itt 1 -re változik. Újabb makró hívás ( Msg ). A %s paraméter az értékére ( 1 ) cserélődik, majd kifejtésre kerül ez a makró is, ebből kialakul: msg1db’syntax error ’

Máté: Architektúrák9. előadás41 s=0 ErrMsgMACROtext s=s+1 Msg%s,text ENDM MsgMACROsz,str msg&szdbstr ENDM Egy újabb hívás és hatása: ErrMsg ’invalid operand’ msg2db’invalid operand’

Máté: Architektúrák9. előadás42 ;; (makró kommentár): A makró definíció megjegyzéseinek kezdetét jelzi. A ;; utáni megjegyzés a makró kifejtés listájában nem jelenik meg.

Máté: Architektúrák9. előadás43 LOCALc1[,c2...] c1, c2,... minden makró híváskor más, ??xxxx alakú szimbólumra cserélődik, ahol xxxx a makró generátor által meghatározott hexadecimális szám. A LOCAL operátort közvetlenül a makró fej utáni sorba kell írni. KOPOGmacro n LOCAL ujra movcx,n ujra:KOPP loopujra endm Ha a programban többször hívnánk a KOPOG makrót, akkor a LOCAL operátor nélkül az ujra címke többször lenne definiálva.

Máté: Architektúrák9. előadás44 Makró definíció belsejében lehet másik makró definíció is. A belső makró definíció csak a külső makró meghívása után jut érvényre, válik láthatóvá. Pl.: shiftsmacroOPNAME; makrót ; definiáló makró OPNAME&SMACROOPERANDUS,N movcl, N OPNAMEOPERANDUS,cl ENDM endm

Máté: Architektúrák9. előadás45 shiftsmacroOPNAME; makrót ; definiáló makró OPNAME&SMACROOPERANDUS,N movcl, N OPNAMEOPERANDUS,cl ENDM endm Ha ezt a makrót felhívjuk pl.: shifts ROR akkor a RORSMACROOPERANDUS,N movcl, N ROROPERANDUS,cl ENDM makró definíció generálódik.

Máté: Architektúrák9. előadás46 RORSMACROOPERANDUS,N movcl, N ROROPERANDUS,cl ENDM Mostantól meghívható a RORS makró is, pl.: RORSAX, 5 aminek a hatása: movcl, 5 RORAX,cl

Máté: Architektúrák9. előadás47 Makró definíció belsejében meghívható az éppen definiálás alatt lévő makró is (a makró hívás ezáltal rekurzívvá válik). PUSHALLmacroreg1,reg2,reg3,reg4,reg5 IFNB ;; ha a paraméter nem üres pushreg1;; az első regiszter mentése PUSHALLreg2,reg3,reg4,reg5 ;; rekurzió ENDIF ENDM Most pl. a PUSHALLax, bx, cx makró hívás hatása: pushax pushbx pushcx

Máté: Architektúrák9. előadás48 PUSHALLmacroreg1,reg2,reg3,reg4,reg5 IFNB ;; ha a paraméter nem üres pushreg1;; az első regiszter mentése PUSHALLreg2,reg3,reg4,reg5 ;; rekurzió ENDIF ENDM PUSHALLax, bx, cx makró hívás hatása: pushax PUSHALLbx, cx az újabb hívás hatása: pushbx PUSHALLcx az újabb hívás hatása: pushcx PUSHALL ennek hatására nem generálódik semmi.

Máté: Architektúrák9. előadás49 FL_CALLELJ=0 CALLELJmacro ;; Eljárást beépítő és felhívó makró LOCALFIRST;; nem lenne fontos IFFL_CALLELJ;; a 2. hívástól igaz callElj;; elég felhívni az eljárást EXITM;; makró helyettesítés vége ENDIF FL_CALLELJ=1;; csak az első híváskor JMPFIRST;; jut érvényre Eljproc;; eljárás deklaráció... ret Eljendp FIRST:callElj;; az eljárás felhívása endm

Máté: Architektúrák9. előadás50 Az első CALLELJ hívás hatására az FL_CALLELJ=1 JMP??0000 Eljproc... ret Eljendp ??0000:callElj utasítások generálódnak (??0000 a FIRST -ből keletkezett).

Máté: Architektúrák9. előadás51 A további CALLELJ hívások esetén csak egyetlen utasítás, a callElj utasítás generálódik. A megoldás előnye, hogy az eljárás csak akkor része a programnak, ha a program tartalmazza az eljárás felhívását is, és mégsem kell törődjünk azzal, hogy hozzá kell-e szerkesztenünk a programhoz vagy se.

Máté: Architektúrák9. előadás52 Megváltoztathatunk egy makró definíciót azáltal, hogy újra definiáljuk. Makró definíción belül előfordulhat másik makró definíció. E két lehetőség kombinációjából adódik, hogy a makró definíción belül megadhatunk ugyanarra a makró névre egy másik definíciót, ezáltal készíthető olyan makró, amely „átdefiniálja” önmagát. Az önmagát átdefiniáló makrók esetében a belső és külső definíciót lezáró ENDM utasítások között egyetlen utasítás sem szerepelhet – még kommentár sem!

Máté: Architektúrák9. előadás53 Önmagát „átdefiniáló” makró (az előző feladat másik megoldása): CALLELJ2macro; külső makró definíció jmpFIRST Elj2proc; eljárás deklaráció... ret Elj2endp FIRST:callElj2; eljárás hívás CALLELJ2MACRO; belső makró definíció callElj2; eljárás hívás ENDM; belső makró definíció vége endm; külső makró definíció vége

Máté: Architektúrák9. előadás54 CALLELJ2 első hívásakor a kifejtés eredménye: jmpFIRST Elj2proc; eljárás deklaráció... ret Elj2endp FIRST:callElj2; eljárás hívás CALLELJ2MACRO; belső makró definíció callElj2; eljárás hívás ENDM ; belső makró definíció vége

Máté: Architektúrák9. előadás55 A kifejtés CALLELJ2 újabb definícióját tartalmazza, ez felülírja az eredeti definíciót, és a továbbiak során ez a definíció érvényes. Ez alapján a későbbi CALLELJ2 hívások esetén callElj2 a kifejtés eredménye. Megjegyezzük, hogy most is szerencsésebb lett volna a FIRST címkét lokálissá tenni. Igaz, hogy csak egyszer generálódik, de így a CALLELJ2 makró használójának tudnia kell, hogy a FIRST címke már „foglalt”!

Máté: Architektúrák9. előadás56 Ha egy M_név makró definíciójára nincs szükség a továbbiak során, akkor a PURGEM_név pszeudo utasítással kitörölhetjük.

Máté: Architektúrák9. előadás57 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 részéről nem is hívhatók. Blokk ismétlés kifejezés -szer: REPTkifejezés...; ez a rész ismétlődik ENDM

Máté: Architektúrák9. előadás58 Pl. a korábban ismertetett kopogást így is megoldhattuk volna: REPTN KOPP ENDM Ha pl. N=3, akkor ennek a hatására a KOPP makró hívások generálódnak. Megjegyzés: Most N nem lehet változó – fordítási időben ismert kell legyen az értéke!

Máté: Architektúrák9. előadás59 Blokk ismétlés argumentum lista szerint: IRPpar,...; ez a rész többször bemásolásra...; kerül úgy, hogy par rendre...; felveszi az arg1,arg2... értéket ENDM IRPx, dbx ENDM db1 db2 db3

Máté: Architektúrák9. előadás60 Blokk ismétlés string alapján: IRPCpar,string...; ez a rész kerül többször bemásolásra úgy,...; hogy par rendre felveszi...; a string karaktereit ENDM Ezt a string -et nem kell idézőjelek közé tenni (újabb ismétlés jelentene). Ha a string -en belül pl. szóköz vagy, is előfordul, akkor <> jelek közé kell tenni. Az előző feladatot így is megoldhattuk volna: IRPCx,123 dbx ENDM

Máté: Architektúrák9. előadás61 Másik példa: IRPCx,ABCDEFGHIJKLMNOPQRSTUVWXYZ db’&x’; nagy betűk db’&x’+20h; kis betűk ENDM Fontos az & jel, nélküle x nem paraméter, hanem string lenne!

Máté: Architektúrák9. előadás62 Makró definíció tartalmazhat blokk ismétlést, és blokk ismétlés is tartalmazhat makró definíciót vagy makró hívást. Pl.: A bit léptető és forgató utasítás kiterjesztésnek egy újabb megoldása: ; makrót definiáló blokkismétlés IRPOP, OP&S MACROOPERANDUS,N movcl, N OPOPERANDUS,cl ENDM Ennek a megoldásnak előnye, hogy nem kell külön meghívnunk a külső makrót az egyes utasításokkal, mert ezt elvégzi helyettünk az IRP blokk ismétlés.

Máté: Architektúrák9. előadás63 Feladatok Mit nevezünk alap blokknak? Mit nevezünk emelésnek? Mit nevezünk feltételezett végrehajtásnak? Milyen mellékhatásai lehetnek a feltételezett végrehajtásnak? Mi a SPECULATIVE_LOAD lényege? Mi a mérgezés bit? Hogy működik a halmaz kezelésű gyorsítótár? Mit jelent az írás áteresztés (write through)? Mit jelent a késleltetett írás? Mit jelent az írás allokálás?

Máté: Architektúrák9. előadás64 Feladatok Minek a rövidítése a RISC? Minek a rövidítése a CISC? Mi jellemzi a RISC gépeket? Jellemezze a Pentium II processzort! Jellemezze a Pentium II és a memória sín kapcsolatát! Jellemezze a Pentium II mikroarchitektúráját! Mi a feladata a Betöltő/dekódoló egységnek? Mi a feladata az Elküldő/végrehajtó egységnek? Mi a feladata a Befejező egységnek?

Máté: Architektúrák9. előadás65 Feladatok Jellemezze az UltraSPARC II processzort! Hogy valósul meg a memória címzés UltraSPARC II esetén! Jellemezze az UltraSPARC II mikroarchitektúráját! Mi az UPA feladata? Mi az UDB II feladata? Milyen az UltraSPARC II elágazás jövendölése? Mi a feladata az Előre betöltő/Elküldő egységnek? Mi a feladata a Dekódoló egységnek? Mi a feladata a Betöltő/Tároló egységnek? Jellemezze az UltraSPARC II csővezetékét!

Máté: Architektúrák9. előadás66 Feladatok Jellemezze a PicoJava II processzort! Milyen szervezésű gyorsítótára van a PicoJava II- nek? Jellemezze a PicoJava II mikroarchitektúráját! Mi regiszter oszlop? Jellemezze a PicoJava II csővezetékét! Hasonlítsa össze a Pentium II, az UltraSPARC II és a PicoJava II mikroarchitektúráját!

Máté: Architektúrák9. előadás67 Feladatok Mi a makro definíció? Mi a makró fej? Mi a makró törzs? Mi a makró hívás? Mi a makró kifejtés? Mi a (formális) paraméter? Mi az aktuális paraméter (argumentum)? Mely karakterek játszanak speciális szerepet makró kifejtéskor? Melyik karakternek mi a szerepe? Adjon példát rá! Mi a szerepe a LOCAL pszeudó utasításnak?

Máté: Architektúrák9. előadás68 Feladatok Adjon példát makró hívást tartalmazó makró definícióra! Adjon példát makró definíciót tartalmazó makró definícióra! Mit kell tudni azokról a makró definíciókról, amelyek egy másik makró definícióban találhatók? Adjon példát olyan makró definícióra, amely tartalmazza saját hívását! Adjon példát olyan makró definícióra, amely tartalmazza saját átdefiniálását! Mit kell tudni az önmaguk átdefiniálását tartalmazó makró definíciókról?

Máté: Architektúrák9. előadás69 Feladatok Mi a hatása a PURGE pszeudó utasításnak? Mit jelent a blokk ismétlés? Milyen blokk ismétlési lehetőségeket ismer? Mi a REPT pszeudó utasítás általános alakja? Mi az IRP pszeudó utasítás általános alakja? Mi az IRPC pszeudó utasítás általános alakja? Mondjon példát makrót definiáló blokkismétlésre!