Általában a mikroarchitektúra nem tartozik hozzá.
-
Upload
megan-kirk -
Category
Documents
-
view
19 -
download
0
description
Transcript of Általában a mikroarchitektúra nem tartozik hozzá.
Máté: Architektúrák 10. előadás 1
Általában a mikroarchitektúra nem tartozik hozzá.
ISA szintISA szint végrehajtásamicroprogram vagy hardver által
Hardver
FORTRAN program C program
Fordítás
hardverszoftver
Utasításrendszer-architektúra 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.
Máté: Architektúrák 10. előadás 2
Utasítások szintje (ISA)
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 4 (gyártók).
kernelmód (user) felhasználói mód
Máté: Architektúrák 10. előadás 3
Memória modellek
ASCII kód 7 bit + paritás → Byte (bájt)
Szó: 4 vagy 8 byte.
Igazítás (alignment), 5.2. ábra: hatékonyabb, de probléma a kompatibilitás (a Pentium 4-nek két ciklusra is szüksége lehet egy szó beolvasásához).
cím 8 bájt08
1624
8 bájtos szó8 határra igazítva
cím 8 bájt08
1624
Nem igazított 8 bájtos szóa 12-es címtől
Néha (pl. 8051) külön memória az adatoknak és az utasításoknak (nem ugyanaz, mint az osztott gyorsítótár!).
Máté: Architektúrák 10. előadás 4
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:
– SYNC utasítás: befejeztet minden megkezdett memória műveletet,
– függőség esetén a hardver vár.
Máté: Architektúrák 10. előadás 5
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): az eredmény negatív,
nulla, ... mód, prioritásszint, megszakítás-állapot, ...
Máté: Architektúrák 10. előadás 6
Utasításkészlet
LOAD, STORE,
MOVE, aritmetikai, logikai,
feltétlen, feltételes elágazó utasítások,
…
Máté: Architektúrák 10. előadás 7
Pentium 4
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
(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.
Máté: Architektúrák 10. előadás 8
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 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.
Máté: Architektúrák 10. előadás 9
Memóriaszervezés:
• 16 K db 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.
Máté: Architektúrák 10. előadás 10
Regiszterek (5.3. ábra):
• (majdnem) általános regiszterek:
Ezek 8 és 16 bites részei önálló regiszterként használhatók.
EAX
EBX
ECX
EDX
ALAH AX
BLBH BX
CLCH CX
DLDH DX
3216
88
Accumulator
Base index
Count
Data
Máté: Architektúrák 10. előadás 11
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).
Máté: Architektúrák 10. előadás 12
UltraSPARC III
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:
• 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ák 10. előadás 13
Á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.
Máté: Architektúrák 10. előadás 14
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, …
Bemenő
Lokális
Kimenő Bemenő
Lokális
Kimenő
Korábbi
Korábbi
GlobálisGlobális
R30=FP
R14=SP R30=FP
SP
Átlapolás
CWP = 7
CWP = 6
Máté: Architektúrák 10. előadás 15
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.
Máté: Architektúrák 10. előadás 16
5.6. ábra. A 8051 memória szervezése, fő regiszterei
Külön címtartományú program és adat memória.
C A RS O P PSW
EA E2 ES E1 X1 E0 X0 IE
E2 ES E1 X1 E0 X0 IP
O1 R1 O0 R0 E1 X1 E0 X0 TCON
1. időzítő 2. időzítő TMOD← 8 bit →
4095
0127
48
32
0
Program memória (ROM)
Munkaterület
Bit-címezhető memória
4 regiszterkészlet
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).
Máté: Architektúrák 10. előadás 17
8 regiszter: R0, … , R7. A regiszterek a memóriában vannak.
4 regiszter készlet, de egyszerre csak egy használható. PSW RS mezeje mondja meg, hogy melyik 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.
PSW: Carry, Auxiliary carry, RegisterS, Overflow, Parity
C A RS O P PSW
EA E2 ES E1 X1 E0 X0 IE
E2 ES E1 X1 E0 X0 IP
O1 R1 O0 R0 E1 X1 E0 X0 TCON
1. időzítő 2. időzítő TMOD← 8 bit →
Munkaterület
Bit-címezhető memória
4 regiszterkészlet
127
48
32
0
Máté: Architektúrák 10. előadás 18
IE (Interrupt Enable): EA=1: megszakítás engedélyezve, 0: tiltvaES=1: megszakítás engedélyezve a soros vonalon, 0: tiltva E0-2=1: a 0-2 időzítő csatorna engedélyezve, 0: tiltvaX1-2=1: külső eszköz megszakítás engedélyezve, 0: tiltva
Az engedélyezett számlálók egyszerre futhatnak, és ezek megszakítást válthatnak ki.
C A RS O P PSW
EA E2 ES E1 X1 E0 X0 IE
E2 ES E1 X1 E0 X0 IP
O1 R1 O0 R0 E1 X1 E0 X0 TCON
1. időzítő 2. időzítő TMOD← 8 bit →
IP (Interrupt Priority): 0 (alacsony), 1 (magas).
Máté: Architektúrák 10. előadás 19
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 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.
C A RS O P PSW
EA E2 ES E1 X1 E0 X0 IE
E2 ES E1 X1 E0 X0 IP
O1 R1 O0 R0 E1 X1 E0 X0 TCON
1. időzítő 2. időzítő TMOD← 8 bit →
Máté: Architektúrák 10. előadás 20
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 átfednek a memóriával.– Direkt címzéssel a speciális regisztereket,– Indirekt címzéssel a RAM-ot érhetjük el.
Máté: Architektúrák 10. előadás 21
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.
Máté: Architektúrák 10. előadás 22
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: x y +.
Előnyei: nem kell zárójel, sem precedencia szabályok, jól alkalmazható veremcímzés esetén.
Máté: Architektúrák 10. előadás 23
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):
– 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: ?).
A * ( B + C )
váltó
Máté: Architektúrák 10. előadás 24
Minden változó és konstansok menjen Kaliforniába (), a többi esetben a döntési tábla szerint járjunk el (5.21. ábra):
A * ( B + C )
A váltó előtti kocsi
+ - * / ( )
?
+ - * / ( ?
változó Kaliforniába
New Yorkból Texasba
Texasból Kaliforniába
Törlődjön a következő és az utolsó
texasi kocsi
„ Kaliforniában” kész a postfix forma
? Hibás az infix formula
A v
erem
tet
eje
A döntési tábla tartalmazza a prioritási szabályokat.
váltó
Máté: Architektúrák 10. előadás 25
▼ A*(B+C)
A ▼ *(B+C)
A ▼ (B+C) *
A ▼ B+C) (*
AB ▼ +C) (*
A váltó előtti kocsi + - * / ( )
?+ - * / ( ? A
ver
em t
etej
e
Máté: Architektúrák 10. előadás 26
A váltó előtti kocsi + - * / ( )
?+ - * / ( ? A
ver
em t
etej
e
AB ▼ C)
+ (*
ABC ▼ ) +
( *
ABC+ ▼ )
( *
ABC+ ▼ *
ABC+* ▼
Máté: Architektúrák 10. előadás 27
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!).
Máté: Architektúrák 10. előadás 28
Lépés Maradék formula Utasítás Verem1 8 2 5 * + 1 3 2 * + 4 - / BIPUSH 8 82 2 5 * + 1 3 2 * + 4 - / BIPUSH 2 8, 23 5 * + 1 3 2 * + 4 - / BIPUSH 5 8, 2, 54 * + 1 3 2 * + 4 - / IMUL 8, 105 + 1 3 2 * + 4 - / IADD 186 1 3 2 * + 4 - / BIPUSH 1 18, 17 3 2 * + 4 - / BIPUSH 3 18, 1, 38 2 * + 4 - / BIPUSH 2 18, 1, 3, 29 * + 4 - / IMUL 18, 1, 6
10 + 4 - / IADD 18, 711 4 - / BIPUSH 4 18, 7, 412 - / ISUB 18, 313 / IDIV 6
(8 + 2 * 5)/(1 + 3 * 2 – 4) // infix
Máté: Architektúrák 11. előadás 29
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ő.
• …
Máté: Architektúrák 11. előadás 30
Utasításformák, utasításhossz (5.10-11. ábra).
Műveleti kód
Műveleti kód cím
Műv. kód cím1 cím2
M.k. cím1 cím2 cím3
1 szó
utasítás
utasítás
utasítás
utasítás
1 szó
utasítás utasítás
utasítás utasítás
utasítás utasítás
utasítás utasítás
1 szó
utasítás
utasítás ut. ut.
utasítás
Máté: Architektúrák 10. előadás 31
A műveleti kód kiterjesztése
k bites 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).
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
műv. kód 1. cím 2. cím 3. cím
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.
Máté: Architektúrák 10. előadás 32
A műveleti kód kiterjesztése (5.13. ábra)
16 bit
4 bites műveleti
kód
0000 xxxx yyyy zzzz
15 db 3 címes utasítás
0001 xxxx yyyy zzzz0010 xxxx yyyy zzzz
.
.
.1100 xxxx yyyy zzzz1101 xxxx yyyy zzzz1110 xxxx yyyy zzzz
16 bit
8 bites műveleti
kód
1111 0000 yyyy zzzz
14 db 2 címes utasítás
1111 0001 yyyy zzzz1111 0010 yyyy zzzz
.
.
.1111 1011 yyyy zzzz1111 1100 yyyy zzzz1111 1101 yyyy zzzz
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.
Máté: Architektúrák 10. előadás 33
A műveleti kód kiterjesztése16 bit
12 bites műveleti
kód
1111 1110 0000 zzzz
31 db 1 címes utasítás
1111 1110 0001 zzzz1111 1110 0010 zzzz
.
.
.1111 1110 1110 zzzz1111 1110 1111 zzzz1111 1111 0000 zzzz1111 1111 0001 zzzz
.
.
.1111 1111 1101 zzzz1111 1111 1110 zzzz
16 bit
16 bites műveleti
kód
1111 1111 1111 0000
16 db 0 címes utasítás
1111 1111 1111 00011111 1111 1111 0010
.
.
.1111 1111 1111 11011111 1111 1111 11101111 1111 1111 1111
1111 1111 1111 is menekülő kód.
Máté: Architektúrák 10. előadás 34
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):
8 1 5 5 5 8
1 Műv.kód 0 cél forrás1 forrás2 Műv.kód
2 Műv.kód 1 cél forrás1 eltolás
3 Műv.kód eltolás
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.
Máté: Architektúrák 10. előadás 35
Két címes elképzelés (5.26. ábra).
8 3 5 4 3 5 4
Műv.kód mód reg eltolás mód reg eltolás
Feltételes 32 bites direkt operandus vagy eltolás
Feltételes 32 bites direkt operandus vagy eltolás
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.
Máté: Architektúrák 10. előadás 36
Pentium 4 utasí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)
0-5 1-2 0-1 0-1 0-4 0-4
prefix műv.kód mód SIB eltolás közvetlen
2 3 3
mód REC R/M
2 3 3
skála index bázis6 1 1
utasítás
Melyik operandus a forrás? bájt/szó
bit
bit
bit
bájt
Máté: Architektúrák 10. előadás 37
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:
MÓD
R/M 00 01 10 11
000 M[EAX] M[EAX+offset8] M[EAX+offset32] EAX v. AL
001 M[ECX] M[ECX+offset8] M[ECX+offset32] ECX v. CL
010 M[EDX] M[EDX+offset8] M[EDX+offset32] EDX v. DL
011 M[EBX] M[EBX+offset8] M[EBX+offset32] EBX v. BL
100 SIB SIB offset8-cal SIB offset32-vel ESP v. AH
101 direkt M[EBP+offset8] M[EBP+offset32] EBP v. CH
110 M[ESI] M[ESI+offset8] M[ESI+offset32] ESI v. DH
111 M[EDI] M[EDI+offset8] M[EDI+offset32] EDI v. BH
Máté: Architektúrák 10. előadás 38
SIB (5.28. ábra): jó, de megéri?
← EBP
Egyéb lokális
változók
a[0] ← EBP+8
a[1] ← EBP+12
a[2] ← EBP+16
Ver
em k
eret
Legyen i az EAX regiszterben
SIB módú hivatkozás:M[4*EAX+EBP+8]
2 3 3
skála index bázis
bit
Máté: Architektúrák 10. előadás 39
UltraSPARC utasításformái (5.15. ábra)
32 bites egyszerű utasítások.
Form. 2 5 6 5 1 8 5
1a m.k. cél m.k. forrás1 0 FP-m.k. forrás2 3 címes
1b m.k. cél m.k. forrás1 1 közvetlen konst. 2 címes
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.
Máté: Architektúrák 10. előadás 40
32 bites közvetlen adat megadása: SETHI – megad 22 bitet, a következő utasítás a maradék 10 bitet.
Form. 2 5 3 22
2 m.k. cél m.k. közvetlen konstans SETHI
Form. 2 1 4 3 22 (19)
3 m.k. A felt m.k. PC relatív cím UGRÁS
Az ugrások PC-relatívok, szót (4-gyel osztható bájt címet) címeznek. Jósláshoz 3 bitet elcsíptek. Az A bit az eltolás rést akadályozza meg bizonyos feltételek esetén.
3
Form. 2 30
4 m.k. PC relatív cím CALL
Eljárás hívás: 30 bites PC-relatív (szó) cím
Máté: Architektúrák 10. előadás 41
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, bázis-index
A többi utasítás általában 5 bites regiszter címzést használ
Máté: Architektúrák 10. előadás 42
A 8051 utasításformátumai1 Műv.kód Pl. ACC növelő
2 Műv.kód R R 3 bites regisztercím
3 Műv.kód Operandus
4 Műv.kód 11 bites cím
5 Műv.kód 16 bites cím
6 Műv.kód Operandus1 Operandus2
1. Implicit regiszter általában ACC, …2. Regiszter és ACC tartalmán végzett művelet, mozgatás, …3. Operandus: közvetlen, eltolás, bitsorszám4. Ugrás, szubrutin hívás5. Ugrás, szubrutin hívás 6. Pl. közvetlen operandus memóriába töltése, …
Máté: Architektúrák 10. előadás 43
A 8051 címzési módjai
Implicit: ACCRegiszter: akár forrás, akár cél operandus lehetDirekt: 8 bites memóriacímRegiszter-indirekt: 8 bites memóriacím
Indirekt címzés a 16 bites DPTR-relKözvetlen operandus: általában 8 bites, de
11 ill. 16 bites abszolút cím ugráshoz, eljárás híváshoz
Máté: Architektúrák 10. előadás 44
Összefoglaló: 5.29. ábra.
Címzési mód Pentium 4 UltraSPARC III 8051Akkumulátor XKözvetlen X X XDirekt X XRegiszter X X XRegiszter indirekt X XIndex X XBázis-index X XVeremA 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).
Máté: Architektúrák 10. előadás 45
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- DMA I/O (5.33. ábra): cikluslopás
Máté: Architektúrák 10. előadás 46
Ciklusszervezés (5.30. ábra)
i=1;L1: első utasítás
.
.
.utolsó utasítási = 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ási = i + 1;goto L1;
L2: …
Kezdő feltételes ismétlés
Máté: Architektúrák 10. előadás 47
Feltételes végrehajtás (5.51-52. ábra):if(R1 == 0) R2 = R3;
CMP R1, 0 BNE L1 MOV R2, R3L1: …
CMOVZ R2, R3, R1
if(R1 == 0) { R2 = R3; R4 = R5;} else { R6 = R7; R8 = R9;}
CMP R1, 0 BNE L1 MOV R2, R3 MOV R4, R5 BR L2L1: MOV R6, R7 MOV R8, R9L2: …
CMOVZ R2, R3, R1 CMOVZ R4, R5, R1 CMOVN R6, R7, R1 CMOVN R8, R9, R1
CMOVZ R2, R3, R1 csak akkor hajtja végre R2 = R3 -t, ha R1= 0.
Máté: Architektúrák 10. előadás 48
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.
if(R1 == R2) R3 = R4 + R5;else R6 = R4 – R5;
CMP R1, R2 BNE L1 MOV R3, R4 ADD R3, R5 BR L2L1: MOV R6, R4 SUB R6, R5L2: …
CMPEQ R1, R2, P4 <P4>ADD R3, R4, R5 <P5>SUB R6, R4, R5
Máté: Architektúrák 10. előadás 49
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. 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
Máté: Architektúrák 10. előadás 50
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.
Máté: Architektúrák 10. előadás 51
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.
Máté: Architektúrák 10. előadás 52
Természetesen előfordulhat, hogy egy kifejezés egyik szintaktikus helyzetben megengedett, a másikban nem, pl.:
mov ax,[BX]; [BX] megengedettmul [BX] ; [BX] hibás, demul 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.
Máté: Architektúrák 10. előadás 53
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
Máté: Architektúrák 10. előadás 54
Pl.:v dw 20 dup (?)rec record x:3,y:4tabledw 10 dup (1,3 dup (?))str db ”12345”
esetén:mov ax,LENGTH v ; ax 20mov ax,LENGTH rec ; ax 1mov ax,LENGTH table ; ax 10
; a belső DUP ignorálva!mov ax,LENGTH str ; ax 1
; str egy elem
Máté: Architektúrák 10. előadás 55
v dw 20 dup (?)rec record x:3,y:4tabledw 10 dup (1,3 dup (?))str db ”12345”
esetén: mov ax,SIZE v ; ax 40
mov ax,SIZE rec ; ax 1mov ax,SIZE table ; ax 20
; a belső DUP ignorálvamov ax,SIZE str ; ax 1
; str bájtos
Máté: Architektúrák 10. előadás 56
v dw 20 dup (?)
rec record x:3,y:4
tabledw 10 dup (1,3 dup (?))
str db ”12345”
esetén:
mov ax,WIDTH rec ; ax 7mov ax,WIDTH x ; ax 3mov ax,MASK x ; ax 70H
Máté: Architektúrák 10. előadás 57
2. . (pont): struktúra mezőre hivatkozásnál használatos 3. : mező szélesség (rekord definícióban) és explicit
szegmens megadás (segment override prefix). Az explicit szegmens megadás az automatikus szegmens regiszter helyett más szegmens regiszter használatát írja elő, pl.:
mov ax, ES:[BX]; ax (ES:BX) címen lévő szó
Nem írható felül az automatikus szegmens regiszter az alábbi esetekben:– CS program memória címzésnél,– SS stack referens utasításokban (PUSH, POP, ...),– ES string kezelő utasításban DI mellett,
de az SI-hez tartozó DS átírható.
Máté: Architektúrák 10. előadás 58
4.– típus PTR cím: (típus átdefiniálás) ahol típus lehet BYTE, WORD, DWORD, QWORD, TBYTE, illetve NEAR, FAR (előre hivatkozás esetén fontos) és PROC. Pl.:
MUL BYTE PTR [BX] ; a [BX] címet
; byte-osan kell kezelni
– OFFSET kifejezés: a kifejezés OFFSET címe (a szegmens kezdetétől számított távolsága byte-okban)
– SEG kifejezés: a kifejezés szegmens címe (abban az értelemben, ahogy a szegmens regiszterben szokásos tárolni, tehát valós üzemmódban a szegmens tényleges kezdőcímének 16-oda)
Máté: Architektúrák 10. előadás 59
– TYPE változó: az elemek hossza byte-okban, ha változó, de
TYPE string = 1, TYPE konstans = 0, TYPE NEAR címke = -1, TYPE FAR címke = -2
JMP (TYPE cím) PTR [BX]
; NEAR vagy FAR ugrás
– ... THIS típus: a program szöveg adott pontján adott típusú szimbólum létrehozása
Máté: Architektúrák 10. előadás 60
Pl.:
ADATB EQU THIS BYTE
; BYTE típusú változó, helyfoglalás nélkül
ADATW dw 1234H
; ez az adat ADATB-vel byte-osan érhető el
. . .
mov al,BYTE PTR ADATW ; al 34H, helyes
mov al,ADATB ; al 34H, helyes
mov ah,ADATB+1 ; ah 12H, helyes
Emlékeztetünk arra, hogy szavak tárolásakor az alacsonyabb helyértékű byte kerül az alacsonyabb címre!
Máté: Architektúrák 10. előadás 61
5.– LOW kifejezés: egy szó alsó (alacsonyabb
helyértékű) byte-ja– HIGH kifejezés: egy szó felső (magasabb
helyértékű) byte-jaPl.:ADATW dw 1234H
mov al,LOW ADATW ; al 34Hmov ah,HIGH ADATW ; ah 12H
6. Előjelek:+ : pozitív előjel– : negatív előjel
Máté: Architektúrák 8. előadás 62
7. Multiplikatív műveletek: : szorzás– / : osztás– MOD: (modulo) a legkisebb nem negatív maradék, pl.:
mov al,20 MOD 16 ; al 4 – kifejezés SHL lépés:
kifejezés léptetése balra lépés bittel – kifejezés SHR lépés:
kifejezés léptetése jobbra lépés bittel lépés is lehet kifejezés!
A kifejezésben előforduló műveleti jelek (SHL, SHR, és a később előforduló NOT, AND, OR, és XOR) nem tévesztendők össze a velük azonos alakú műveleti kódokkal: az előbbiket a fordító program, az utóbbikat a futó program hajtja végre!
Máté: Architektúrák 10. előadás 63
FeladatokMiért kitüntetett szint a gépi utasítások szintje (ISA)?Mikor jó egy gép ISA szintje?Mi a különbség a felhasználói (user) és a kernel mód
között?Mit jelent az igazítás 4 bájtos szavak tárolásánál?Mi az igazítás előnye?Mit jelent a memória szemantika?Milyen hardver megoldásokat ismer a memória
műveletek végrehajtási sorrendjére vonatkozóan?Mi a SYNC utasítás hatása?Miért van szükség a SYNC utasításra?
Máté: Architektúrák 10. előadás 64
FeladatokMondjon olyan regisztert, amely a mikro utasítások
szintjén és ISA szinten is látszik!Mondjon olyan regisztert, amely csak ISA szinten
látszik!Mondjon olyan regisztert, amely csak kernel módban
érhető el!Milyen utasítás típusokat ismer?Melyek a Pentium 4 processzor legfontosabb elődjei?Milyen üzemmódjai vannak a Pentium 4-nek?Milyen a Pentium 4 memória szervezése?Milyen regiszterei vannak a Pentium 4-nek?Mit jelent a Little endian tárolási mód?
Máté: Architektúrák 10. előadás 65
FeladatokMit jelent a Load/store architektúra?Milyen az UltraSPARC III memória szervezése?Milyen regiszterei vannak az UltraSPARC III-nak?Mit tud az UltraSPARC III G0 regiszteréről?Mi a CWP (Current Window Pointer) szerepe?Hogy működik az UltraSPARC III regiszter ablak
technikája?Hány regiszter készlete van a 8051-nek?Hol helyezkednek el a 8051 regiszterei?Mire jó a bit-címezhető memória?Írja le a 8051 RAM-jának a szerkezetét!Mire szolgál a 8051 IE, IP, TCON, és TMOD
regisztere?
Máté: Architektúrák 10. előadás 66
FeladatokHány címes utasítások lehetségesek? Adjon
mindegyikre példát!Milyen címzési módokat ismer? Részletezze ezeket!Mit jelent a fordított lengyel jelölés?Milyen előnyei vannak a postfix jelölésnek?Írja át postfix alakúra az alábbi formulákat!
A+B, A+B+C, A+B*C, A*B+C.Írja át infix alakúra az alábbi postfix formulákat!
AB+, AB–C/, AB*C+, AB*CD/E+–.Hogy működik Dijkstra algoritmusa?Hogy értékelhetők ki a postfix alakú formulák?
Máté: Architektúrák 10. előadás 67
FeladatokMik az ISA szint fő tervezési szempontjai?Hogy viszonyulhat egymáshoz az utasítás és a
memória cella hossza?Mit értünk műveleti kód kiterjesztésen?Mit nevezünk menekülő kódnak?Mi az ortogonalitási elv?Milyen utasítás formájú 3 címes gépet tervezne?Milyen utasítás formájú 2 címes gépet tervezne?Teljesül-e az ortogonalitási elv a Pentium 4-en?Milyen utasítás formái vannak a Pentium 4-nek?Mire szolgál a prefix bájt a Pentium 4-en?Mire szolgál a címzési mód bájt a Pentium 4-en?Mire szolgál a SIB bájt a Pentium 4-en?
Máté: Architektúrák 10. előadás 68
FeladatokTeljesül-e az ortogonalitási elv az UltraSPARC III-on?Milyen utasítás formái vannak az UltraSPARC III-nak?Milyen formátumú LOAD utasításai vannak az
UltraSPARC III-nak?Hogy adható meg 32 bites közvetlen adat az
UltraSPARC III-on?Milyen formátumú CALL utasítása van az
UltraSPARC III-nak?Teljesül-e az ortogonalitási elv a 8051-en?Milyen utasítás formái vannak a 8051-nek?Milyen formátumú ugró utasításai vannak a 8051-nek?Hogy érhető el 256-nál magasabb memória cím a
8051-en?
Máté: Architektúrák 10. előadás 69
FeladatokMilyen utasítás típusokat ismer?Mondjon diadikus/monadikus utasításokat!Hogy néz ki a vég-/kezdőfeltételes ciklus?Mit értünk feltételes végrehajtáson?Mi a feltételes végrehajtás előnye?Mit értünk predikáción?Hogy küszöböli ki a feltételes végrehajtás és a
predikáció a csővezeték elakadását? Jelent-e ez késleltetést a program futásában?
Máté: Architektúrák 10. előadás 70
FeladatokMit értünk kifejezésen?Mit értünk kifejezés értékén?Mikor kerül meghatározásra a kifejezés értéke?Szerepelhet-e regiszter egy kifejezésben?Befolyásolhatja-e egy regiszter értéke egy kifejezés
értékét? Mikor mondjuk, hogy egy kifejezés megengedett?Ha A és B szimbólum, akkor lehet-e helyes kifejezés
A + B, A – B, A * B, A / B? Milyen esetekben?Ha A és B változónév, akkor lehet-e helyes kifejezés
A + B, A – B, A * B, A / B?Lehet-e helyes kifejezés A + B – C, ha A + B nem
helyes kifejezés?
Máté: Architektúrák 10. előadás 71
Feladatoka dw 5 dup (1,2)b recordx:3,y:4,z:5c dw 10 dup (1,2 dup (3))d db ”szoveg”Alkalmazza a, b, c, d, x, y,és z-re a LENGTH, SIZE, WIDTH, MASK, TYPE és a NOT MASK, operátort (ha lehet)! Milyen eredményeket kap?
Melyik címet jelenti az ES:5[BX+DI] hivatkozás?Miért hibás a
MUL ES:[DI]utasítás? Hogy javítható ki?
Máté: Architektúrák 10. előadás 72
Feladatoka db 12Hb db 23Hc dw ?esetén, mi lesz AX, BL és BH tartalma a
mov AX, word ptr amov c, AXmov BL, low cmov BH, byte ptr c
utasítások után?