780 likes | 884 Views
Memória modellek 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 (ez a trend, mert hardver szinten egyszerűbb és gyorsabb). A hardver segítséget nyújthat:
E N D
Memória modellek Memória szemantika:STOREA -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 (ez a trend, mert hardver szinten egyszerűbb és gyorsabb). A hardver segítséget nyújthat: • SYNC utasítás: befejeztet minden megkezdett memória műveletet, • függőség esetén a hardver vár. 9. előadás
Regiszterek ISA-szintena mikroszint nem minden regisztere látszik(TOS, MAR), de van közösis (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): az eredmény negatív, nulla, ... mód, prioritásszint, megszakítás-állapot, ... 9. előadás
Utasításkészlet LOAD, STORE, MOVE, aritmetikai, logikai, feltétlen, feltételes elágazó utasítások, … 9. előadás
Pentium 4 Nagyon sok előd (kompatibilitás!), a fontosabbak: • 4004: 4 bites, • 8086, 8088: 16bites, 8 bites adat sín. • 80286: 24 bites (nem lineáris) címtartomány (16 K darab 64 KB-os 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. 9. előadás
A Pentium 4üzemmódjai real (valós): az összes 8088 utáni fejlesztést kikapcsolja (valódi 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 WINDOWS-ból indítjuk az MS-DOS-t, és ha abban hiba történik, akkor nem fagy le, hanem visszaadja a vezérlést a WINDOWS-nak). védett: valódi Pentium 4. 4 védelmi szint (PSW): 0: kernelmód (operációs r.), 1, 2: ritkán használt, 3: felhasználói mód. 9. előadás
Memóriaszervezés: • 16 Kdb szegmens lehetséges, de a WINDOWS-ok és UNIX is csak 1 szegmenst támogatnak, és ennek is 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. 9. előadás
32 16 AH BH CH DH CL AL BL DL 8 AX BX CX DX 8 Accumulator Base index Count Data EAX EBX ECX EDX Regiszterek (5.3. ábra): • (majdnem) általános regiszterek: Ezek 8 és 16 bites részei önálló regiszterként használhatók. 9. előadás
Regiszterek (5.3. ábra): • ESI, EDI (mutatók tárolására, szöveg kezelésre), • EBP (keretmutató, verem kezelésre), • ESP (verem mutató), • EIP (utasítás számláló), • EFLAGS (PSW), • CS, SS, DS, ES, FS, GS (16 bites regiszterek. A kompatibilitást biztosítják 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). 9. előadás
UltraSPARC III SPARC(1987) még 32, a Version 9 már 64bitesarchitektú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: • 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). 9. előadás
Általános regiszterek • R0-R7 (G0-G7) Globális változók: minden eljárás használhatja, G0 huzalozott 0, minden tárolás eredménytelen. • R8-R15 (O0-O7,): Kimenő paraméterek,de R14 (O6) =SP: verem mutatóO7 csak ideiglenes tárolásra használható. • R16-R23 (L0-L7) Lokális regiszterek • R24-R31 (I0-I7) Bejövő paraméterek, de R30 (I6) = FP az aktuális veremkeret mutatója, R31: visszatérési cím. 9. előadás
Globális Globális CWP = 6 CWP = 7 Kimenő Kimenő Átlapolás SP R14=SP R30=FP Lokális Lokális Korábbi Bemenő Bemenő Korábbi R30=FP CWP (Current WindowPointer, 5.5. ábra) mutatjaaz aktuális regiszterablakot (több regiszter készlet létezik, de mindig csak egy látszik). Ha kifogya regiszter készlet, memóriába mentés, … O L I O L R31=visszatérési cím I R31=visszatérési cím 9. előadá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 is regiszterbe kerül. 9. előadás
Vannak lapkán kívüli bővítési lehetőségek. Van nagyobb (8052) és programozható (8751 és 8752) „rokona” (ROM helyett EPROM). 8 regiszter: R0, … , R7. A regiszterek a memóriában vannak. 4 regiszter készlete van, de egyszerre csak egy használható. 4095 0 5.6. ábra. A 8051 memória szervezése Külön címtartományú program és adat memória. 127 48 32 0 9. előadás
5.6. ábra. A 8051 memória szervezése, fő regiszterei PSW: Carry, Auxiliary carry, RegisterS, Overflow, Parity A PSW regiszter RS mezeje mondja meg, hogy melyik regiszterkészlet az aktuális. Bit-címezhető memória (32-47. bájt): címzésük: 0-127 Bit utasítások: beállítás, törlés, ÉS, VAGY, tesztelés. 127 48 32 0 9. előadás
IE (Interrupt Enable): EA= 1: nincs tiltva a megszakítás, 0: mind tiltva van, ES=1: megszakítás engedélyezve a soros vonalon, 0: tiltva E0-2=1: a 0-2 időzítő csatorna engedélyezve, 0: tiltva.Az engedélyezett számlálók egyszerre futhatnak, és ezek megszakítást válthatnak ki. X0-1=1: külső eszköz megszakítás engedélyezve, 0: tiltva IP (Interrupt Priority): 0 (alacsony), 1 (magas). Az alacsonyabb szintű megszakítást megszakíthatja egy magasabb szintű. 9. előadás
TCON: a 0. és 1. időzítőt vezérli (ezek a fő időzítők). O0-1: beáll az időzítő túlcsordulásakor.R0-1: ezzel ki- és bekapcsolható az időzítő futása.A többi bit az időzítő él- vagy szintvezérlésével kapcsolatos. TMOD: a fő időzítők üzemmódját határozza meg 8, 13 vagy 16 bites,valódi időzítő vagy számláló,hardver jelek szintje. 9. előadás
Az eddig említett és még néhány speciális regiszter (ACC, B/K portok, …) a 128-255 címtartományban vannak. Pl. ACC a 240-en. A 8052 valódi memóriát tartalmaz a 128-255 tartományban, a speciális regiszterek címe átfed a memóriával.– Direkt címzéssel a speciális regisztereket,– Indirekt címzéssel a RAM-ot érhetjük el. 9. előadás
Címzési módszerek 3, 2, 1, 0 címes utasítások. Címzési módok: • közvetlen operandus, • direkt címzés, • regiszter címzés • regiszter-indirekt címzés, • indexelt címzés, • bázisindex címzés, • verem címzés. 9. előadás
Verem címzés Fordított Lengyel Jelölés (Postfix Polish Notation - Lukasiewicz) Postfix jelölés: a kifejezéseket olyan formában adjuk meg, hogy az első operandus után a másodikat, majd ezután adjuk meg a műveleti jelet: infix: x + y, postfix: xy +. Előnyei: nem kell zárójel, sem precedencia szabályok, jól alkalmazható veremcímzés esetén. 9. előadás
A * ( B + C ) Dijkstra algoritmusa Infix jelölés konvertálása postfix-re (5.21, 22. ábra): • az infix elemek egy váltóhoz (switch) érkeznek - a változók és konstansok Kaliforniába mennek (), • a többi esetben a verem tetejétől függően (5.22. ábra): váltó • a kocsi Texas felé megy (1: ), • a verem teteje Kaliforniába megy (2: ), • a kocsi eltűnik a verem tetejével együtt (3: ), • vége az algoritmusnak (4: ), • hibás az infix formula (5: ?). 9. előadás
A * ( B + C ) váltó Minden változó és konstans menjen Kaliforniába (), a többi esetben a döntési tábla szerint járjunk el (5.21. ábra): A verem teteje A döntési tábla tartalmazza a prioritási szabályokat. 9. előadás
▼ A*(B+C) A ▼ *(B+C) A ▼ (B+C) * A ▼ B+C) ( * AB ▼ +C) ( * A verem teteje 9. előadás
AB ▼ C) + ( * ABC ▼ ) + ( * ABC+▼ ) ( * A verem teteje ABC+▼ * ABC+*▼ 9. előadás
Fordított lengyel jelölésű formulák kiértékelése Pl. (5.24. ábra): (8 + 2 * 5)/(1 + 3 * 2 – 4) // infix8 2 5 * + 1 3 2 * + 4 – / // postfix Olvassuk a formulát balról jobbra! Ha a következő jel • operandus: rakjuk a verembe, • műveleti jel: hajtsuk végre a műveletet (a verem tetején van a jobb, alatta a bal operandus!). 9. előadás
(8 + 2 * 5)/(1 + 3 * 2 – 4) // infix 9. előadás
Az ISA szint tervezési szempontjai • Hosszú távú: később is jó legyen az architektúra, Rövid távú: addig is piacon kell maradni. • Rövidebb utasítások: kevesebb helyet foglalnak el, gyorsabban betölthetők. Hosszabb utasítások: több lehetséges műveleti kód, nagyobb memória címezhető. • Bájt címzés: hatékonyabb szöveg feldolgozásnál, Szó címzés: nagyobb memória címezhető. • … 9. előadás
A műveleti kód kiterjesztése kbites műveleti kód esetén 2k különböző utasítás lehet,n bites címrésznél 2n memória címezhető, fix utasítás hossz esetén egyik csak a másik rovására növelhető (5.12. ábra). Lehetőségek: • fix utasításhossz: rövidebb kód mellett hosszabb operandus rész, • minimális átlagos utasításhossz: a gyakori kódok rövidek, a ritkán használtak hosszabbak. 9. előadás
A műveleti kód kiterjesztése (5.13. ábra) Az 1111 kódot nem használtuk ki 3 címes utasításnak (menekülő kód), és ez lehetővé teszi, hogy további – igaz, nem 3 címes – utasításokat adjunk meg.1111 1110 és 1111 1111 is menekülő kód. 9. előadás
A műveleti kód kiterjesztése 1111 1111 1111 is menekülő kód. 9. előadás
Ortogonalitási elv: Jó architektúrában a műveleti kódok és a címzési módszerek (majdnem) szabadon párosíthatók. Három címes elképzelés (5.25. ábra): 1. típus: aritmetikai utasítások. 2. típus: közvetlen adat megadás, index módú LOAD és STORE utasítás. 3. típus: elágazó, eljárás hívó utasítások, LOAD és STORE, ezek R0-t használnák. 9. előadás
Két címes elképzelés (5.26. ábra). A mód 3 bitje lehetővé teszi a közvetlen operandus, direkt, regiszter, regiszter indirekt, index és verem címzési módokat Két további mód bevezetésére is lehetőség van. 9. előadás
Pentium 4utasításformái (5.14. ábra) Több generáción keresztül kialakult architektúra. Csak egy operandus lehet memória cím. Prefix, escape (bővítésre), MOD, SIB (Scale Index Base) bájt bit bit bit Melyik operandus a forrás? bájt/szó 9. előadás
bit SIB(5.28. ábra): jó, de megéri? Legyen i az EAX regiszterben SIB módú hivatkozás:M[4*EAX+EBP+8] Verem keret 9. előadás
Címzési módok (5.27. ábra): nagyon szabálytalan. Baj: nem minden utasításban használható minden mód, nem minden regiszter használható minden módban (nincs EBP indirekt, ESP relatív címzés). 32 bites címzési módok: 9. előadás
UltraSPARC utasításformái (5.15. ábra) 32 bites egyszerű utasítások. Aritmetikai utasítások: 1 cél és 2 forrás regiszter vagy 1 cél, 1 forrás regiszter és 1 közvetlen konstans. LOAD, STORE (csak ezek használják a memóriát): a cím két regiszter összege vagy egy regiszter + 13 bites eltolás. Processzorokat szinkronizáló utasítás. 9. előadás
32 bites közvetlen adat megadása: SETHI – megad 22 bitet, a következő utasítás a maradék 10 bitet. 3 Az ugrások PC-relatívok, szót (4-gyel osztható bájt címet) címeznek. Jósló utasításokhoz 3 bitet elcsíptek. Az A bit az eltolás rést akadályozza meg bizonyos feltételek esetén. Eljárás hívás: 30 bites PC-relatív (szó) cím 9. előadás
UltraSPARC címzési módjai Memóriára hivatkozó utasítások: betöltő, tároló, multiprocesszor szinkronizáló index + 13 bit eltolás (1b), bázis-index (1a). A többi utasítás általában 5 bites regiszter címzést használ 9. előadás
A 8051 utasításformátumai • Implicit regiszter általában ACC, … • Regiszter és ACC tartalmán végzett művelet, mozgatás, … • Operandus: közvetlen, eltolás, bitsorszám • Ugrás, szubrutin (eljárás) hívás • Ugrás, szubrutin (eljárás) hívás • Pl. közvetlen operandus memóriába töltése, … 9. előadás
A 8051 címzési módjai Implicit: ACC Regiszter: akár forrás, akár cél operandus lehet Direkt: 8 bites memóriacím Regiszter-indirekt: 8 bites memóriacím, indirekt címzés a 16 bites DPTR-rel Közvetlen operandus: általában 8 bites, de 11 ill. 16 bites abszolút cím ugráshoz, eljárás híváshoz 9. előadás
Összefoglaló:5.29. ábra. A bonyolult címzési módok tömörebb programokat tesznek lehetővé, de nehezítik a párhuzamosítást. Ha a párosítás nem történhet szabadon, akkor jobb, ha csak egy választási lehetőség van (egyszerűbb hatékony fordítóprogramot írni). 9. előadás
Utasítástípusok • Adatmozgató (másoló) utasítások. • Diadikus: +, -, *, /, AND, OR, NOT, XOR, … • Monadikus: léptetés, forgatás, CLR, INC, NEG, … • Összehasonlítás, feltételes elágazás: Z, O, C, … • Eljáráshívás. Visszatérési cím: - rögzített helyre (rossz),- az eljárás első szavába (jobb), - verembe (rekurzív eljárásokhoz is jó). • Ciklusszervezés (5.30. ábra): számláló • Input/output (5.31-33. ábra): - programozott I/O: tevékeny várakozás, 5.32. ábra, - megszakítás vezérelt I/O, - DMAI/O (5.33. ábra): cikluslopás. 9. előadás
i=1; L1: első utasítás . . . utolsó utasítás i = i + 1; if(i ≤n) goto L1; Végfeltételes ismétlés i=1; L1: if(i > n) goto L2; első utasítás . . . utolsó utasítás i = i + 1; goto L1; L2: … Kezdő feltételes ismétlés Ciklusszervezés (5.30. ábra) 9. előadás
Feltételes végrehajtás(5.51-52. ábra): CMOVZ R2, R3, R1csak akkor hajtja végreR2 = R3-t, haR1= 0. 9. előadás
Predikáció, IA – 64 (5. 53. ábra) 64 predikátum regiszter: 1 bites regiszterek, többnyire párban. Az IA – 64 minden utasítása predikátumos.CMPEQ R1, R2, P4 beállítja P4-et és törli P5-öt, ha R1 = R2, különben P5-öt állítja be és P4-et törli. 9. előadás
A Pentium 4 utasításai • Egész utasítások legnagyobb része: 5.34. ábra. • Egyéb utasítások (pl. lebegőpontosak). Az UltraSPARC III utasításai Összes egész utasítás: 5.35. ábra. A utasításnévben CC: beállítja a feltételkódot. ADD, ADDC, ADDCC, ADDCCC utasítások. Szimulált utasítások (5.36. ábra), pl.: MOV SRC,DST ≡ OR SRC,G0,DST A 8051 utasításai (5.37. ábra) Bit utasítások, pl. a 43. bit 1-re állítása:SETB 43 9. előadás
Kifejezés A kifejezés szimbólumokból és konstansokból épül fel az alább ismertetendő műveletek segítségével. Kifejezés az operátorok, pszeudo operátorok operandus részére írható. Értékét a fordítóprogram határozza meg, és a kiszámított értéket alkalmazza operandusként. Szimbólumok értékén konstansok esetében természetesen a konstans értékét, címkék, változók esetében a hozzájuk tartozó címet – és nem a tartalmat – értjük. 9. előadás
Kifejezés A kifejezés értéke nemcsak számérték lehet, hanem minden, ami az utasításokban megengedett címzési módok valamelyikének megfelel. Pl. [BX] is kifejezés és értéke a BX regiszterrel történő indirekt hivatkozás, és ehhez természetesen a fordító programnak nem kell ismernie BX értékét. 9. előadás
Természetesen előfordulhat, hogy egy kifejezés egyik szintaktikus helyzetben megengedett, a másikban nem, pl.: mov ax,[BX] ; [BX] megengedett mul [BX] ; [BX] hibás, de mul WORD PTR [BX] ; megengedett Egy kifejezés akkor megengedett, ha az értéke fordítási időben meghatározható és az adott szintaktikus helyzetben alkalmazható, pl. az adott utasítás lehetséges címzési módja megengedi. A megengedett kifejezés értékeket az egyes utasítások ismertetése során megadtuk. 9. előadás
A műveletek csökkenő precedencia szerinti sorrendben: 1.( ) és [ ] (zárójelek) továbbá < >: míg a ( )zárójel pár a kifejezés kiértékelésében csupán a műveletek sorrendjét befolyásolja, addig a [ ] az indirekció előírására is szolgál. Ha a [ ] -en belüli kifejezésre nem alkalmazható indirekció, akkor a ( )-lel egyenértékű • LENGTH változó: a változó-hoz tartozó adat terület elemeinek száma • SIZE változó: a változó-hoz tartozó adat terület hossza byte-okban • WIDTH R/F: az R rekord vagy az F (rekord) mező szélessége bitekben • MASK F: az F (rekord) mező bitjein 1, másutt 0 9. előadás