363
S ZÁMÍTÓGÉP ARCHITEKTÚRÁK & H ARDVERKÖZELI PROGRAMOZÁS 1 Dr. Varga Imre Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék 2019. május 23.

SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

SZÁMÍTÓGÉP ARCHITEKTÚRÁK &

HARDVERKÖZELI PROGRAMOZÁS 1

Dr. Varga Imre

Debreceni Egyetem

Informatikai Rendszerek és Hálózatok Tanszék

2019. május 23.

Page 2: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Követelmények

Gyakorlat (aláírás, csak HKP1)

Óralátogatás (maximum hiányzás: 3)

2 gyakorlati ZH

• A két ZH átlaga legalább 60%

• Mindegyik legalább 50%

1 javítási lehetőség (teljes féléves anyag)

Elmélet (kollokvium, SzA & HKP1)

Írásbeli vizsgaTeszt + számolás/programértés + kifejtős

Számítógép architektúrák 2

Page 3: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Figyelmeztetés

A diasoron alapuló lexikai tudás szükséges, de nem elegendő a sikeres teljesítéshez.

Az anyag megértése is szükséges, emiatt az előadásokon való aktív részvétel ajánlott.

Egyéb irodalom is hasznos lehet.

Számítógép architektúrák 3

Page 4: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Mérnökinformatikus képzés

mérnök… …informatikus

Számítógép architektúrák 4

Számítógép architektúrák

Assemblyprogramozás

Rendszerközeliprogramozás

Programozásinyelvek 1-2

Operációs rendszerek

Fizika

Elektronika

Digitálistechnika

Jelek ésrendszerek

Beágyazottrendszerek

Adatbázis-kezelés

Page 5: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Tematika

Számábrázolás, adattípus implementáció

CPU alapvető felépítése és működése

Modern processzorok

Konkrét processzor architektúra Utasításkészlet, programozás

A programozás operációsrendszerhez kapcsolódó hardverközeli aspektusai

Digitális elektronika alapjai hardver szempontból

Assembly programozás Magas szint programozás leképezése alacsonyra

Számítógép architektúrák 5

Page 6: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A tárgy célja

Hardver ismeretek átadása

Összeköttetés teremtése

A ‚program’ és az ‚elektronika’ között

Az ‚absztrakt’ és az ‚alapozó’ ismeretek között

Magas szintű programozás mélyebb megértése

Hatékonyabb programozás

Az assembly programozás bemutatása

Szemléletformálás

Átfogó kép kialakítása a számítógép rendszerekről

Számítógép architektúrák 6

Page 7: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Számábrázolás, adattípusok

Fixpontos számábrázolás

Lebegőpontos számábrázolás

Főbb adattípusok

Page 8: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Adatok

Információtároláshoz különböző adattípusok

A számítógépen minden adat végül bitsorozatnumerikus infószövegképhangvideóadatbázisprogramok

Számítógép architektúrák 8

számok bitsorozat

kódolás

dekódolás

Page 9: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Bináris számok

Csak két számjegy: 0 és 1

Jelentőség: 2 állapot (igen/nem, van/nincs, stb.)

Konverzió 69,37510 = 1000101,0112

Számítógép architektúrák 9

69 234 117 0

8 14 02 01 00 1

64 32 16 8 4 2 1 1/2 1/4 1/8

26 25 24 23 22 21 20 2-1 2-2 2-3

1 0 0 0 1 0 1 0 1 1

2 3750 7501 5001 000

Page 10: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Hexadecimális számok

16 számjegy: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

Szoros kapcsolat a binárissal, de rövidebb alak

Jelölés: 1FA16, 0x1FA, $1FA

Konverzió

Számítógép architektúrák 10

0 0 0 1 1 1 1 1 1 0 1 0

211 210 29 28 27 26 25 24 23 22 21 20

2048 1024 512 256 128 64 32 16 8 4 2 1 =50610

1*256 15*16 10*1 =50610

162 161 160

1 F A

0x1FA = 0b 1 1111 1010 = 506

Page 11: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Adatszervezés

Adategységek

Bit (binary digit): két állapot (0, 1)

Nibble (fél bájt): 4 bit

Bájt : 8 bit

Félszó: 16 bit

Szó: (többnyire) 32 bit

Dupla szó: 64 bit

Számítógép architektúrák 11

21625665.5364.294.967.29618.446.744.073.709.551.616

Page 12: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Adattípus

Megadás

Reprezentáció

Tartomány

Műveletek

Főbb adattípusok

Egyszerű típusok: egész, valós, karakter, mutató, logikai, felsorolásos

Összetett típus: tömb, rekord, halmaz

Számítógép architektúrák 12

Page 13: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Egész típus

Ábrázolás

Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli

BCD Pakolt vagy pakolatlan

Bájtsorrend

Little-endian

Big-endian

Megadás különböző módokon

Pl. C nyelven: 30=30u=30l=036=0x1E=0b11110*

Számítógép architektúrák 13

*ISO C99

Page 14: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Fixpontos számábrázolás

Egész értékek reprezentálása

Előjel nélküli eset (csak nem negatív szám)

ábrázolandó szám kettes számrendszerben

adott számú biten

Példa (1 bájt esetén)4110 1010012

N biten ábrázolható

legkisebb szám: 0

legnagyobb szám: 2N-1

Számítógép architektúrák 14

0 0 1 0 1 0 0 1

Page 15: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Fixpontos számábrázolás

Előjeles eset

Nem negatív érték esetén: előjel nélküli logika

Negatív érték esetén: kettes komplemens

• Abszolút érték bitjeinek invertálása (egyes komplemens)

• A kapott érték növelése 1-gyel

Példa (1 bájt esetén)-4110 -1010012

N biten ábrázolható

legkisebb szám: -(2N-1)

Legnagyobb szám: 2N-1-1Számítógép architektúrák 15

1 0 1 0 1 1 11

meghatározza az előjelet

Page 16: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Számolás fixpontos számokkal

Összeadásra és kivonásra ugyanaz az algoritmus használható

Példa (1 bájtos adatok esetén)

Számítógép architektúrák 16

67+54=121

01000011+00110110

01111001

67-54=1367+(-54)=13

01000011+11001010

00001101

Absolútérték (+54):

00110110Egyes komplemens:

11001001Kettes komplemens (-54):

11001010

Page 17: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Számolás fixpontos számokkal

SzorzásPélda: két 16 bites érték szorzása: 30 000*4 00030 000: 4 000:

120 000 000:

Eredmény két regiszterben vagy túlcsordulás (hiba)

Számítógép architektúrák 17

A B C D

B*D

0x75 0x30 0x0F 0xA0

0x1E 0x000x49 0x200x02 0xD0

0x06 0xDB

0x07 0x27 0x0E 0x00

A*D

B*C

A*C+

216AC+28(AD+BC)+BD

Page 18: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Aritmetikai túlcsordulás

Két féle hibalehetőség

Előjel nélkül: több bit lenne szükséges (carry)01011010 90

+11110001 +241101001011 75 ≠331 >255

Előjeles: nem várt előjelváltás (overflow)01011010 90

+01110001 +11311001011 -53 ≠203 > 127

Számítógép architektúrák 18

-2,15E+09

0

2,147E+09

4,295E+09

0 2,147E+094,295E+096,442E+098,59E+091,074E+101,288E+101,503E+101,718E+10

2G

4G

0

-2G

-2,15E+09

0

2,147E+09

4,295E+09

0 2,147E+094,295E+096,442E+098,59E+091,074E+101,288E+101,503E+101,718E+10

2G

4G

0

-2G

Page 19: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Kiterjesztés

Néha szükség van egy adatot a korábbinál több biten ábrázolni úgy, hogy az értéke ne változzon

Nulla kiterjesztés: kitöltés nullával

Rövid előjel nélküli értékből hosszú előjelnélküli8 bit: 01101001 16 bit: 00000000011010018 bit: 11010010 16 bit: 0000000011010010

Előjel tartó kiterjesztés: kitöltés előjel bittel

Rövid előjeles értékből hosszú előjeles8 bit: 01101001 16 bit: 00000000011010018 bit: 11010010 16 bit: 1111111111010010

Számítógép architektúrák 19

unsigned short x=5;

unsigned long y=x;

short int q=-17;

long int z=q;

Page 20: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Bájtsorrend

Több bájtos adatok esetén a bájtok sorrendje

Little-endian: (gazdagép bájtsorrend)

Legkisebb helyi értékű bájt (LSB) elől

Big-endian: (hálózati bájtsorrend)

Legnagyobb helyi értékű bájt (MSB) elől

Példa:523124044 = 0b11111001011100011110101001100 = 0x1F2E3D4C

Little-endian:

Big-endian:

Számítógép architektúrák 20

0x4C 0x3D 0x2E 0x1F

0x1F 0x2E 0x3D 0x4C

25 32 17 24 9 16 1 8

1 8 9 16 17 24 25 32

Page 21: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

BCD ábrázolás

Binárisan kódolt decimális

Minden számjegy 4 biten ábrázolva

Vannak kihasználatlan bitkombinációk

Pakolatlan BCD

1 számjegy - 1 bájt : 0000 vagy (0011*) bevezető1395 00000001 00000011 00001001 00000101

Pakolt BCD

2 számjegy - 1 bájt : nibble alapú1395 00010011 10010101

Számítógép architektúrák 21

*ASCII miatt

Page 22: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Karakter típus

Értékei karakter kódok

C: Fixpontos számábrázolás, 1 bájt, előjeles/előjel nélküli, egészként használható (ASCII)

Java: 2 bájt, előjel nélküli (Unicode)

Karakter kódtáblák

ASCII: 7bit

ISO-8859-2 „Latin 2”: 8bit

Unicode: 16bit

Számítógép architektúrák 22

Page 23: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Karakter kódtáblák

ASCII kódtábla

0x00-0x1F: vezérlő karakter

0x30-0x39: számjegy

0x41-0x5A: angol nagy betű

0x61-0x7A: angol kis betű

ISO-8859-2 „Latin 2”

0x00-0x7F: ASCII (kompatibilitás)

0x80-0xFF: közép/kelet európai nyelvek speciális karakterei

Számítógép architektúrák 23

Page 24: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Karakter kódtáblák

Unicode

16 bites kódsíkok (17 db)

Több mint 1 millió kódpont (17*65536)

1. sík: Basic Multilingual Plane (BMP)

ASCII kompatibilitás

Kódolási technikák (változó hosszúság)

• UTF-8

• UCS-2

• UTF-16

• UTF-32

Számítógép architektúrák 24

Page 25: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

UTF-8

ASCII: Minden bájt egy ASCII kód

unicode00000000 00000000 00000000 0abcdefg

UTF-8 0abcdefg

Nem ASCII: Egyik bájt sem ASCII kód

unicode00000000 00000000 00000abc defghijk

UTF-8 110abcde 10fghijk

unicode00000000 00000000 abcdefgh ijklmnop

UTF-8 1110abcd 10efghij 10klmnop

unicode00000000 000abcde fghijklm nopqrstu

UTF-8 11110abc 10defghi 10jklmno 10pqrstu

Számítógép architektúrák 25

Page 26: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

UTF-8 példa

Karakter: (egyszerűsített kínai, pinyin: jing)

Unicode: 4EAC

Bináris: 01001110 10101100

UTF-8: 11100100 10111010 10101100

HTML: &#x4EAC, &#20140

URL: %E4%BA%AC

Latin-1: 京

Latin-2: 亏

Számítógép architektúrák 26

Page 27: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Valós típus

Ábrázolás: lebegő pontos

Méret: 4, 8, 10 bájt

Megadás különböző formában

Pl. C nyelven: 0.25, 0.25f, 0.25L, .25, +0.25, 25e-2, 0.025e1

Műveletek

Operátor túlterhelésPl. a + operátor lehet egész-egész vagy valós-valós

Egyes műveletek nem használhatóak valós típussalPl.: nincs maradékos osztás, léptetés

Számítógép architektúrák 27

Page 28: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Lebegő pontos számábrázolás

Valós számok ábrázolása

Alapja a normalizálás: 123,45 = 1,2345 · 102

Minden (2 számrendszerbeli) szám felírható így:

(-1)S · M · AK

ahol a mantissza (M) „1.H” alakú, azaz 12 ≤ M < 102

karakterisztika (K) pozitív és negatív is lehet

Nem tároljuk: alap (A=2), rejtett bit, K előjele

E=K+B adott számú biten nem negatív (B: nulla pont)

Tárolandó: S, H, E

Számítógép architektúrák 28

Page 29: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Lebegő pontos szabvány

IEEE 754/1985 szabvány (ISO/IEC/IEEE 60559:2011)

Előjel

Pozitív: 0; Negatív: 1

Formátumok

Számítógép architektúrák 29

méretS

hosszE

hosszH

hosszB

Egyszerespontosság

32 bit 1 bit 8 bit 23 bit 127

Duplapontosság

64 bit 1 bit 11 bit 52 bit 1023

Kiterjesztettpontosság

80 bit 1 bit 15 bit 63(+1) bit 16383

Page 30: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Lebegő pontos számábrázolás

Példa: -13.8125 egyszeres pontossággal

-13.812510 = -1101.11012 = -11 · 1.1011101 · 23

Előjel: S = 1

Karakterisztika: K = 310 = 112

Mantissza: M = 1.1011101

Hasznos bitek: H = 10111010000000000000000…

Eltolt karakterisztika: E = 310+12710 = 100000102

Számítógép architektúrák 30

1 1 0 0 0 0 0 1 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

S E H

Page 31: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Kerekítési hiba

Ok: hasznos bitek tárolás véges számú biten

Túl sok hasznos bit esetén kerekítés szükséges

Ha az utolsó tárolható hasznos bit után ’0’ áll,akkor a további biteket levágjuk

Különben felfelé kerekítünk

Kerekítési hiba: nem pontos ábrázolás

Példa: 0.3 ábrázolása egyszeres pontossággalhasznos bitek: 00110011001100110011001100110…tárolt bitek: 00110011001100110011010 0.3 0.300000011920929

Számítógép architektúrák 31

Page 32: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Kerekítési hiba

Valós számok: folytonos halmaz, végtelen sok elemmel

Lebegőpontos számok:diszkrét halmaz, véges sok elemmel

Például:1.0000000000; 1.0000001192; 1.0000002384; 1.0000003576

Az ábrázolható számok sűrűsége nem állandó

A tárolt értékek csak néhány számjegyig pontosak

Számítógép architektúrák 32

Page 33: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Speciális lebegőpontos értékek

+0 és -0előjel bit ’0’ (+) vagy ’1’ (-), minden más bit ’0’Pl.: 0.0/-1.0, -1.0*0.0

±végtelen (Inf)karakterisztika csupa ’1’, mantissza csupa ’0’Pl.: 1.0/0.0, inf+1.0, túl nagy érték

„nem szám” (NaN)karakterisztika csupa ’1’, mantissza nem csupa ’0’Pl.: 0.0/0.0, inf-inf, 0.0*inf, NaN+1.0

denormalizált szám (subnormal)karakterisztika csupa ’0’, mantissza nem csupa ’0’

Számítógép architektúrák 33

Page 34: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Számolás lebegő pontos számokkal

Összeadás: fixpontostól nagyon eltérő módszer Példa: 7,5 + 0,625

7,5 = 01000000 11110000 00000000 000000000,625 = 00111111 00100000 00000000 00000000

10000001 > 01111110

Számítógép architektúrák 34

3

11110000…+ 10100…100000100… 1+10000001 = 10000010

01000001 000000100 00000000 00000000

(-1)0 * 1,000001 *1011 = 8,125

Page 35: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Példa: bitsorozat értelmezés

Mit jelenthet az alábbi big-endian bitsorozat?11101001 10110000 10100101 01000110

32 bites előjeles egész: -374 299 322 32 bites előjel nélküli egész: 3 920 667 974 16 bites előjeles egészek: -5 712; -23 226 16 bites előjel nélküli egészek: 59 824; 42 310 lebegőpontos: -26693928249241673000000000.0 „Latin 1” szöveg: é°¥F „Latin 2” szöveg: é°ĽF Unicode szöveg UTF8 kódolással: 鰥F Pakolt BCD: ?9?0?546 (érvénytelen) vagy +9-0+546

Számítógép architektúrák 35

Page 36: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Mutató és rekord típusok

Mutató vagy referencia

Indirekt hivatkozásra szolgálnak

Tartományának elemei tárcímek

Gyakorlatilag előjel nélküli egészek

A mutató típusú változónak is van saját címe

Rekord

Különböző típusú tárterületek együtt

Mindegyik mező a saját reprezentációjával

Számítógép architektúrák 36

Page 37: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Tömb típus

Azonos típusú elemek folytonosan tárolva

Minden elem az adott reprezentációval

A tömb neve

C nyelven: az első elemre mutató nevesített konstans

Egyes nyelveken: az összes elemre hivatkozás

Egydimenziós tömb i. elemének a címe (Ai)𝐴𝑖 = 𝐴1 + 𝑖 − 1 𝐸

ahol E egy adatelem mérete és A1 a tömb kezdőcíme

Számítógép architektúrák 37

Page 38: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Több dimenziós tömbök

Sorfolytonos tárolás

Az i. sor j. elemének címe (Ai,j) egy NxM-esmátrixban

𝐴𝑖,𝑗 = 𝐴1,1 + 𝑀 𝑖 − 1 𝐸 + j − 1 E

ahol E egy adatelem mérete és A1,1 a mátrix első elemének címe

Számítógép architektúrák 38

𝑀3,2 =

𝑒1,1 𝑒1,2

𝑒2,1 𝑒2,2

𝑒3,1 𝑒3,2

→ 𝑀6 = 𝑒1,1 𝑒1,2 𝑒2,1 𝑒2,2 𝑒3,1 𝑒3,2

Page 39: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Sztring típus

Karakterek sorozata

Elemei a megfelelő belső reprezentációban(pl. C: 1 bájt, ASCII; Java: 2 bájt, Unicode)

Hossza

Fix hosszúságú

Változó hosszúságú

• A sztring elején hossz tárolás (pl. Pascal)

• A sztring végén speciális lezárójel (pl. C)

• Kombinált (pl. Delphi)

Számítógép architektúrák 39

Page 40: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A számítógép vázlatos felépítés

Architektúra szintek

Processzor

Buszrendszer

Memória

Perifériák

Page 41: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Számítógép rétegmodell

0. szint: digitális logikai áramkörök (logikai kapu, flip-flop)

1. szint: mikro-architektúra (konkrét ALU, buszok)

2. szint: utasításkészlet architektúra (ISA)

3. szint: operációs rendszer (ütemezés, tárkezelés)

4. szint: programozási nyelvek (alkalmazások)

Számítógép architektúrák 41

Page 42: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Neumann architektúra

Princeton architektúra (Neumann János)

Neumann elvek (1945):

Elektronikus működés

Kettes számrendszer használata

Tárolt program elve

Adat és program tárolás ugyanott/ugyanúgy

Soros programvégrehajtás

Univerzális felhasználhatóság

Számítógép architektúrák 42

Page 43: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Harvard architektúra

Külön adat és program memória

Eltérő felépítés, címtartomány, típus is lehet

Párhuzamos adat és utasítás elérés miatt nagyobb teljesítmény

Főként mikrokontrollerekben használt

Első alkalmazás: Mark I (1944)

Módosított Harvard architektúra

Külön adat/utasítás gyorsítótár, közös memória

Modern CPU-k esetén elterjedtSzámítógép architektúrák 43

Page 44: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A számítógép alapvető felépítése

Processzor

Memória

Input-Output interfész

Buszrendszer

Perifériák

Számítógép architektúrák 44

Processzor Memória I/O interfész

Perifériák

Buszrendszer

Page 45: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Processzor

Központi feldolgozó egység

A számítógép „agya”

Vezérlés

Utasítás végrehajtás

(Mikro)processzor integrált áramköröket tartalmaz

Műveletek és az egységek szinkronizálásához órajelet használ

Számítógép architektúrák 45

Page 46: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Memória

Operatív tár

Aktuális műveletekhez szükséges „rövidtávú” memória

Elsődleges tároló, nem háttértár

Címezhető adattároló „rekeszek”

Adatok és utasítások tárolása

Elektronikus működés

Integrált áramkör

Számítógép architektúrák 46

Page 47: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Buszrendszer

Busz (sín): vezetékek egy csoportja, amelyeken digitális jelet lehet továbbítani

Buszrendszer logikai részei

Címbusz: a címek bitsorozatának átvitelét biztosítja

Adatbusz: adatok átviteléért felelős

Vezérlő busz: részegységek működésének összehangolását segítő vezérlő jelek továbbítása

Számítógép architektúrák 47

Processzor Memória I/O interfész

címbusz

adatbusz

vezérlő busz

Page 48: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

I/O interfész

A számítógép központi része és a külső egységek (perifériák) közötti adatátvitelre szolgál

A kimeneti/bemeneti eszközök portokhoz kapcsolódnak

A portok címezhetőek (hasonlóan a memóriához)

Az adatátvitel során gyakran puffereket használunk

Szoftveres szinten driverekre van szükség

Számítógép architektúrák 48

Page 49: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Perifériák

Számítógép architektúrák 49

Input Billentyűzet

Egér

Szkenner

Kamera

Output Monitor

Nyomtató

Projektor

Audio rendszer

Tároló Háttértár (HDD, SSD)

CD/DVD/Blu-ray

USB tároló

Memória kártya

Hálózat Ethernet kártya

Wi-Fi kártya

Page 50: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A processzor felépítése és működése

CPU

Regiszterek

Fetch-execute ciklus

RISC / CISC processzorok

Page 51: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Processzor

Központi Feldolgozó EgységCentral Processing Unit (CPU)

Részei:

Vezérlő egység (CU)

Aritmetikai és logikai egység (ALU)

Címző egység (AU) és Busz illesztő egység (BIU)

Regiszterek

Belső buszrendszer

Belső gyorsítótár

Egyéb (pl. órajel generátor)

Számítógép architektúrák 51

Végrehajtó egység (EU)

Page 52: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Regiszterek

Kis méretű (flip-flop-szerű) tároló áramkör

Mérete általában a busz szélességével egyenlő

Általában 8-512 bit tárolására alkalmas

Gyors hozzáférésű (elérési idő < 1ns)

Darabszámát a processzor határozza meg (10-100)

Gyakran regisztertömböket alkot

Van nevűk (néha átnevezhetőek)

3 kategória:

Rendszer- , általános célú- és speciális célú regiszter

Számítógép architektúrák 52

Page 53: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Regiszterek

Programszámláló regiszter (PC vagy IP)

A következő utasítás memóriacímét tartalmazza

Az utasítás végrehajtása során átáll (általában) a következő utasítás címére, azaz az aktuális utasítás méretével növekszik

Szekvenciális végrehajtás eszköze

Értékét egyes utasítások is állíthatják (vezérlés átadás)

Vezérlőegységhez (CU) kapcsolódik

Számítógép architektúrák 53

Page 54: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Regiszterek

Utasítás regiszter (IR)

A memóriából beolvasott utasítás műveleti kódját tartalmazza

A vezérlőegységhez kapcsolódik

A CU ez alapján dönti el

milyen műveletet kell végeztetni

milyen adaton kell dolgozni és az hogyan érhető el

A programozó által nem hozzáférhető

Számítógép architektúrák 54

Page 55: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Regiszterek

Akkumulátor (ACC, W, AX)

Általános munka regiszter az ALU-ban

Aritmetikai és logikai műveletek operandusait tartalmazza legtöbbször

Általában az ilyen műveletek eredménye is itt tárolódik

Újabb processzorokban több hasonló regiszter ugyanerre a célra (kevesebb memória művelet)

Általában egész típusú adatokat tartalmaznak

Számítógép architektúrák 55

Page 56: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Regiszterek

Állapot regiszter (SR, FLAGS)

Processzor állapottal, művelet eredményével kapcsolatos jelző/vezérlő biteket tartalmaz

Feltételes vezérlésátadásnál (is) nagyon fontos

Számítógép architektúrák 56

Átvitel (CF)

Nibble átvitel (AF)

Túlcsordulás (OF)

Előjel (SF)

Megszakítási maszk (IF)

Nulla (ZF)

Paritás (PF)

Page 57: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Regiszterek

Verem mutató regiszter (SP)

A hardveres rendszerverem használatához

A verem tetejének memóriacímét tartalmazza

Általában a verem előrefelé nő

Általában SP a legutóbb betett elemet címzi (Intel)

Speciális célú regiszter

A „push” és „pop” művelet automatikusan változtatja az SP értékét

Számítógép architektúrák 57

Page 58: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Regiszterek

Címzéssel kapcsolatos speciális regiszterek

Operandusok címének meghatározásánál egy alap címhez képesti relatív cím (eltolás) megadásához használható

Az AU-hoz (BIU-hoz) kapcsolódnak

Tömbök, sztringek és lokális változók esetén illetve memória szegmens kezelésnél hasznos

Például: BP, X, SI, DI, CS, DS, SS, ES

Számítógép architektúrák 58

Page 59: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Regiszterek

Memória cím regiszter (MAR)

Összeköti a rendszer (külső) és belső címbuszt

Azt a címet tartalmazza, amelyhez legközelebb hozzá kell férni (írásra vagy olvasásra)

A címző egység hajtja meg

Címbusz szélességű

Számítógép architektúrák 59

Page 60: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Regiszterek

Memória adat regiszter (MDR)

Összeköti a rendszer (külső) és belső adatbuszt

Azt az adatot tartalmazza

amelyet legközelebb ki kell írni a memóriába vagy

amely legutóbb be lett olvasva a memóriából

Kétirányú regiszter

Adatbusz szélességű

Számítógép architektúrák 60

Page 61: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Aritmetikai és logikai egység

Számítási műveleteket végez

Tartalmaz: fixpontos összeadót, komplemensképzőt, léptető regisztereket, bitenkénti logikai művelet végző, stb. áramköröket

Számítógép architektúrák 61

A operandus B operandus

eredmény

utasítás állapotALU

Page 62: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Vezérlő egység

Az IR-ben lévő érték alapján irányítja, szabályozza a többi egység (pl. ALU) működését

Fontos regiszterei: IR, PC, SR

A vezérlés történhet

Huzalozott logikával (közvetlenül)Minden utasításhoz létrehozott bonyolult digitális elektronika segítségével

Mikroprogramozott (közvetett) módonMinden műveleti kód elindít egy apró (ROM-bantárolt) mikroprogramot

Számítógép architektúrák 62

Page 63: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Címző egység

Addressing Unit (AU), Address Generation Unit (AGU)

Az utasítások sokféle címzési mód segítségével határozhatják meg hol található az operandus

Az AU az operandus címét állítja elő és helyezi el az MAR-ban

Az utasításban található címet képezi le „fizikai” memóriacímre

Tárolóvédelmi hibák felismerése

Kapcsolat: BIU

Számítógép architektúrák 63

Page 64: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Órajel

Periodikus négyszög hullám

Órajel generátor (oszcillátor) állítja elő

Szinkronizálja az egységek működését

Frekvenciája arányos a CPU által disszipált hővel

Periódusidő nagyobb, mint a jelterjedési idő

1 MHz – 4 GHz

Gyakran változtatható (turbo, powersave)

Egyéb sebesség jellemzők: MIPS, FLOPS

Számítógép architektúrák 64

Page 65: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A CPU működése

Egy művelet sorozat ismételgetése

Fetch-execute ciklus

Órajel szinkronizált

CU vezényel

Végtelen, monoton, gépies ismétlés során

Adatmozgatás

Műveletvégzés

Fontos a regiszterek (PC, IR, SR, ACC, MAR, MDR, stb.) tartalma és annak változása

Számítógép architektúrák 65

Page 66: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Fetch-Execute ciklus

1. Utasítás beolvasásaA PC-ben található érték megmondja, hol található a memóriában a következő utasítás. Ezt be kell olvasni az IR-be.

2. DekódolásA beolvasott műveleti kódot értelmezni kell. Milyen művelet? Milyen adatokon? Eredmény hová kerül?Utasításkészlet architektúra (ISA) definiáljaLehet huzalozott vagy mikroprogramozott

Számítógép architektúrák 66

Page 67: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Fetch-Execute ciklus

3. Operandus beolvasásaAz operandus címének meghatározása és onnan beolvasása a megfelelő regiszterbe

4. Művelet végrehajtásapéldául az ALU által, az eredmény egy átmenti regiszterbe kerül

5. Eredmény tárolásregiszterbe vagy memóriacímre

6. Következő utasítás címének meghatározása

Számítógép architektúrák 67

Page 68: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Olvasási ciklus

DIY Calculator architektúra esetén

Számítógép architektúrák 68

C. Maxfield, A. Brown: The Official DIY Calculator Data Book

Page 69: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Írási ciklus

DIY Calculator architektúra esetén

Számítógép architektúrák 69

C. Maxfield, A. Brown: The Official DIY Calculator Data Book

Page 70: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

CISC processzor

Komplex utasításkészletű számítógép

Sok, összetett utasítás

Sokféle címzési mód

Változó hosszúságú utasítások

Egy utasítás több gépi ciklust igényel

Mikroprogramotott

Kevés regiszter

Utasítások elérhetik közvetlenül a RAM-ot

Pl.: IA-32, Motorola 68k

Számítógép architektúrák 70

Page 71: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

RISC processzor

Csökkentett utasításkészletű számítógép

Kevés, egyszerű utasítás

Kevés címzési mód

Állandó hosszúságú utasítások

Utasítás egy gépi ciklust igényel

Huzalozott vagy mikroprogramotott

Sok regiszter

Csak a Load/Store utasítás éri el a RAM-ot

Pl.: ARM, AVR, PIC

Számítógép architektúrák 71

Page 72: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

CISC vs RISC

Példa:A[i] = x-32;

r1: tömb kezdőcíme (A); r2: i címe; r3: x címe

Számítógép architektúrák 72

CISCADD r4, (r1), (r2)

SUB (r4), (r3), 32

RISCLDR r5, (r1)

LDR r6, (r2)

ADD r4, r5, r6

LDR r7, (r3)

SUB r8, r7, 32

STR (r4), r8

eredmény operandus

adat a regiszterben

adat címe a regiszterben

konstansadat

Page 73: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Megszakítási rendszer és input/output

Megszakítás, kivétel

Megszakításkezelés

Input/output

Buszrendszerek, perifériák

Page 74: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Szükségesség

Az általános célú számítógépek fontos képessége, hogy kölcsön hat az I/O eszközökkel (billentyűzet, egér, hálózati interfész, monitor).

Ezek az eszközök „azonnali” választ várnak a processzortól, függetlenül attól mivel foglalkozik éppen.

Váratlanul bekövetkező eseményekre a CPU-nak reagálnia kell.

A megszakítás szolgál a CPU figyelmének felhívására.

Számítógép architektúrák 74

Page 75: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Megszakítás

Speciális jelzés a CPU számára

Egy esemény bekövetkeztét jelzi

Azonnal reagálni kell rá

A „normál” végrehajtást meg kell szakítani

Később tudni kell folytatni

Forrás

Hardver

Processzor

Szoftver

Számítógép architektúrák 75

Page 76: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Megszakítás típusok

Aszinkron

Külső forrásból (például I/O eszköz) származik

Független az aktuálisan végrehajtott utasítástól

Szinkron (másként „kivétel”)

Processzor által kiváltott kivétel

Hiba: „kijavítható” probléma, újra próbálkozás

Elvetés: jelentős, „javíthatatlan” (hardver) hiba

Csapda: pl. nyomkövetés, programozott kivétel (rendszerhívás)

Számítógép architektúrák 76

Page 77: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Megszakítás típusok

Számítógép architektúrák 77

utasítás1

utasítás2

utasítás3

utasítás4

utasítás1

syscall

utasítás3

utasítás4

utasítás1

utasítás2

utasítás3

utasítás4

utasítás1

utasítás2

utasítás3

utasítás4

Aszinkron megszakítás

Hiba

Csapda

Elvetés

Page 78: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Fogalmak

Megszakítási vonal

Egy (vagy több) CPU vezérlő busz vezeték

Megszakítási kérelem (IRQ)

A megszakítások egész számokkal (0-255) azonosíthatók

Lehet prioritásuk

Programozható megszakítás vezérlő (PIC, APIC)

Azonosítja a megszakítás forrását, aktiválja a megszakítási vonalat, kezeli prioritásokat

Számítógép architektúrák 78

Page 79: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Fogalmak

Megszakítási rutin (ISR)

Az a programrész, amely megszakítási kérelem esetén aktiválódik, kezeli a speciális helyzetet

„Hívás nélküli” alprogramhoz hasonlít

Kontextus

Ahhoz, hogy folytatni tudjuk a „normál” végrehajtást a kivételkezelés után először el kell menteni, majd vissza kell állítani az eredeti környezetet, regisztertartalmakat

Számítógép architektúrák 79

Page 80: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Fogalmak

Maszkolás

Egyes megszakítási kérelmek figyelése kikapcsolható

Egyszerre, globálisan a processzorban

Külön-külön, a PIC-ben lévő IMR segítségével

Vannak nem maszkolható megszakítások (NMI)

Nested interrupt („fészkelt megszakítás”)

Megszakítási rutint megszakító újabb IRQ

Megszakítás megszakítása

Számítógép architektúrák 80

Page 81: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Megszakításkezelés

Számítógép architektúrák 81

Utasítás beolvasás

Utasítás dekódolás

Utasítás végrehajtás

Kontextus mentés

Eszköz azonosítás

Rutin (ISR) keresés

Rutin (ISR) végrehajtás

Kontextus visszaállítás

NMI?igen

nem

igen

nem

igen

nem

Maszk tilt?

Megszakítás?

Page 82: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Megszakításkezelési technikák

Vektoros megszakításkezelés

Megszakítási vonal aktiválás

A megszakítás kérő azonosítja magát

Buszrendszeren egyedi kódot/címet küld

ISR címek egy tömbben

Lekérdezéses (polling) megszakításkezelés

Megszakítási vonal aktiválás

A CPU sorozatos lekérdezésekkel kideríti kinek van megszakítási igénye

Számítógép architektúrák 82

Page 83: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Megszakításkezelési technikák

Számítógép architektúrák 83

ISR 1 címe

vekt

or…

ISR n címe

ISR 1 programkódja

ISR n programkódja

megszakítás lekérdező

eljárásprogramkódja

ISR 1 programkódja

ISR n programkódja

IRQ n IRQ

Vektoros megszakításkezelés Lekérdezéses megszakításkezelés

Page 84: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Input/Output

Kapcsolat a külvilággal

Hardveres I/O interfészek

Szoftver interfész (device driver)

Perifériás eszközök

Számítógép architektúrák 84

Periféria 1 Periféria 2

Külső buszok

Processzor Memória

Rendszer busz

I/O interfészek

buffer buffer

Page 85: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Input/output interfészek

Összeköttetés a CPU és a perifériák között

Címezhető eszközök

Memóriára leképezett I/O (MMIO)

Portra leképezett I/O (PMIO)

Különböző adatsebesség

Különböző fizikai jelek

Soros illetve párhuzamos átvitel

Az eszközvezérlés nem a CPU feladata

Számítógép architektúrák 85

Page 86: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

I/O technikák

Programozott I/O (PIO)

Speciális I/O utasításokkal (in, out)

A program írja le mikor kell a perifériához fordulni (függetlenül annak állapotától)

Utasításonként csak egy szó átvitele az I/O buffer és a CPU regiszterei között

I/O adat és címregiszterek a CPU-ban

Sok CPU időt felemészt az eszközök állapotának sorozatos elkérdezése

Számítógép architektúrák 86

Page 87: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

I/O technikák

Megszakítás vezérelt I/O

A periféria megszakításokkal jelez a CPU-nak

Ha van új input vagy

Ha kész van az outputtal

A CPU nem figyel folyamatosan

Közben tud mással foglalkozni

Az adatmozgás a CPU és az I/O modul között történik

Számítógép architektúrák 87

Page 88: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

I/O technikák

Direkt memória hozzáférés (DMA)

Külön vezérlő révén közvetlen RAM-I/O kapcsolat (RAM-RAM, RAM-I/O)

A CPU kéri fel a DMA vezérlőt a műveletre

Ha a DMA vezérlő kész van megszakítást kér

CPU nem vesz részt az adatmozgatásban

Blokkos átviteli mód

I/O processzor (IOP)

DMA kiterjesztése nagyobb önállósággalSzámítógép architektúrák 88

Page 89: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Számítógép architektúrák 89

Buszrendszerek

Párhuzamos

ISA

PCI

ATA (ATAPI, UATA, IDE)

VESA Local Bus (VLB)

SCSI

AGP

Soros

I2C

PCI Express

Serial ATA

USB

Serial Attached SCSI

FireWire

Page 90: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

PCI busz

Peripheral Component Interconnect

Párhuzamos belső busz

Sínszélesség: 32 vagy 64 bit

Átviteli sebesség: 133-533 MB/s

Fejlesztés: 1992-2002

Külön vezérlőáramkör szükséges

Számítógép architektúrák 90

Forrás: en.wikipedia.org/wiki/Conventional_PCI

Page 91: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

PCIe busz

Peripheral Component Interconnect Express

Soros belső busz

1 link 1, 2, 4, 8, 16 vagy 32 sávból áll

Átviteli sebesség: 250-63000 MB/s (v5.0)

Fejlesztés: 2003-

Minden eszköznek külön link (nem osztoznak,

switching)

Számítógép architektúrák 91

Forrás: en.wikipedia.org/wiki/PCI_Express

Page 92: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

(Parallel) ATA busz

(Parallel) AT Attachment

Párhuzamos belső busz

„Szinonimák”: PATA, ATAPI, UATA, IDE, EIDE

Átviteli sebesség: 3,3-166 MB/s

Fejlesztés: 1986-2003

HDD, FDD, CD és DVD meghajtó csatlakoztatás

Számítógép architektúrák 92

Forrás: en.wikipedia.org/wiki/Parallel_ATA

Page 93: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

SATA busz

Serial ATA

Soros belső busz

Pont-pont kapcsolat

Átviteli sebesség: 150-1969 MB/s (v3.2)

Fejlesztés: 2000-

Hot swapping

HDD, SSD, CD és DVD meghajtó csatlakoztatás

Számítógép architektúrák 93

Forrás: hu.wikipedia.org/wiki/Serial_ATA

Page 94: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

USB busz

Universal Serial Bus

Soros külső busz

Plug-and-Play, elosztható (hub)

Átviteli sebesség: 0,18-5000 MB/s (v4.0)

Fejlesztés: 1996-

Csatlakozók: standard-A, standard-B, mini-A, mini-B, micro-A, micro-B

Számítógép architektúrák 94

Forrás: en.wikipedia.org/wiki/USB

Page 95: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Vezérlő hub-ok

Az alaplap fontos chip-jei

Northbridge (memóriavezérlő hub)

Southbridge (I/O vezérlő hub)

Számítógép architektúrák 95

CPU

North-bridge

South-bridge

AGP RAM

BIOS PCI IDE USB LAN I/O

Front-side bus (FSB)

Page 96: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Eszközmeghajtó

Device Driver: szoftver interfész a hardverhez

Eszköztípusok

Karakteres, blokkos, hálózati, egyéb

A programok hardvertől független rendszerhívásokat alkalmaznak

open, read, write, close, …

Az eszközmeghajtók „töltik meg” ezt konkrét hardver specifikus tartalommal

Számítógép architektúrák 96

Page 97: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Adattárolás

Operatív memória

Cache

Háttértárak

Page 98: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Tárolók osztályzása

Írhatóság szempontjábólCsak olvasható, olvasható-írható

Hierarchiabeli helye szerintElsődleges, másodlagos, harmadlagos

Tárolási közeg szerint Félvezető, mágneses, optikai

Adatmegőrzés szerintMegmaradó, nem megmaradó

Elérés szerintSoros elérésű, tetszőleges elérésű

Számítógép architektúrák 98

Page 99: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Elsődleges memória

A processzor és a futó programok által aktívan használt tároló

Gyors elérésű

Nem maradandó memória

Méret erősen korlátos

Ide tartoznak

Regiszterek

Gyorsítótárak

Operatív tár / memória

Számítógép architektúrák 99

Page 100: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Másodlagos memória

Háttértároló

Az elsődleges memória „kiterjesztése”

Nagy tároló kapacitás

Kisebb elérési sebesség

Maradandó tárolás

Ide tartoznak

HDD, SSD

CD-, DVD-meghajtó

Memóriakártya

Számítógép architektúrák 100

Page 101: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Harmadlagos memória

Többnyire eltávolítható adathordozókra épít

Robotikus eszközök csatlakoztatják a kívánt tároló médiumot („wurlitzer”)

Ritka hozzáférés

Óriási tároló kapacitás

Cél hosszú távú archiválás

Ide tartoznak

Mágnesszalagos tárolók

Optikai tárolók

Számítógép architektúrák 101

Page 102: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Félvezető memóriák

Read-Only Memory (ROM)

Gyártás során kerül bele a tartalom, ami később nem változtatható

Tartalmat sokáig megőrzi, tápfeszültség hiányában is

Programmable Read-Only Memory (PROM)

Gyártás után „üres”. Speciális eszközzel egyszer „beégethető” a tartalom

Az írás folyamata lassú (a RAM-hoz képest)

Számítógép architektúrák 102

Page 103: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Félvezető memóriák

Erasable Programmable ROM (EPROM)

Erős UV fénnyel (lassan) törölhető a tartalom

Majd ismét újraírható

Electrically Erasable Programmable ROM (EEPROM)

Elektronikusan, bájtonként törölhető tartalom

Flash memória

Speciális továbbfejlesztett EEPROM

Blokkonként (gyorsabban) törölhetőSzámítógép architektúrák 103

Page 104: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Félvezető memóriák

Random Access Memory (RAM)

Véletlen/közvetlen elérés

Elérési idő nem függ az elhelyezkedéstől

Írható/olvasható tetszőleges számban

Elveszti a tartalmát tápfeszültség hiányában

Nagy írási/olvasási sebesség

Static Random Access Memory (SRAM)

Frissítés nélkül is megtartja a flip-flipokban a tartalmat a tápellátás megszűnéséig (pl. cache)

Számítógép architektúrák 104

Page 105: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Félvezető memóriák

Dynamic Random Access Memory (DRAM)

Rendszeresen frissíteni kell, hogy a kondenzátor révén tárolt információ megmaradjon

SRAM-nál lassabb (pl. operatív tár)

Olyan gyorsan válaszol ahogy tud

Synchronous Dynamic RAM (SDRAM)

Órajellel szinkronizált válasz

Gyorsabb az aszinkron DRAM-nál (pipelineműködés)

Számítógép architektúrák 105

Page 106: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Félvezető memóriák

Double Data Rate (DDR)

Gyorsított SDRAM

Az órajel fel és leszálló élére is szinkronizál

DDR2, DDR3, DDR4

Egyre nagyobb sebesség

Egyre nagyobb adatsűrűség

Egyre kisebb feszültség

Nem kompatibilis DIMM (SDRAM, DDR, DDR2, DDR3, DDR4)

Számítógép architektúrák 106

Page 107: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Gyorsítótár

Egyes eszközök rendszeresen adatot cserélnek

Az eszközök adatátviteli sebessége nagyon eltér

A lassú eszköz miatt a gyors is „lelassul”

Pl. a CPU kb. 10-szer gyorsabb a RAM-nál

CPU cache, GPU cache, Web cache, DNS cache

Megoldási ötletKöztes tároló beiktatása (cache)

Gyorsabb, mint a lassú eszköz (SRAM, közeli)

Magas ára miatt teljesen nem helyettesíti a lassút

Létjogosultság: lokalitási elvek

Számítógép architektúrák 107

Page 108: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Gyorsítótár

Térbeli lokalitás elve

Ha egy program hivatkozik egy memóriacímre (adat vagy utasítás), akkor nagy valószínűséggel hamarosan hivatkozik a szomszédos címekre isSzekvenciális végrehajtás, tömbök

Időbeli lokalitás elve

Ha egy program hivatkozik egy memóriacímre, akkor nagy valószínűséggel hamarosan ismét hivatkozik ráCiklusok

Számítógép architektúrák 108

Page 109: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Gyorsítótár

Leggyakrabban használt adatok tárolása

Kisebb tárolókapacitás, gyorsabb elérés (SRAM), mint az operatív memória esetén

Átlátszóak a felhasználó számára

Asszociatív (CAM) memóriát tartalmazhat

CPU cache

Többszintű: L1, L2, L3 cache

On-chip vagy off-chip

Számítógép architektúrák 109

Page 110: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Gyorsítótár felépítése

A tárolás egysége a „Sor” (vagy „Blokk”)

A Sorhoz „Tag” (toldalék) és „Flags” mezők

A Tag a Blokk főtárbeli címéhez kötődik

A Blokk a főtár egy részének a másolata

Számítógép architektúrák 110

Cache

Tag F Blokk

128 … DEF

131 … MNO

129 … GHI

RAM

ABC 127

DEF 128

GHI 129

JKL 130

MNO 131

CPU

Page 111: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A cache működése

A processzor a szükséges adatot a cache-ben keresi (átadja a tárcímet a cache vezérlőnek)

Ha az adott cím el van tárolva a Tag-ben (cache hit), akkor válaszol a Blokk tartalma alapján

Ha a cím nincs eltárolva (cache miss), akkor beolvassa a megfelelő területet a főtárból, dönt arról, melyik sorba mentse és elmenti (felülírva valamelyik cache sort), majd válaszol a Blokk tartalma alapján

Számítógép architektúrák 111

Page 112: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A cache működése

Asszociativitás: Egy adott memóriacímen lévő adat hány cache sorban tárolódhat.

Közvetlen leképezésű (direct-mapped)

Egy RAM címről csak 1 sorra történhet leképezés.

Teljesen asszociatív (fully associative)

Bármely címről származó adat bármely cache sorban.

Csoport asszociatív (N-way set-associative)

Egy RAM címről néhány sor egyikébe kerül az adat.

Speciális esetek: közvetlen leképezés, teljes associatív

Számítógép architektúrák 112

Page 113: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A cache működése

Helyettesítési szabályok felülírási igény esetén

Véletlengyors, de nem hatékony

Legkevésbé használt (LRU)hatékony, de komplikált

Nem legutóbb használtHatékony és egyszerű

Számítógép architektúrák 113

0 0 1 0

0 3 1 2

Page 114: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A cache működése

Az írás művelete során figyelni kell a főtár és a gyorsítótár tartalmának konzisztenciájára

Megoldások

Közvetlen írás

Visszaírás

Közvetlen írás (write through)

Gyorsítótár írásával egyidejűleg a főtár is íródik

Az írást a cache nem gyorsírja

Számítógép architektúrák 114

Page 115: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A cache működése

Visszaírás (write back)

Gyorsítótár minden írás esetén módosul

A Tag vezérlő részében ezt jelezzük („dirty”)

Ha a cache adott sorát felül kell írni újabb olvasási művelet miatt, és a sor „dirty” visszaírjuk a tartalmát a főtárbaMajd megtörténik a sor felülírása az újjal

Többprocesszoros rendszerekben probléma a külön cache-ek miatt. Probléma DMA esetén is.

Számítógép architektúrák 115

Page 116: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A cache működése

Számítógép architektúrák 116

igen

nem

Igény?

Felülírandó sor keresés

Válasz az adattal

nem

igen

igenigen

nem nem

Cache hit? Cache hit?

„Dirty”? „Dirty”?

Alsóbb memória olvasás a

választott sorbaStátusz:

nem „dirty”

Felülírandósor visszaírása

Alsóbb memória olvasás a

választott sorba

Felülírandó sor keresés

Felülírandósor visszaírása

olvasás írás

Új adat írása a választott blokkba

Státusz: „dirty”

Page 117: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A cache jellemzői

A gyorsítótár mérete

A Blokk mérete (pl. 64 byte)

Egy Blokk kikeresésének ideje

Aktualizálási idő (visszaírásnál)

Helyettesítési stratégia (sor felülírásnál)

Találati arány (hit rate)

Általában 90% feletti

Méretfüggő, helyettesítés függő, …

Számítógép architektúrák 117

Page 118: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A címek felépítés

Cím = Tag & Index & Offset

Index: azonosítja a cache sor csoportot (set)

2N csoport esetén N bit

Offset: a bájt pozíciója a blokkban

2S méretű blokk esetén S bit

Tag: a RAM cím további (felső) bitjei

L bites cím esetén L-N-S bit

Példa: Pentium 4, 8kB 4-utas L1 cache, 64B blokk log2(8192/64/4)=5 index bit; log2(64)=6 offset bit; 32-5-6=21 tag bit

Számítógép architektúrák 118

Page 119: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Cím:

• 13 bites címzés• 128B cache méret• csoport asszociatív

(4-utas) cache• 8B blokk méret• „write-back” írás• „nem a legutóbbi”

helyettesítés

• Cache hit? Mi van a címen? Felülírható sor? Kell menteni?Számítógép architektúrák 119

Címzés példa

Tag Val

idD

irty

Re

cen

t Blokk

000 001 010 011 100 101 110 111

1D 1 0 1 2E 13 3D D1 4F FF 01 A2

2E 1 1 0 33 8B CA 4F 89 67 30 12

FA 0 0 0 12 36 77 B6 0C E0 55 75

20 1 1 0 02 00 00 00 43 C0 3E E1

56 1 1 0 FF FF FF FF 24 E4 AA DA

F2 0 0 0 23 43 E4 1A 4D 43 02 35

DC 1 1 0 3E 18 48 45 4C 4C 4F 00

03 1 0 1 48 42 C3 C5 23 40 30 12

… . . . ... ... … ... … … … …

cso

po

rt 0

0

tag index offset

cso

po

rt 0

1

1 1 0 1 1 1 0 0 0 1 0 1 01 1 0 1 1 1 0 0 0 1 0 1 0

Page 120: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Cache hierarchia

Számítógép architektúrák 120

processzor

core

L1utasítás

L1adat

L2

core

L1utasítás

L1adat

L2

L3

processzor

core

L1utasítás

L1adat

L2

core

L1utasítás

L1adat

L2

L3

Fő memória

>10kB

>100kB

>1MB

>1GB

Page 121: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Cache hatása a programokra...

ARRAY = (double*)malloc(SIZE*sizeof(double));

N_Rep = 1000000000/SIZE;

for(j=0; j<N_Rep; j++)

for(i=0; i<SIZE; i++)

sum += ARRAY[i];

...

Számítógép architektúrák 121

Ha az adat elfér a cache-ben,akkor a program gyorsabb!

Page 122: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Cache hatása a programokra

Sorfolytonos mátrix kezeléseint a[N][M];

Számítógép architektúrák 122

Sorról-sorra:for(i=0;i<N;i++)

for(j=0;j<M;j++)

sum+=a[i][j];

Oszlopról-oszlopra:for(j=0;j<M;j++)

for(i=0;i<N;i++)

sum+=a[i][j];

Nagy mátrix esetén: Gyakori cache miss Lassú futás

Page 123: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Háttértár

Problémák

Az operatív tár nem elég nagy

Kikapcsoláskor a RAM tartalma elvész

Megoldás

Háttértár: lassabb elérés, de nagyobb kapacitás

Tárolási elv

Mágneses: merevlemez (HDD)

Elektronikus: szilárdtest-meghajtó (SSD)

Optikai: CD, DVD, Blu-ray

Számítógép architektúrák 123

Page 124: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Merevlemez

Winchester, Hard Disc Drive (HDD)

Mágnesezhető, forgó lemezeken tárolt adat

Lemezenként 2 író/olvasó fej

Tulajdonságai

Tárolókapacitás: <8TB

Írási/olvasási sebesség: 1MB/s – 100MB/s

Fordulatszám: 5400 – 15000 rpm

Csatoló felület: ATA, SATA, SCSI, USB

Lemez gyorsítótár mérete: 1MB – 64MB

Számítógép architektúrák 124

Page 125: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Adattárolás merevlemezen

A HDD több tároló lemezt tartalmazhat

A lemezek felülete koncentrikus sávokra osztott

Az egymás alatti lemezeken lévő azonos sugarú sávok alkotják a cilindert

A sávok szektorokra vannak osztva

Ez az adattárolás legkisebb egysége

Klaszter a szektorokból álló folytonos terület

Minden író/olvasó fej egyszerre mozog

egy adott pillanatban egy cilinderen helyezkednek el

Számítógép architektúrák 125

Page 126: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Adattárolás merevlemezen

Átlagos hozzáférési idő

Az első bájt (a szektorban) „drága” a többi „olcsó”

Számítógép architektúrák 126

szektorsáv

fej

lemez

𝑇𝑎𝑐𝑐𝑒𝑠𝑠 = 𝑇𝑠𝑒𝑒𝑘 + 𝑇𝑟𝑜𝑡𝑎𝑡𝑖𝑜𝑛 + 𝑇𝑜𝑡ℎ𝑒𝑟

𝑇𝑎𝑐𝑐𝑒𝑠𝑠 ≈ 𝑇𝑠𝑒𝑒𝑘 + 𝑇𝑟𝑜𝑡𝑎𝑡𝑖𝑜𝑛 (≈ 10 𝑚𝑠)

Page 127: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Szektor

Hagyományos szerkezet512 bájtos szektor

Advanced Format (AF)4K native

Számítógép architektúrák 127

512 bájt adat

szektorszektor szektor szektor szektor szektor szektor szektor

rés szinkron cím hibajavító

sáv

4096 bájt adat

Page 128: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Szektor hatása programokra...

#define SIZE 2048

char BUFFER[SIZE];

out=open("output.txt",O_WRONLY);

write(out, BUFFER, SIZE);

close(out);

...

Számítógép architektúrák 128

Szektor méretnél kevesebbet fájlba írni nem hatékony!

Page 129: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Bufferelt adatfolyam

Az output adatfolyamokat gyakran a rendszer buffereli és csak később blokkosan írja ki.

Kevesebb rendszerhívás, kevesebb lemez művelet, gyorsabb program

while(i<100000){

fprintf(f,”x”);

sleep(t);

i++;

}

Számítógép architektúrák 129

Page 130: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Adatelérés merevlemezen

Hogyan hivatkozható egy terület a HDD-n?

CHScilinder-fej-szektor hármassal (régi)

LBAlogikai blokk címzéssel (lineáris, új)

Konverzió (egyszerű esetben):LBA = (C*Nfej+H)*Nszektor+(S-1)

Lemezvezérlő foglalkozik a logikai és fizikai cím leképezéssel

Számítógép architektúrák 130

Page 131: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Sávok szektorszáma

Régi HDD esetén

Minden sávban azonos számú szektor

Külső szektorok adatsűrűsége sokkal kisebb, mint a belsőké (kihasználatlanság)

Modern HDD esetén

Zone Bit Recording (ZBR)

Szektorok adatsűrűsége közel azonos

Külső sávokban több szektor, mint a belsőkben

Címzés bonyolultabb Számítógép architektúrák 131

Page 132: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

SSD

Szilárdtest-meghajtó (Solid State Drive)

Mozgó alkatrész nélküli félvezető memória

Blokkos adatelérés

SATA, SCSI, USB csatlakozás

Előnyei a HDD-vel szemben

Gyorsabb adatelérés

Egyenletes adathozzáférés

Kisebb zaj, fogyasztás és hőtermelés

Mechanikai megbízhatóság

Számítógép architektúrák 132

Page 133: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Háttértár magasabb szinten

Formázás

Alacsony szintű (szektor szerkezet kialakítás)

Magas szintű (fájlrendszer)

Particionálás

HDD kisebb logikai egységre bontása

MBR, GPT kialakítás

Fájlrendszerek

FAT32, NTFS

ext2, ext3, ext4

Számítógép architektúrák 133

Page 134: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

MBR

Master Boot Record

LBA 0

Boot kód (pl. GRUB) + Partíciós tábla

Max 4 partíció és egyenként max 2 TB

4 elsődleges partíció

3 elsődleges partíció + 1 kiterjesztett partíció (utóbbin további logikai partíciók lehetnek)

BIOS indítja a betöltőt

a Power On Self Test után

Számítógép architektúrák 134

Page 135: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

GPT

GUID Partition Table

LBA 0: MBR megőrzés;

LBA 1: elsődleges GPT fejrész

LBA 2-33: elsődleges GPT partíciós tábla

Utolsó szektorok: biztonsági tartalék

Másodlagos GPT fejrész és partíciós tábla

UEFI szabvány (BIOS lecserélés)

Akár 128 partíció, max lemezméret 9,4 ZB

Számítógép architektúrák 135

Page 136: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

FAT fájl rendszer

Számítógép architektúrák 136

Fájlnév Attribútumok Kezdő klaszter

Alma.txt Bla-bla 6

Kutya.txt Bla-bla 10

0 1 2 3 4 5 6 7 8 9 10

8 EOF 7 4 EOF 50 MBR

1 FAT 1

2 FAT 2

3 Gyökér

4 „gyümölcs ”

5 „állat.”

6 „Az alma ”

7 „finom ”

8 „szerintem.”

9

10 „Emlős ”

Gyökérkönyvtár bejegyzései

File Allocation TableMerevelemez

Page 137: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Linux fájl rendszerek

Pl.: Ext2, Ext3, Ext4

Fájl tárolása

Könyvtár tárolás

Számítógép architektúrák 137

attribútumok mutató fájltartalom

a lemezen

fájl név inode ID

könyvtári bejegyzés inode adat blokk

attribútumok mutatókönyvtár név inode ID

könyvtári bejegyzés inode adat blokk

fájl1 inode ID 1

fájl2 inode ID 2

fájl3 inode ID 3

fájl4 inode ID 4

Page 138: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Linux fájl rendszerek

Könyvtár hierarchia

Számítógép architektúrák 138

könyvtáribejegyzés

inode fájl adat

inode tábla

sys

MBR cilinder csop. cilinder csop. cilinder csop. cilinder csop. cilinder csop. cilinder csop.

partíció

adat szektorok

Page 139: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

inode

Számítógép architektúrák 139

attr

ibú

tum

ok

méret

eszköz

felhasználó

csoport

fájl mód

időbélyegek

linkszám

adat

blo

kk m

uta

tók

direkt mutatók(12 db)

simpla indirekt

dupla indirekt

tripla indirekt

inode adat blokkok

Page 140: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

RAID

Redundant Array of Independent Discs

Adatelosztás vagy replikálás több lemezen

A technológia célja

Adatbiztonság növelés

Adatátviteli sebesség növelés

Több „szint” (RAID 0-6)

Akár hierarchikusan is (RAID 1+0, RAID 5+0)

Szoftveres vagy hardverrel támogatott megvalósítás

Számítógép architektúrák 140

Page 141: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

RAID példák

Számítógép architektúrák 141

A1

A3

A5

A7

A2

A4

A6

A8

RAID 0 (összefűzés)

A1

A2

A3

A4

RAID 1 (tükrözés)

Lemez 1 Lemez 2

Lemez 1 Lemez 2

A1

A2

A3

A4

Fizikai kapacitás: 2 egységLogikai kapacitás: 2 egységSebesség (R/W): 2/2 egységHibatűrés: nincs

Fizikai kapacitás: 2 egységLogikai kapacitás: 1 egységSebesség (R/W): 2/1 egységHibatűrés : van

Page 142: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

RAID példák

Számítógép architektúrák 142

Fizikai kapacitás: 3 egységLogikai kapacitás: 2 egységSebesség (R/W): 2/1 egységHibatűrés: van (lassú)

Fizikai kapacitás: 3 egységLogikai kapacitás: 2 egységSebesség (R/W): 2/1 egységHibatűrés : van (gyors)

AP

BP

CP

DP

A1

B1

C1

D1

A2

B2

C2

D2

RAID 4 (paritás lemez)

Lemez 1 Lemez 2 Lemez 3

RAID 5 (forgó paritás)

AP

B2

C2

DP

A1

B1

CP

D1

A2

BP

C1

D2

Lemez 1 Lemez 2 Lemez 3

Page 143: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

RAID példák

Számítógép architektúrák 143

RAID 1+0 (tükrözés + összefűzés)

A1

A3

A5

A7

Lemez 1 Lemez 2

A1

A3

A5

A7

Fizikai kapacitás: 4 egységLogikai kapacitás: 2 egységSebesség (R/W): 2/2 egységHibatűrés : van

A2

A4

A6

A8

Lemez 3 Lemez 4

A2

A4

A6

A8

Page 144: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Memória hierarchia

Regiszter

L1 cache

L2 cache

L3 cache

Memória

Lemez

Harmadlagos tár

Számítógép architektúrák 144

ns

s

ms

s

Elérési idő

Page 145: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Memória hierarchia

Regiszter

L1 cache

L2 cache

L3 cache

Memória

Lemez

Harmadlagos tár

Számítógép architektúrák 145

kB

MB

GB

TB

EB

B

Tároló kapacitás

Page 146: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Intel x86 architektúra

Processzor felépítés

Regiszterkészlet

Memóriakezelés

Page 147: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Kezdetek

Az Intel 1976-78 között fejlesztette ki az „új” Intel 8086 névre hallgató processzorát

Később ezt fokozatosan tovább fejlesztették Intel 80186 (1982)

Intel 80286 (1982)

Intel 80386 (1986)

Intel 80486 (1989)

…, a folyamat máig tart

Az új processzorok visszafelé kompatibilisek

Ma a processzorcsaládra x86 néven hivatkozunk

Számítógép architektúrák 147

Page 148: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Memória szegmentáció

A memória logikai részekre van osztva

Kód szegmens

Adat szegmens

Verem szegmens

A címzést külön regiszterek segítik (CS, DS, SS, ES)

Címzés: szegmens kezdőcím + eltolás

Memóriakezelés

Valós-, védett-, virtuális-, hosszú mód

Számítógép architektúrák 148

Page 149: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Memória szegmentáció

Valós mód

8086-ban csak ez van

20 bites címbusz (1MB)

Szegmens méret 64kB (16 bit)

Minden memóriacím elérhető korlátozás nélkül

Ilyen módban indul a processzor

Lineáris cím = szegmenscím*16 + eltolás

Lineáris cím = fizikai cím

Számítógép architektúrák 149

Szegmens kezdőcím (16 bit)

Eltolási cím (16 bit)

Lineáris kezdőcím (20 bit)

+

Page 150: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Memória szegmentáció

Védett mód

80386 vezeti be

Korlátozott memóriahozzáférés

Címtér 32 bites (4GB)

Virtuális memória támogatás

Lineáris cím (32) = szegmenscím (32) + offset (16/32)

Lineáris cím lapozás fizikai cím

Virtuális mód (látszólagos valós mód 80386-tól)

Hosszú mód (64 bites, nincs szegmentálás)

Számítógép architektúrák 150

Page 151: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

x86 regiszterkészlet

Számítógép architektúrák 151

AH AL

EAX31 15 7 0

EBX

ECX

EDX

ESI SI

EDI DI

EBP BP

ESP SP

CS ESDS FSSS GS

EIP IP

EFLAGS FLAGS

AX

Page 152: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

x86 regiszterkészlet

Fő regiszterek (általános célú regiszterek, GPR)

EAX Elsődleges munka regiszter (accumulator),

szorzás, osztás

EBXMunka regiszter, bázis mutató DS-ben

ECXMunka regiszter, (ciklus)számláló

EDXMunka regiszter, input/output, szorzás, osztás

Számítógép architektúrák 152

Page 153: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

x86 regiszterkészlet

Index regiszterek (általános célú regiszterek, GPR)

ESI

Sztring műveletek forrás indexe, DS regiszterrel

EDI

Sztring műveletek cél indexe, ES regiszterrel

ESP

Verem tetején lévő elemet címzi, SS regiszterrel

EBP

Lokális változókhoz, paraméterekhez, SS regiszterrel

Számítógép architektúrák 153

Page 154: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

x86 regiszterkészlet

Szegmens regiszterek

CS

Kód szegmens kezdőcíme, IP ebben címzi az utasítást

DS

Adat szegmens kezdőcíme (statikus változók)

SS

Verem szegmens kezdőcíme, ESP és EBP használja

ES, FS, GS

Extra adat szegmens, EDI alap szegmense az ES

Számítógép architektúrák 154

Page 155: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

x86 regiszterkészlet

EFLAGS regiszter

Állapot bitek

Vezérlő bitek

Rendszer bitek

Számítógép architektúrák 155

31 30 29 28 27 26 25 24

0 0 0 0 0 0 0 0

23 22 21 20 19 18 17 16

0 0 ID VIP VIF AC VM RF

15 14 13 12 11 10 9 8

0 NT IOPL OF DF IF TF

7 6 5 4 3 2 1 0

SF ZF 0 AF 0 PF 1 CF

Page 156: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

x86 regiszterkészlet

Utasítás számláló

IP (Instruction pointer)

CS regiszter révén a kód szegmensben található utasításokat címzi

Minden „fetch-execute” ciklus során inkrementálódik az adott utasítás hosszával (kivéve vezérlésátadás)

Egyéb regiszterek

Vannak további működést segítő regiszterek

Programozó elől rejtettek

Számítógép architektúrák 156

Page 157: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

x87 regiszterkészlet

Lebegőpontos egység (matematikai társprocesszor)

8 darab 64 (80) bites regiszter (ST(0)-ST(7))

Veremszerű működés

Dupla pontosságú lebegőpontos reprezentáció

Regiszterenként 2 további bit

00 érvényes, 01 nulla, 10 speciális (Inf, NaN), 11 üres

16 bites állapot regiszter (pl. OE, UE, ZE, TOS, B, DE)

16 bites vezérlő regiszter (pl. RC, PC)

48 bites programszámláló és adat mutatóSzámítógép architektúrák 157

Page 158: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Input-Output

Portra leképezett I/O (PMIO)

16 bites I/O címek (0h-FFFFh)

Külön utasítások (in, ins, out, outs, stb.)

Egy eszközhöz több port is tartozhat

Adat, Utasítás, Állapot

I/O porton elérhető fontosabb eszközök:

DMA vezérlő, programozható megszakítás kezelő (8259A), időzítő (8254), billentyűzet (8042), valós idejű óra, matematikai társprocesszor, PATA vezérlő, stb.

Linux: /proc/ioports

Számítógép architektúrák 158

Page 159: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Modern architektúrák

Futószalag végrehajtás

Párhuzamos végrehajtás

Szuperskalár és vektor processzorok

Page 160: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

„Klasszikus” architektúrák

In-order (soros) végrehajtás (Neumann)

A „hagyományos” architektúrán alapuló rendszerek teljesítmény növelésének lehetőségei

CPU órajel frekvencia növelés

Társprocesszor alkalmazás (FPU)

Közvetlen memória hozzáférés (DMA)

Nagyobb szóméret (nagy címtér, nagy regiszter)

Gyorsítótár (cache) használat

Gyorsabb buszrendszer Számítógép architektúrák 160

Page 161: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Dinamikus órajel szabályozás

Az órajel frekvencia növelés több hő termelését és magasabb fogyasztást jelent (korlátozó tényező)

Intel SpeedStep és AMD PowerNow!Ha a mag „üresjáratban” van az órajele és a mag feszültsége csökken (energiatakarékosság)

Intel Turbo Boost és AMD Turbo CoreEgy mag kaphat gyorsabb órajelet ha a többi mag nem terhelt (azaz határon belüli a hőtermelés)

Számítógép architektúrák 161

Page 162: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Lebegő pontos egység

Floating-Point Unit (FPU), matematikai társproc.

Pl. Intel x87

Az egész és a lebegőpontos műveletek architekturálisan eltérnek

Régen társprocesszor, ma CPU-ba integrált

Külön verem struktúrájú regiszter készlet

ST(0)-ST(7)

Külön utasításkészlet

Pl. FADD, FMUL, FDIV, FSQRT, FSIN, …

Számítógép architektúrák 162

Page 163: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

DMA és Cache

Közvetlen memória hozzáférés (DMA)

Nem minden memóriaműveletet irányít a CPU

CPU nélküli közvetlen RAM-RAM vagy RAM-I/O blokkos adatmozgatás

Gyorsítótár (cache)

Átmeneti tároló a CPU és a RAM között

Legutóbb/gyakran használt adatokról másolat tárolás

Gyors elérési idő

Kis tároló kapacitás

Számítógép architektúrák 163

Page 164: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

x86-64 architektúra

64 bites általános célú regiszterek (rax, rbx, rcx, rdx, rbp, rsp, rip, rsi, rdi, r8-r15)

Visszafelé kompatibilis az x86-tal (IA-32-vel)

64 bites virtuális címek (implementációban 48)

48 bites fizikai címzés (256TB) (bővíthető 52 bitig)

Nincs memória szegmentáció

Működési módok

Long mode, Legacy mode (real, protected, virtual)

Számítógép architektúrák 164

rax / r8al / r8beax / r8d ax / r8w

Page 165: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Párhuzamosság

Bit szintű párhuzamosságAz adat bitjein egyszerre hajtunk végre egy műveletet

Adat szintű párhuzamosság (DLP)Több adaton azonos időben ugyanaz az utasítás

Utasítás szintű párhuzamosság (ILP)Az assembly utasítások egymás „mellett” futhatnak

Taszk (szál) szintű párhuzamosság (TLP)Utasítások csoportjai egyszerre hajtódnak végre

Folyamat szintű párhuzamosságTöbb folyamat fut egyszerre (multiprogamozott OS)

Számítógép architektúrák 165

Page 166: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Flynn-féle osztályozás

Osztályzás párhuzamosság szempontjából

SISD (Single Instruction Single Data)

pl. klasszikus korai egyprocesszoros PC-k

SIMD (Single Instruction Multiple Data)

pl. vektroprocesszorok, GPU

MISD (Multiple Instruction Single Data)

pl. hibatűrő rendszerek (űrrepülőgép)

MIMD (Multiple Instruction Multiple Data)

pl. többmagos- és szuperskalár processzorok

Számítógép architektúrák 166

Page 167: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Utasítás-szintű párhuzamosság

Utasítás-szintű párhuzamosság (ILP) technikái

Futószalag-elvű végrehajtás (pipeline)

Sorrenden kívüli végrehajtás (OoOE)

Regiszter átnevezés

Spekulatív végrehajtás

Elágazás becslés

Szuperskalár végrehajtás

Nagyon hosszú utasításszó (VLIW) használat

Számítógép architektúrák 167

Page 168: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Egy utasítás végrehajtás

Fetch-execute ciklus

Minden egyes utasítás végrehajtása több fázisra bontható:

Utasítás beolvasás (IF)

Utasítás dekódolás (ID)

Operandus beolvasás (OF)

Végrehajtás (EX)

Eredmény visszaírás (WB)

Egy utasítás több órajel alatt hajtódik végre

Számítógép architektúrák 168

Page 169: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Pipelining

Futószalag-elvű utasítás végrehajtás

Több utasítás végrehajtása is folyamatban lehet egyszerre, csak legyenek különböző fázisban

Egyes processzoroknál akár 30 fázis/utasítás

Egy utasítás végrehajtási ideje nem csökken

Viszont az egységnyi idő alatt végrehajtott utasítások száma (áteresztőképesség, throughput) növekszik

A program gyorsabban lefuthat

Számítógép architektúrák 169

Page 170: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Pipelining

Számítógép architektúrák 170

CPU idő[órajel]

pipeline fázis

IF ID OF EX WB

1. utasítás 1

2. utasítás 2 utasítás 1

3. utasítás 3 utasítás 2 utasítás 1

4. utasítás 4 utasítás 3 utasítás 2 utasítás 1

5. utasítás 5 utasítás 4 utasítás 3 utasítás 2 utasítás 1

6. utasítás 6 utasítás 5 utasítás 4 utasítás 3 utasítás 2

7. utasítás 7 utasítás 6 utasítás 5 utasítás 4 utasítás 3

8. utasítás 8 utasítás 7 utasítás 6 utasítás 5 utasítás 4

Elméleti utasítás végrehajtási idő: 5 órajel / utasításElméleti áteresztőképesség: 1 utasítás / órajel

Page 171: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Hazárd

A Neumann-féle szekvenciális végrehajtási elv

feltételezi, hogy minden utasítás végrehajtás befejeződik a következő megkezdése előtt

Pipeline processzorokra ez nem igaz

Hazárd: az a helyzet amikor ez problémát jelent

Típusai

Adat hazárd

Strukturális hazárd

Vezérlési hazárd

Számítógép architektúrák 171

Page 172: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Adat hazárd

Végrehajtás alatt álló utasítások ugyanazt az adatot használják/módosítják

RAW (Read After Write, adat függőség)• R3 R1 + R2• R4 R3 + R2

WAR (Write After Read, név függőség)• R3 R1 + R2• R2 R1 + R4

WAW (Write After Write, név függőség)• R3 R1 + R2• R3 R4 + R1

Számítógép architektúrák 172

Page 173: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Strukturális és vezérlési hazárd

Strukturális hazárd

Ha a processzor hardvere nem képes az utasításokat egyszerre végrehajtani

Pl. az egyik utasítás IF fázisban a másik OF fázisban egyszerre címezné a memóriát

Vezérlési hazárd

Elágazásnál a processzor nem tudja előre hol kell folytatni a vezérlést, azaz melyik utasítást olvassa be a futószalagra

Számítógép architektúrák 173

Page 174: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Hazárdok kezelése

Adat hazárd kezelésePipeline buborék

Operandus/eredmény továbbítás (bypassing)

Sorrenden kívüli végrehajtás (OoOE)

Regiszter átnevezés

Strukturális hazárdPipeline buborék

Vezérlési hazárdPipeline buborék

Elágazásbecslés

Számítógép architektúrák 174

Page 175: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Pipeline buborék

Az IF fázis után ha a vezérlő egység hazárdot észlel beszúr egy NOP utasítást, azaz késlelteti a következő utasítás futószalagra helyezését

Közben az utasítás előállítja az eredményt, amit a következő utasítás a késleltetés után már be tud olvasni

Buborék („üresjárat”) a pipline-ban

Nő a futásidő (de még mindig gyorsabb, mint

pipeline nélkül)

Számítógép architektúrák 175

Page 176: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Pipeline buborék

Számítógép architektúrák 176

CPU idő[órajel]

pipeline fázis

IF ID OF EX WB

1. ADD r1,r2,r3

2. SUB r4,r5,r1 ADD r1,r2,r3

3. SUB r4,r5,r1 ADD r1,r2,r3

4. SUB r4,r5,r1 ADD r1,r2,r3

5. SUB r4,r5,r1 (buborék) ADD r1,r2,r3

6. SUB r4,r5,r1 (buborék) (buborék)

7. SUB r4,r5,r1 (buborék)

8. SUB r4,r5,r1

Az adatfüggőség két órajelnyi késlekedést okozott

Page 177: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Eredmény továbbítás

Ez egyik utasítás EX fázisának outputját közvetlenül (a visszaírással egy időben) kössük rá a másik utasítás EX fázisának inputjára

Számítógép architektúrák 177

CPU idő[órajel]

pipeline fázis

IF ID OF EX WB

1. ADD r1,r2,r3

2. SUB r4,r5,r1 ADD r1,r2,r3

3. SUB r4,r5,r1 ADD r1,r2,r3

4. SUB r4,r5,r1 ADD r1,r2,r3

5. SUB r4,r5,r1 (buborék) ADD r1,r2,r3

6. SUB r4,r5,r1 (buborék)

7. SUB r4,r5,r1

Page 178: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Sorrenden kívüli végrehajtás

Out-of-Order Execution (OoOE)

Az utasítások nem a programban szereplő felírás sorrendjében hajtódnak végre

Az az utasítás hajtódik végre először amelyiknek hamarabb állnak elő a bemeneti adatai

A processzor próbálja elkerülni az üresjáratot az utasítások átrendezésével

Hardveresen gyorsított újrafordítás

Viszonylag nagy utasítás ablak

Számítógép architektúrák 178

Page 179: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Sorrenden kívüli végrehajtás

Utasítás beolvasása a memóriából

Az utasítás beáll egy utasítás sorba és vár

Az utasítássorból az távozik először, akinek elérhetőek az input operandusai

A távozó utasítás végrehajtásra kerül

Az eredmény bekerül egy eredmény sorba, vár

Az adott utasítás eredménye csak akkor kerül ki a sorból (és íródik be a regiszterfájlba), ha minden idősebb utasítás eredménye már kikerült

Számítógép architektúrák 179

Page 180: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Regiszter átnevezés

A név függőség (WAR és WAW hazárd) esetén egy utasítás eredménye felülírna egy még szükséges értéket, mivel nincs korlátlan számú „üres” regiszter

A regiszter átnevezés révén ez elkerülhető

Az utasításkészlet az architekturális regiszterfájl elemeire hivatkozik

Ezt egy speciális áramkör leképezi egy nagyobb méretű hardveres regiszterfájlra

Számítógép architektúrák 180

Page 181: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Regiszter átnevezés

Számítógép architektúrák 181

r0r1r2r3r4r5r6r7

hw1hw2hw3hw4hw5hw6hw7hw8hw9hw10hw11hw12

átnevező logika

r3 hw8

ADD hw3, hw1, hw2LDR hw4, [hw3]SUB hw8, hw5, hw6STR [hw7], hw8

ADD hw3, hw1, hw2SUB hw8, hw5, hw6LDR hw4, [hw3]STR [hw7], hw8

Arc

hit

ektu

rális

regi

szte

rek

Hard

veres regiszterek

WAR hazárd

Eredeti kód: Átnevezés utáni kód: Átrendezés utáni kód:

WAR hazárd mentes Hazárd mentesRAW hazárd

ADD r3, r1, r2LDR r4, [r3]SUB r3, r5, r6STR [r7], r3

Page 182: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Spekulatív végrehajtás

Olyan műveletek végrehajtása, amely lehet hogy nem is szükséges

Ha később kiderül, hogy a művelet nem volt szükséges, akkor az eredményt eldobjuk

Nincs üresjárat pipeline processzor esetén

Változatok

Mohó végrehajtás (pl. elágazásnál mindkét ág

végrehajtása, ha kiderül melyik szükséges azt megtartjuk) Jósló végrehajtás (pl. elágazás becslés, annak az ágnak a

végrehajtása, amely esélyesebb)

Számítógép architektúrák 182

Page 183: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Elágazásbecslés

Feltételes ugró utasításnál melyik a következő utasítás, amit be kell tenni a pipeline-ba?

Külön áramkör próbálja megbecsülni melyik ágat kell majd végrehajtani

Elkezdődik a jósolt ág végrehajtása

Ha kiderül, hogy a jóslat hibás a műveletek eredménye visszavonódik, egyébként időt spóroltunk (nem kellett várakozni)

A pipeline hosszával (akár 30 is lehet) nő az igény a jó elágazásbecslésre

Számítógép architektúrák 183

Page 184: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Szuperskalár processzorok

Órajelenként több utasítás hajtódik végre

Egy processzor magban több végrehajtási egység

Számítógép architektúrák 184

CPU idő[órajel]

pipeline fázisIF ID OF EX WB

1.utasítás 1utasítás 2

2.utasítás 3 utasítás 4

utasítás 1utasítás 2

3.utasítás 5utasítás 6

utasítás 3utasítás 4

utasítás 1utasítás 2

4.utasítás 7utasítás 8

utasítás 5utasítás 6

utasítás 3utasítás 4

utasítás 1utasítás 2

5.utasítás 9

utasítás 10utasítás 7utasítás 8

utasítás 5utasítás 6

utasítás 3utasítás 4

utasítás 1utasítás 2

Page 185: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Szuperskalár processzorok

ILP és OoOE

Utasítás ablak

Előre „látható” utasítások sora

Független utasítások keresésének színtere

Nagyobb ablakméret gyorsít

Futtatható normál szekvenciális program is

A megfelelő fordítás javíthatja viszont a hatékonyságot, növelheti az áteresztőképességet

Számítógép architektúrák 185

Page 186: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Vektor processzorok

A CPU egy utasítást hajt végre egyszerre adatok egydimenziós „tömbjén” (SIMD)

Nagy méretű regiszterek használata (több önálló adatot is tárol egyszerre)

Újabb utasítások bevezetése ezek kezelésére

PéldákMMX (Intel)

3DNow! (AMD)

SSE

AVX

Számítógép architektúrák 186

Page 187: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Vektor processzorok

Skalár processzor logikaIsmételd 10-szer!

Olvasd be a következő utasítást!

Olvasd be ezt és azt a számot!

Add össze őket!

Mentsd el az eredményt!

Ciklusvég

Vektor processzor logikaOlvasd be az utasítást!

Olvasd be ezt a 10 és azt a 10 számot!

Add össze őket egyszerre!

Mentsd el az eredményeket!

Számítógép architektúrák 187

Page 188: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Vektor processzorok

MultiMedia eXtension (MMX)

64 bites regiszter (int: 1x64, 2x32, 4x16, 8x8)

8 darab (MM0-MM7)

Alias-ok FPU regiszterekre (konkurenciát okoz)

3DNow! (AMD továbbfejlesztés) float-ot is használ

Streaming SIMD Extensions (SSE)

128 bites regiszter (float: 4x32)

8 vagy 16 darab (XMM0-XMM15)

70 új utasítás

Számítógép architektúrák 188

Page 189: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Vektor processzorok

SSE2

128 bites regiszter (float: 2x64, 4x32; int: 2x64, 4x32, 8x16, 16x8)

SSE3, SSE4

Újabb utasítások (+13, +47)

Advanced Vector eXtensions (AVX)

256 bites regiszter (float)

8 vagy 16 darab (YMM0-YMM15)

Számítógép architektúrák 189

Page 190: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Vektor processzorok

AVX2

int és float adatokra is

Új utasítások

AVX-512

512 bites regiszter (int, float)

32 darab (ZMM0-ZMM31)

Számítógép architektúrák 190

ZMM0 YMM0 XMM0 MM0

64 bit128 bit256 bit512 bitMMXSSEAVXAVX-512

Page 191: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Vektor processzorok

2db 32 bites előjeles egész összeadása

Túlcsordulás jelzés: státusz regiszter bitek (OF, CF)

4*2db 8 bites előjeles egész összeadása

Túlcsordulás jelzés: telítési aritmetikai mód

Számítógép architektúrák 191

0x77 0x35 0x74 0x00+

0x3B 0x02 0x33 0x76=

0xB2 0x37 0xC7 0x76

0x77 0x35 0x74 0x00+

0x3B 0x02 0x33 0x76=

0x7F 0x37 0x7F 0x76

OF=1

2 000 000 000+

989 999 990=

-1 304 967 306

119 53 116 0+

59 2 51 118=

127 55 127 118

Page 192: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Ciklus függőség

Read After Write: nem vektorizálhatófor(i=1; i<N; i++)

x[i] = x[i-1] + y[i];

Write After Read: vektorizálhatófor(i=0; i<N-1; i++)

x[i] = x[i+1] + y[i];

Read after Read: vektorizálhatófor(i=0; i<N; i++)

x[i] = y[i%2] + z[i];

Write after Write: nem vektorizálhatófor(i=0; i<N; i++)

x[i%2] = y[i] + z[i];

Számítógép architektúrák 192

N = 5;x = {0,1,2,3,4};y = {5,6,7,8,9};z = {9,7,5,3,1};

Page 193: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

VLIW processzorok

Very Large Instruction Word

Egy „utasítás” (ún. köteg) több kisebb, de egyszerre végrehajtható utasítást tartalmaz

Olyan speciálisan fordított programot igényel, amely explicit módon jelzi a párhuzamosan végrehajtható utasításokat

Szuperskalár ILP és OoOE

Egyszerűbb hardver, bonyolultabb fordító

Intel: Explicitly Parallel Instruction Computing

Számítógép architektúrák 193

Page 194: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

VLIW példa

Kiszámítandó: (x-y)*(x+y)/(z*z*8)

x értéke r1-ben, y értéke r2-ben, z értéke r3-ban

Számítógép architektúrák 194

SUB r4, r1, r2 ADD r5, r1, r2 MUL r7, r3, r3

MUL r6, r4, r5 ASR r8, r7, #3 NOP

DIV r9, r6, r8 NOP NOP

SUB r4, r1, r2

ADD r5, r1, r2

MUL r6, r4, r5

MUL r7, r3, r3

ASL r8, r7, #3

DIV r9, r6, r8

(𝑥 − 𝑦)(𝑥 + 𝑦)

8𝑧2

Skalár megoldás (6 utasítás)

VLIW megoldás(3 utasítás)

1.

2.

3.

4.

5.

6.

IDŐ IF ID OF EX WB

1. A

2. B A

3. C B A

4. C B A A A

5. C B B B A

6. C C C B

7. C

Page 195: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

VLIW vs Szuperskalár

Érvek a VLIW mellett

Egyszerű hardver

Rövidebb órajel ciklus, gyorsabb működés

Nagyobb végrehajtási egység sűrűség a chipen

Érvek a VLIW ellen

Lassú fordítás speciális fordítóval

Nem portolható programok (szoftver inkompatibilitás)

Nagyobb program méret a RAMban (NOP-ok miatt)

Számítógép architektúrák 195

Page 196: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Ciklus „kigöngyölés”

Segítségével hatékonyabbá tehető a program szuperskalár, vektor és VLIW processzor esetén

Könnyebb független utasításokat találni.

Kevesebb ciklusszervezési lépés

Számítógép architektúrák 196

for(i=0;i<100;i++)

a[i]=b[i]+c[i];

for(i=0;i<100;i+=4){

a[i] =b[i] +c[i];

a[i+1]=b[i+1]+c[i+1];

a[i+2]=b[i+2]+c[i+2];

a[i+3]=b[i+3]+c[i+3];

}

Hagyományos ciklus Kigöngyölt ciklus

Page 197: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Többmagos processzorok

Egy integrált áramköri lapon több önálló feldolgozó egység kap helyet

N mag esetén jobb teljesítmény és kisebb fogyasztás mint N darab egymagos CPU esetén

Általában saját L1 (esetleg L2) cache, de közös L3

Cache koherencia probléma

Párhuzamos szál/folyamat futtatás (MIMD)

Taszk-szintű párhuzamosság (pl. Java Thread)

Az operációs rendszernek támogatnia kell

Számítógép architektúrák 197

Page 198: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Hyper-threading

Az Intel SMT (Simultaneous MultiThreading) megvalósítása

Több szál kezelése magon belülTöbb „állapottároló” processzor elem

Egy „végrehajtó” elem

Ha egy szálnak várnia kell, addig fusson a másikElkerülve a pipeline buborékok alkalmazását

Minden „fizikai” mag két „logikai” magként viselkedik

Az operációs rendszer támogatás fontos

Számítógép architektúrák 198

Page 199: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Többprocesszoros rendszerek

Számítógép rendszer több processzorral

Megosztott (shared) vagy szétosztott (distributed) memória

Többmagos processzor: speciális megosztott memóriás többprocesszoros rendszer

Programozás

OpenMP (shared memory model)

Open MPI (message passing)

OGE / SGE (cluster computing)

Számítógép architektúrák 199

Page 200: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

NUMA architektúra

Non-Uniform Memory Access (nem egységes memória hozzáférés)

Processzorokhoz saját memória tartozik, de elérheti másik processzor memóriáját is

A memóriaelérés ideje függ a memória helyétől

Egyszerre több memóriaművelet is végezhető

Számítógép architektúrák 200

CPU

RAM

busz

cso

po

nt

1

CPU

RAM

busz

cso

po

nt

2

összeköttetés

Page 201: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Amdahl törvénye

N darab processzor (szál) használata nem eredményez N-szeres gyorsulást egy folyamat végrehajtásában

𝑆 𝑁 =𝑇1

𝑇𝑁=

1

𝐴+1

𝑁(1−𝐴)

ahol S a gyorsulás, T a futásidő és A a futásidő soros végrehajtású hányada0 ≤ A ≤ 1

Számítógép architektúrák 201

processzor szám (N)

gyo

rsu

lás

(S)

A=0,1

A=0,2

A=0,5

Page 202: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Virtualizáció

Egy hardveren egyszerre több működő operációs rendszerEgy gazda gép (host)

Több vendég (guest)

TípusaiHosztolt virtualizáció

Natív virtualizáció

Hypervisor (VMM)Hyper-V, Vmware, VirtualBox

Hardveres támogatás (VT-x, AMD-V)

Számítógép architektúrák 202

Hardver

Hypervisor

OS OS OS

OS

Hardver

Hypervisor

OS OS OS

Hosztolt virtualizáció

Natív virtualizáció

Page 203: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Grafikus feldolgozó egység

Graphics Processing Unit (GPU)

Feladat: textúrák kezelés, képek renderelés, 3D grafika gyorsítás, videó kódolás, …

Integrált vagy külön videokártya

Gyártók: nVIDIA és ATI (AMD)

Egyszerű, kis utasításkészlet

Nagy számítási kapacitás (párhuzamos, SIMD)

Saját memóriája lehet

Csatlakozás: AGP, PCIe VGA, DVI, HDMISzámítógép architektúrák 203

Page 204: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Általános célú GPU

General-Purpose GPU (GPGPU)

A GPU átvesz számításokat a CPU-tól

Programozás

OpenCL

CUDA

MATLAB

Accelerated Processing Unit (APU)

CPU és GPU elemekből felépülő processzor

Számítógép architektúrák 204

Page 205: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

FPGA

Field-Programmable Gate Array

Programozható logikai áramkör

Újrakonfigurálható rendszer

Speciális nyelvek: VHDL, Verilog

Természeténél fogva párhuzamos működés

Létezik processzorba integrált FPGA

Szoft-processzor

FPGA-n implementált processzor architektúra

Számítógép architektúrák 205

Page 206: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Intel X86 történelem &további architektúrák

Az Intel processzorok fejlődése

Más architektúrák

HPC

Page 207: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Főbb architektúra családok

Intel X86

8086, 80386, Pentium, Pentium 4, Core i7, Core i9

Motorola 68000

MIPS

Transmeta

PowerPC

ARM

Microchip PIC

AVR

Számítógép architektúrák 207

MCU

CPU

Page 208: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Intel 8086

Megjelenési év 1978

16 bites regiszterek

20 bites fizikai cím (1MB)

5-10 MHz órajel

3000nm technológia

29 000 tranzisztor

40 tűs DIP tokozás

DMA támogatásmov ax, [di] ;from the address in di to ax

Számítógép architektúrák 208

Page 209: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Intel 80386

Megjelenési év 1986

32 bites regiszterek

4GB-os címtér

12-40 MHz órajel

1500-1000nm technológia

275 000 – 855 000 tranzisztor

132 tűs PGA tokozás

Cache, virtuális memória kezelés, pipeline

Számítógép architektúrák 209

Page 210: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Intel Pentium

Megjelenési év 1993

32 bites regiszterek

4GB-os címtér

60-300 MHz órajel

800-250nm technológia

3 100 000 – 4 500 000 tranzisztor

273 tűs Socket 4; 321 tűs Socket 7 aljzat

Szuperskalár, MMX, L2 cache, integrált FPU

Számítógép architektúrák 210

Page 211: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Intel Pentium 4

Megjelenési év 2000

32 bites regiszterek

Mikroarchitektúra: NetBurst

1300-3800 MHz órajel

180-65nm technológia

42 – 188 millió tranzisztor

Socket 423 vagy Socket 478 aljzat

SSE3, 20-31 szintű futószalag, elágazásbecslés, HyperThread

Számítógép architektúrák 211

Page 212: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Intel Core i7

Megjelenési év 2008

64 bites regiszterek (x86-64)

Mikroarchitektúra: Nehalem, Sandy Bridge, IvyBridge, Haswell, Broadwell, …

45-14nm technológia (780-1400 millió tranzisztor)

2-6 mag

LGA aljzat (1000-2000 kontaktus)

L3 cache, integrált GPU, AVX-512, integrált NorthBridge

Számítógép architektúrák 212

Page 213: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Intel Core i9

Megjelenési év 2017

64 bites regiszterek (x86-64)

Mikroarchitektúra: Skylake

14nm technológia

10-18 mag

FCLGA aljzat (2066 kontaktus)

13-24MB L3 cache, Virtual Machine eXtensions, Turbo Boost Max 3.0 (4,5GHz), AVX-512, HT, DMI 3.0, DDR4

Számítógép architektúrák 213

Page 214: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Moore törvény

A processzorok tranzisztorszáma körülbelülkét évente megduplázódik

Közel vagyunk a határhoz (kb. 2025)

az atomi méretek miatt

Számítógép architektúrák 214

8086i186i286

i386

i486Pentium

Pentium III

Pentium 4

Core 2 Duo

Core i7 Haswell

Core i9

1,E+04

1,E+05

1,E+06

1,E+07

1,E+08

1,E+09

1,E+10

1975 1985 1995 2005 2015 2025

Moore törvénye

Page 215: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Intel Xeon Phi

Szuperszámítógépekbe, szerverekbe

GPU alapú MIC (Many Integrated Core) architektúra

57-72 mag (1.0-1.7GHz)

28,5-36MB L2 cache

ISA: x86-64

4-utas hyperthreading

AVX-512

1000-3000 GFLOPS (Core i7: 30-100 GFLOPS)

TársprocesszorSzámítógép architektúrák 215

Page 216: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Motorola 68000

Régi (1979), de élő CISC 16/32 bites Memory-mapped I/O 14 címzési mód, 5 adattípus, 56 utasítás 7 szintű megszakítási rendszer Alkalmazás: Apple Macintosh, Sega Mega Drive,

Comodore Amiga, SG és Sun munkaállomás, PLC

MOVE.W (A1), D1 ;move 2 bytes from the

address stored in A1 to D1

Számítógép architektúrák 216

Page 217: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

MIPS

RISC 32/64 bites 5 fokozatú pipeline végrehajtás OoOE, SIMD, szuperskalár több szintű cache Alkalmazás: PlayStation 2 és Nintendo 64

játékkonzolok, CISCO routerek,

lw $t1, ($t0) #move 2 bytes from the address

stored in t0 to t1

Számítógép architektúrák 217

Page 218: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Transmeta Crusoe

Alacsony fogyasztás Szoftveres ISAX86 kompatibilitásAkár Java bájtkód futtatás

VLIW (128bit) Megjelenés: 2000 Többszintű cache Utód: Efficeon Alkalmazás: tablet-ek, laptop-ok

Számítógép architektúrák 218

Page 219: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

PowerPC

Fejlesztő: Apple+IBM+Motorola

RISC

32/64 bites

Szuperskalár

Futásidőben állítható little-endian/big-endianbájtsorrend

Alkalmazás: Xbox 360, Nintendo Wiili 3, 0(5) ;move data from the address stored

in register 5 to register 3

Számítógép architektúrák 219

Page 220: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

ARM

RISC 32/64 bites Akár 13 fokozatú pipeline, SIMD, szuperskalár Prioritásos megszakításkezelés Egységes 32 bites utasítások Feltételes utasítás-végrehajtás (nincs elágazásbecslés)

Alkalmazás: Raspberry Pi, iPhone 6 és egyéb okostelefonok, (2013-ban 10 milliárd új CPU)

LDR R8, [R0] ;move data from the address

stored in R0 to R8

Számítógép architektúrák 220

Page 221: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Microchip PIC

Mikrokontroller (Módosított) Harvard architektúra RISC 8/12/14/16 bites 1 általános munkaregiszter (W) Nincs különbség adatmemória és regiszter közöttPl.: a PC és egyéb regiszterek memóriára vetítve

MOVLW d’29’ ;move decimal 29 into W

Számítógép architektúrák 221

Page 222: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Atmel AVR

Mikrokontroller (Módosított) Harvard architektúra RISC 8/32 bites 32 általános 8 bites munkaregiszter (R0-R31) Saját beépített memória (SRAM, Flash)Címtér: regiszterfájl + memória

Alkalmazás: Arduino

ldi r16, 0xF1 ;load hexadecimal 0xF1 to r16

Számítógép architektúrák 222

Page 223: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

High-Performance Computing

HPC - Top 1 Magyarországon (2015)

Leo (Szilárd Leo után)

Debrecen, DE Kassai úti campus

197,2 TFLOPS számítási kapacitás

462 Intel Xeon E5-2650 (2.6GHz)

3696 mag

10500 GB memória

Kb 8000 TB háttértár

2 000 000 000 HUF

Top500: 308. helyezés

Számítógép architektúrák 223

Page 224: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

High-Performance Computing

HPC - TOP 1 (2015) (2018 Q4: TOP 4)

Tienhe-2 (Tejút 2)

Kína, Guangzhou

33,86 PFLOPS számítási kapacitás

32 000 Intel Xeon (2.2GHz) + 48 000 Xeon Phi

3 120 000 mag

1 375 000 GB memória

12 400 000 TB háttértár

390 000 000 USD

17,6 MW fogyasztás (+6,4MW a hűtőrendszer)

Számítógép architektúrák 224

Page 225: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A programozás és az operációs rendszer

Rendszerhívás

Folyamatok

Szignál

Ütemezés

Virtuális memória

Page 226: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Duál-módú működés

Kernel mód

Magas CPU jogosultság

A processzor minden utasítást végre tud hajtani

Minden memóriarekesz megcímezhető

User mód

Alacsony CPU jogosultság

Processzor korlátozott utasításkészletet használ

Nem minden memóriarekesz hozzáférhető

Számítógép architektúrák 226

Page 227: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Rendszerhívás

Interfész a felhasználói program és az operációs rendszer kernel között

A program egy szolgáltatást igényelhet az operációs rendszer kerneltől

Tipikus megvalósítás szoftver interrupt-tal

Kernel módú működés

PéldáulFolyamatok kezelése

Fájlok kezelése

Eszközök kezelése

Számítógép architektúrák 227

Page 228: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Rendszerhívás

Példa:

Egy USB meghajtón lévő file írása

Saját C program

fprintf() standard könyvtári függvény

write rendszerhívás

USB driver

USB drive

Számítógép architektúrák 228

Szoftver

Felhasználói program

Kernel

Hardver

Könyvtári függvény

Rendszerhívás

Eszköz meghajtó

Hardver eszköz

Page 229: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Folyamat

Process, processzus

Végrehajtás alatt álló program

Erőforrásokkal rendelkezik

CPU-idő, memória, állományok, I/O eszközök

A folyamatokhoz kapcsolódó információkat a folyamatvezérlő blokk (PCB) tartalmazza

Kommunikálhatnak egymással

Inter-process communication (IPC)

Számítógép architektúrák 229

Page 230: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Folyamat

Multi-programozott környezetben egynél több folyamat is lehet egyszerre

Egyedi azonosítóval rendelkezik (PID)

Minden folyamatnak egy szülő- és több gyermek folyamata lehet

Egy vagy több szálból állhat a folyamat

Különböző állapotokban lehetnek

Az állapotok között különböző állapotátmenetek

Számítógép architektúrák 230

Page 231: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Folyamat ütemezés

Multi-programozott környezet (több folyamat)

Ütemező: választ a futásra kész folyamatok közül, ki kapja meg a CPU-t

Algoritmusok: FCFS, RR, SJF, EDF

Preemptív ütemezés

Pl. hardveres időzítő lejár és megszakítást kér

Aktuális folyamat megszakad, majd aktiválódik az ütemező kódja

Választ egy folyamatot, beállítja az időzítőt és átadja a vezérlést a választott folyamatnak (PCB-t módosít).

Számítógép architektúrák 231

Page 232: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Folyamat állapotátmenetek

Számítógép architektúrák 232

Futásra készfelfüggesztett

Várakozófelfüggesztett

Futásra kész

Futó

Új Befejezett

Várakozó

kilapozás belapozás kilapozás belapozás

ütemezés

időtúlfutás

eseményrevárás

esemény bekövetkezés

op

eratív mem

ória

lapo

zó file

befogadás

leállás

Page 233: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Folyamatok közötti kommunikáció

Néha a folyamatoknak szükségük van információcserére egymás között

Fájl: több folyamat által közösen használt fájl

Pipe: pl. input/output átirányítás

Szignál: értesítés eseményről bekövetkeztéről

Szemafor: osztott erőforrás szinkronizációjához

Shared memory: közösen használt RAM terület

Socket: hálózati protokollokon keresztül

…Számítógép architektúrák 233

Page 234: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Szignál

Egy folyamatnak küldött jelzés

Esemény bekövetkeztét jelzi, aszinkron módon

Üzenet/adat csere nincs

Ha egy folyamat kap egy szignált a normál működés megszakad végrehajtódik a definiált szignálkezelő kód, majd a folyamat folytatódik

Gyakori szignálok:SIGINT (2), SIGKILL (9), SIGALRM (14), SIGTERM (15), SIGCHLD (18), SIGSTOP (23), SIGCONT (25)

Számítógép architektúrák 234

Page 235: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Virtuális memória

A fizikai memória korlátainak transzparens átlépését teszi lehetővé a háttértár segítségével

Fizikai memória keretekre osztva

Logikai memória lapokra osztva (fix méret: 4kB)

Külön virtuális- és fizikai címzés

Virtuális cím leképezése fizikai címre: laptábla

A nem használt lapok kilapozhatóak a HDD-re

A Memory Management Unit (MMU) irányít

Számítógép architektúrák 235

Page 236: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Virtuális memória

Hivatkozás RAM-ban nem lévő lapra (lap hiba)

Lapcsere szükséges

Lapcserélési stratégia fontos (FIFO, LRU, …)

HDD elérés ideje kb. 100 000-szerese a RAM elérési időnek

Gyakori lapozás lassítja a programot

Megvalósítás

Linux: swap partíció

Windows: C:\pagefile.sys fájl

Számítógép architektúrák 236

Page 237: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Virtuális memória kezelése

1. CPU logikai memória igény (lap# + offset).

2. Laptábla ellenőrzés: ha a lap a RAM-ban folytasd a 9. lépésnél, különben 3. lépésnél!

3. Válassz a RAM-ban egy keretet a beolvasáshoz!

4. Szükség esetén indítsd el a keretben lévő lap kiírását a HDD-re, majd indítsd el a szükséges lap beolvasását a keretbe!

5. Közben a folyamat várakozó állapotba kerül, az ütemező indítson egy futásra kész folyamatot!

Számítógép architektúrák 237

Page 238: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Virtuális memória kezelése

6. A háttérben a DMA vezérlő (kiírja) beolvassa a RAM-ba a HDD-ről a lapot és ha kész küld egy „I/O kész” megszakítást.

7. A folyamat futásra kész állapotba kerül.

8. Amint az ütemező újra futóvá teszi a folyamatot ismételd meg a memória igényt!

9. A laptábla alapján fizikai cím (keret# + offset) előáll. A RAM válaszol a keresett adattal.

Számítógép architektúrák 238

Page 239: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Számítógép architektúrák 239

0 1 41 1 22 0 -3 0 -4 1 15 0 -6 1 57 0 -8 0 -9 0 -

virtuális címtér (folyamat A)

laptábla(folyamat A)

0 A0

1 A1

2 A2

3 A3

4 A4

5 A5

6 A6

7 A7

8 A8

9 A9

0 B1

1 A4

2 A1

3 B9

4 A0

5 A6

fizikai címtér (RAM)

háttértár

2 157 ? ?Logikai cím Fizikai cím ?Adat

67

lap# keret#offset offset

szabaddátehető

Virtuális memória kezelése

Page 240: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Számítógép architektúrák 240

0 0 -1 1 22 0 -3 0 -4 1 15 0 -6 1 57 0 -8 0 -9 0 -

virtuális címtér (folyamat A)

laptábla(folyamat A)

0 A0

1 A1

2 A2

3 A3

4 A4

5 A5

6 A6

7 A7

8 A8

9 A9

0 B1

1 A4

2 A1

3 B9

4

5 A6

fizikai címtér (RAM)

háttértár

2 157 ? ?Logikai cím Fizikai cím ?Adat

67

lap# keret#offset offset

szabaddátehető

Virtuális memória kezelése

Page 241: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Számítógép architektúrák 241

0 0 -1 1 22 1 43 0 -4 1 15 0 -6 1 57 0 -8 0 -9 0 -

virtuális címtér (folyamat A)

laptábla(folyamat A)

0 A0

1 A1

2 A2

3 A3

4 A4

5 A5

6 A6

7 A7

8 A8

9 A9

0 B1

1 A4

2 A1

3 B9

4 A2

5 A6

fizikai címtér (RAM)

háttértár

2 157 4 157

67

67

Logikai cím Fizikai cím 67Adatlap# keret#offset offset

Virtuális memória kezelése

Page 242: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Előnyök a programozó számára

Nagyobb méretű adatokkal dolgozhatunk, mint amennyi fizikai memória rendelkezésre áll.

Minden program/folyamat saját virtuális címtérrel rendelkezik. Nem férhetnek hozzá másokéhoz.

Programíráskor nem kell tudnunk mely memóriaterületek foglaltak már (más programok által).

Támogatja a multiprogramozott rendszereket.

Számítógép architektúrák 242

Page 243: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Digitális elektronikai alapok

Félvezető

Dióda, tranzisztor

Logikai kapu

Flip-flop

Multiplexer, címdekódoló

Összeadó áramkör

Page 244: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Fizika

Anyag atom elektron- & proton+ & neutron0

Coulomb erő (elemi kölcsönhatás)

𝐹 =1

4𝜋𝜖0

𝑄1𝑄2

𝑟2

𝑟

𝑟

Feszültség: a töltésekre ható erőből származik

Elektromos áram: töltött részecskék áramlása

Ellenállás: a töltésmozgás akadályozása

Vezetők, szigetelők

Számítógép architektúrák 244

Page 245: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Félvezetők

„Rossz vezető, rossz szigetelő”

Ok: szilárdtestek sávszerkezete

4 vegyérték elektron (Si, Ge)

Kvantumfizika

Bohr-féle atommodell

Számítógép architektúrák 245

vezetési sáv

vegyérték sáv

tiltott sáv

elek

tro

n e

ner

gia

vezető

elek

tro

n e

ner

gia

félvezető

elek

tro

n e

ner

gia

szigetelő

szilárdtestben

elek

tro

n e

ner

gia

atomban

Page 246: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Szennyezett félvezető

n-szennyező (elektron)

5 vegyérték elektron (As, Sb)

p-szennyező (’lyuk’)

3 vegyérték elektron (Ga, In)

Új energiaszint a tiltott sávban

Számítógép architektúrák 246

elek

tro

n e

ner

gia

Si Si Si

Si Ga Si

Si Si Si

Si Si Si

Si As Si

Si Si Si

n-típus p-típus

+-

+-

+-

-+

-+

-+

Page 247: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

p-n átmenet

Félvezető egykristály eltérően szennyezett részei között található

Szabad töltéshordozók átáramlanak a másik rétegbe, rekombinálódhatnak.

Számítógép architektúrák 247

+-

-+-

-+

+-

-+

+ -+

+ -

+ -+-

-+-

-+

+-

-+

+ -+

+-

-+-

-+

+-

-+

+ -+

+ -

+ -+-

-+-

-+

+-

-+

+ -+

+-töltéssűrűség

elektrosztatikus potenciál potenciálgát

n p

kiürített réteg

Page 248: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Számítógép architektúrák 248

Dióda

Záró irányú előfeszítés Nyitó irányú előfeszítés+ -

+-

-+-

-+

+-

-+

+ -+

+ -

+ -+-

-+-

-+

+-

-+

+ -+

+-

-+-

-+

+-

-+

+ -+

+ -

+ -+-

-+-

-+

+-

-+

+ -+

- -- ++ +

+-

+-

-+-

-+

+-

-+

+ -+

+ -

+ -+-

-+-

-+

+-

-+

+ -+

+-

-+-

-+

+-

-+

+ -+

+ -

+ -+-

-+-

-+

+-

-+

+ -+

-

-

-

-

-

-

+

+

+

+

+

+

Dióda: egyenirányításra képes

Jele:

Speciális dióda: LED

Page 249: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Tranzisztor

2 darab p-n átmenet („összefordított diódák”)

Kapcsoló, erősítő

Számítógép architektúrák 249

Bipoláris tranzisztor

p n pn

Unipoláris tranzisztorBE C

p n p

G

D

S

GD S

p n p

B

E

C

n-csatornás JFET

Page 250: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A logikai NAND kapu

2 bemenetű logikai kapu („nem és”)

Jele:

Felépítése, működése:

Számítógép architektúrák 250

A B Q

0 0 1

0 1 1

1 0 1

1 1 0

A

B

Vcc

Q

GNDTTL NAND kapu

Page 251: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

További logikai kapuk

Felépíthetőek NAND kapukból

Számítógép architektúrák 251

A B Q

0 0 0

0 1 1

1 0 1

1 1 0

A B Q

0 0 0

0 1 1

1 0 1

1 1 1

A B Q

0 0 0

0 1 0

1 0 0

1 1 1

A Q

0 1

1 0

NOT AND OR XOR

Page 252: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Flip-flopok

Szekvenciális digitális elektronikai áramkör

1 bit információ tárolására képes

Alkalmazás: regiszter, számláló, frekvenciaosztó

Számítógép architektúrák 252

D

CLK

Q

_Q

D flip-flopCLK=1 tárol DCLK=0 tart előző

CLK

adat bemenet

adat kimenet

4 bites regiszter

Page 253: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Komparátor

Kombinációs hálózat (állapotmentes)

A bemeneteire adott értékpárokat hasonlítja össze

Ha a két bemeneti bitsorozat megegyezik,akkor 1 érték jelenik meg akimeneten, különben 0 érték.

Számítógép architektúrák 253

4 bites komparátor

Page 254: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Multiplexer

Kombinációs hálózat

N jelből 1-et kiválaszt a vezérlőjelek alapján

K darab vezérlőjel2K darab bemenő jelet tud azonosítani

Számítógép architektúrák 254

D

C

B

A

Z

S0 S14:1 multiplexer

S0 S1 Z

0 0 A

0 1 B

1 0 C

1 1 D

MUX

Page 255: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Címdekódoló

Kombinációs hálózat

A címbemenetre adott jel alapján kiválasztja a kimenő jelek egyikét

N bites címbemenetre adottérték a 2N darab kimeneti vonal közül 1-et aktivál

Számítógép architektúrák 255

A0 A1

D0

D1

D2

D3

2 bites címdekódoló

A0 A1 D0 D1 D2 D3

0 0 0 0 0 1

0 1 0 0 1 0

1 0 0 1 0 0

1 1 1 0 0 0

Page 256: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Memória

Közvetlen hozzáférésű memória

SRAM vagy DRAMkülönbség a cellában

Bitcella:1 bitet tárol

A cím választjaki melyik cellaértéke kerüljöna kimenetre

Számítógép architektúrák 256

Bit cella

Bit cella

Bit cella

Bit cella

Bit cella

Bit cella

Bit cella

Bit cella

Bit cella

Bit cella

Bit cella

Bit cella

Bit cella

Bit cella

Bit cella

Bit cella

Dek

ód

er

Multiplexer

bit vonal

szó

vo

nal

cím

adat

Page 257: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Bit cella

Számítógép architektúrák 257

bit vonal

NOT kapu

szó

vo

nal

bit vonal

tranzisztor

bit vonal

kondenzátor

szó

vo

nal

tranzisztor

SRAM DRAM

4-6 tranzisztor

Gyors kimenet

„Tartós” tárolás

Egyszerű szerkezet

Lassú kimenet

Szivárgás frissítés

Page 258: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Összeadó áramkör

Félösszeadó: 2 bit összeadására képes

Teljes összeadó: 3 bit összeadásáraképes (2 db félösszeadó)

Számítógép architektúrák 258

A B

SC A B

S

Cout Cin

A B C S

0 0 0 0

0 1 0 1

1 0 0 1

1 1 1 0

A B Ci Co S

0 0 0 0 0

0 1 0 0 1

1 0 0 0 1

1 1 0 1 0

0 0 1 0 1

0 1 1 1 0

1 0 1 1 0

1 1 1 1 1

Page 259: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Ripple-carry összeadó

Több bites adatok összeadására képes

Láncba fűzött teljes összeadók

Számítógép architektúrák 259

++++

A3 B3 A2 B2 A1 B1 A0 B0

S3 S2 S3 S2

C 0

++++

A3 A2 A1 A0 B3 B2 B1 B0

S3 S2 S1 S0

c

„primitív 4 bites ALU kezdemény”

teljes összeadó

Page 260: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Primitív ALU vázlat

Számítógép architektúrák 260

KomparátorÉS-elő VAGY-oló Összeadó

Multiplexer

Reg: IN_A Reg: IN_B

Reg: IR Reg: SR

Reg: OUT

Page 261: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Assembly programozás

Assembly nyelv

Utasítás készlet

Címzési módok

Fordítás-szerkesztés-betöltés

Gépi kód

Page 262: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Assembly programozás

Alacsony absztrakciós szint

Programozói szabadság

Feladatra optimalizálható kód

Nagyobb program teljesítmény

Hardverismeret szükség

Nehezebben átlátható kód

PC, mikrokontroller

Számítógép architektúrák 262

Magasszintűprogramnyelvek

Assembly programozás

Gépi kód

Page 263: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Utasítás szerkezet

4 címes utasítás

3 címes utasítás

2 címes utasítás

1 címes utasítás

Számítógép architektúrák 263

Műveleti kód1. Operandus

cím2. Operandus

címEredmény cím

Következő utasítás cím

Műveleti kód1. Operandus

cím2. Operandus

címEredmény cím

Műveleti kód1. Operandus + eredmény cím

2. Operandus cím

Műveleti kód2. Operandus

cím

Page 264: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Program és utasítás felépítés

Számítógép architektúrák 264

utasítás_1

utasítás_2

utasítás_3

utasítás_4

utasítás_5

Forrás fájl

Címke Művelet Operandus(ok) Megjegyzés

.L1: mov ax, 0 # zero into ax

Címke Azonosító, általában kettősponttal zárul

Művelet Az elvégzendő művelet mnemonic-ja

Operandus(ok) Adat(ok) vagy adat(ok)ra hivatkozás(ok)

Megjegyzés Sor végéig a fordító figyelmen kívül hagyja

Page 265: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Utasításkészlet architektúra

ISA (Instruction Set Architecture)

A számítógép programozáshoz kötődő részletei

Bitszélesség (buszok és regiszterek)

Regiszter készlet

Gépi utasítások

Címzési módok

Memória architektúra

Megszakítás kezelés

Számítógép architektúrák 265

Page 266: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Utasítás típusok

Adatmozgató utasítások

(Egész) aritmetikai utasítások

Bitenkénti logikai utasítások

Bitléptető utasítások

Vezérlésátadó utasítások

Sztringkezelő utasítások

BCD és valós aritmetikai utasítások

Fordítási direktívák

Egyéb utasítások

Számítógép architektúrák 266

Page 267: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Utasítás típusok

Adatmozgató utasítások

Regiszter-regiszter (mov, xchg)

Regiszter-memória (mov)

Regiszter-I/O port (in, out)

Regiszter-verem (push, pop)

Kiterjesztés (bitszélesség fontos) (cbw, cwd)

Státusz bit állítás (sti, cli)

Számítógép architektúrák 267

Page 268: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Utasítás típusok

Aritmetikai utasítások

Összeadás (átvitel nélkül/átvitellel) (add, adc)

Kivonás (átvitel nélkül/átvitellel) (sub, sbb)

Inkrementálás, dekrementálás (inc, dec)

Kettes komplemens (neg)

Előjeles/előjel nélküli szorzás (imul, mul)

Előjeles/előjel nélküli osztás (idiv, div)

Összehasonlítás (cmp)

Számítógép architektúrák 268

Page 269: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Utasítás típusok

Bitenkénti logikai utasítások

ÉS művelet (and)

VAGY művelet (or)

KIZÁRÓ VAGY művelet (xor)

Egyes komplemens (not)

Bit tesztelés (test)

Számítógép architektúrák 269

Page 270: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Utasítás típusok

Bitléptető utasítások

Logikai/előjel nélküli balra léptetés (shl)

Logikai/előjel nélküli jobbra léptetés (shr)

Aritmetikai/előjeles balra léptetés (sal=shl)

Aritmetikai/előjeles jobbra léptetés (sar)

Jobbra/balra forgatás (ror, rol)

Jobbra/balra forgatás carry-n keresztül (rcr, rcl)

Számítógép architektúrák 270

Page 271: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Utasítás típusok

Vezérlésátadó utasítások

Feltétel nélküli ugrás (jmp)

Feltételes ugrás (ja, jae, jb, jbe, je, jne, jc, jo, …)

Ciklusszervező (loop, loopz, loopnz, …)

Hívó utasítás (call)

Szubrutinból visszatérés (ret)

Szoftveres megszakítás kérés (int)

Megszakítás-kezelőből visszatérés (iret)Számítógép architektúrák 271

Példa:sub eax, 1

jnz .L1

mov eax, 9

.L1: mov ebx, eax

Page 272: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Utasítás típusok

Stringkezelő (bájtsorozat kezelő) utasítások

Sztring mozgató (movs, movsb, movsw)

Sztring összehasonlító (cmps)

Keresés sztringben (scas)

Egyéb utasítások

Koprocesszor vezérlő (wait, esc)

Rendszervezérlő (hlt)

Üres utasítás (nop)

Számítógép architektúrák 272

Page 273: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Utasítás típusok

Fordítási direktívák: gépi kód nincs mögöttük, a fordítás menetét befolyásolják

Forrásfájl lezárása (end)

Szegmens definiálás (segment, ends)

Egyszerűsített szegmensdefiníció (stack, .data)

Helyfoglalás (db, dw, dd)

Helyettesítő szimbólum létrehozás (equ)

Számítógép architektúrák 273

Page 274: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Címzési módok

Adat vagy utasítás hogyan érhető el. Rejtett (implicit, implied) Közvetlen adat megadás (immediate) Közvetlen cím (direct, absolute) Regiszteres cím (register direct) Közvetett cím (indirekt) Regiszter indirekt Indexelt cím Bázis relatív cím …

Számítógép architektúrák 274

Page 275: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Címzési módok

Rejtett címzés

Nincs igazi cím megadás

Pl. ha nincs operandus

Számítógép architektúrák 275

Op.kód1

Op.kód2

500

501

502

503

Page 276: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Címzési módok

Közvetlen adat megadás

Műveleti kód után közvetlenül található adat

Ez lesz az operandus

Konstans

Számítógép architektúrák 276

Op.kód

Adat

500

501

502

503

Page 277: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Címzési módok

Regiszteres címzés

A műveleti kód hivatkozik egy regiszterre

A regiszterben található az operandus értéke

Számítógép architektúrák 277

Op.kód

Adat500

501

502

503

regiszter

Page 278: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Címzési módok

Közvetlen cím

Műveleti kód után található egy memóriacím

Itt helyezkedik el az operandus

Számítógép architektúrák 278

Op.kód

731

500

501

502

503

Adat

730

732

733

731

Page 279: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Címzési módok

Közvetett cím

A műveleti kód után található egy cím

Ezen a címen található az operandus igazi címe

Számítógép architektúrák 279

Op.kód

731

500

501

502

503

945

730

732

733

731

Adat

943

944

946

945

Page 280: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Címzési módok

Regiszter indirekt

A műveleti kód hivatkozik egy regiszterre

A regiszterben található címen helyezkedik el az operandus

Számítógép architektúrák 280

Op.kód

500

501

502

503

Adat

730

732

733

731

regiszter

731

Page 281: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Címzési módok

Indexelt

A műveleti kód után található egy cím, ehhez hozzáadva az index regiszterben található értéket megkapjuk az operandus memóriacímét

Számítógép architektúrák 281

Op.kód

700

500

501

502

503

Adat

730

732

733

31

index reg.

731

Page 282: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Címzési módok

Bázis relatív

A műveleti kód után található egy eltolási érték, ehhez hozzáadva a bázis regiszterben található kezdőcímet megkapjuk az operandus címét

Számítógép architektúrák 282

Op.kód

11

500

501

502

503

Adat

730

732

733

720

bázis reg.

731

Page 283: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Intel szintaxis.intel_syntax noprefix

.globl main

main: push ebp

mov ebp, esp

sub esp, 16

mov DWORD PTR [ebp-16], 2

mov DWORD PTR [ebp-12], 3

cmp DWORD PTR [ebp-16], 4

jne .L2

mov eax, DWORD PTR [ebp-12]

mov DWORD PTR [ebp-8], eax

jmp .L3

.L2: mov DWORD PTR [ebp-8], 4

.L3: mov eax, DWORD PTR [ebp-8]

add esp, 16

pop ebp

ret

Számítógép architektúrák 283

Assembly szintaxis

AT&T szintaxis.att_syntax noprefix

.globl main

main: pushl %ebp

movl %esp, %ebp

subl $16, %esp

movl $2, -16(%ebp)

movl $3, -12(%ebp)

cmpl $4, -16(%ebp)

jne .L2

movl -12(%ebp), %eax

movl %eax, -8(%ebp)

jmp .L3

.L2: movl $4, -8(%ebp)

.L3: movl -8(%ebp), %eax

addl $16, %esp

popl %ebp

ret

Page 284: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Utasítások

8086: 114 utasítás

80186: +15 (új és bővített)

80286: +17

80386: +66

80486: +6

8087: +83

80287: +1

80387: +12

+Pentium, +MMX, +SSE, +AVX, +egyéb ()

Számítógép architektúrák 284

Page 285: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Operandusok

Operandusok

Regiszter (8, 16, 32 bites)

Konstans (8, 16, 32 bites)

Memória tartalom

Memória cím és méret kényszerítésmov al, BYTE PTR [ebx]

mov ax, WORD PTR [ebx]

mov eax,DWORD PTR [ebx]

Számítógép architektúrák 285

Page 286: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Címzési módok

Regiszteres

Közvetlen adat

Közvetlen cím

Közvetett regiszteres

Regiszter relatív

Bázisos indexelt

Bázis+index relatív

Skálázott

Szegmens előtag

Számítógép architektúrák 286

mov ax, bx

mov ax, 7Fh

mov ax, [1234]

mov ax, [bx]

mov ax, [bx + 100h]

mov ax, [bx + si]

mov ax, [bp + di + 123]

mov ax, [si * 4 +10h]

mov ax, [es:bx]

Page 287: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Címzési módok

Effektív cím (EA) megadás alakjainak összegzése

Számítógép architektúrák 287

𝐶𝑆:𝑆𝑆:𝐷𝑆:𝐸𝑆:𝐹𝑆:𝐺𝑆:

𝑒𝑔𝑦𝑖𝑘𝑠𝑒𝑚

𝐸𝐴𝑋𝐸𝐵𝑋𝐸𝐶𝑋𝐸𝐷𝑋𝐸𝑆𝐼𝐸𝐷𝐼𝐸𝐵𝑃𝐸𝑆𝑃

𝑒𝑔𝑦𝑖𝑘𝑠𝑒𝑚

+

𝐸𝐴𝑋𝐸𝐵𝑋𝐸𝐶𝑋𝐸𝐷𝑋𝐸𝑆𝐼𝐸𝐷𝐼𝐸𝐵𝑃

𝑒𝑔𝑦𝑖𝑘𝑠𝑒𝑚

1248

𝑒𝑔𝑦𝑖𝑘𝑠𝑒𝑚

+𝑒𝑙𝑡𝑜𝑙á𝑠𝑠𝑒𝑚𝑚𝑖

Szegmens szelektor

Bázis Index Skálázófaktor

Eltolás

Példa:mov EAX, [DS:EBP+EDI*4+10h]

vagy ugyanaz más írásmódban:mov EAX, DS:10h[EBP][EDI*4]

Page 288: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Alprogram hívási konvenció

Hívó szabályai

Paraméterek fordított sorrendben a rendszerverembe helyezése Néha adott sorrendben regiszterekbe: edi, esi, edx, …

Lebegő pontos paraméterek a SSE regiszterekbe(eax-be a float paraméterek száma)

Alprogram hívás (visszatérési cím a verembe kerül, programszámláló átáll az alprogram kezdőcímére)

Visszatérés után veremből paraméterek kivétele

Visszatérési érték az eax regiszterben van

Számítógép architektúrák 288

Page 289: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Alprogram hívási konvenció

Hívott szabályai

Bázis pointer verembe mentés

Verem mutató mentése bázis pointerbe

Helyfoglalás lokális változóknak a veremben

Használandó regiszterek mentése a verembe

Visszatérési érték az eax regiszterbe tétele

Mentett regiszterek és verem visszaállítás

Visszatérés (a veremben lévő címre)

Számítógép architektúrák 289

Page 290: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Gépi kód

Az egyetlen nyelv, amit a processzor megért

Bináris formátum

Processzoronként változó lehet

Példa:assembly: SUB EAX, EBX # eax = eax-ebxgépi kód: 0x29 0xD8

Számítógép architektúrák 290

MOD

0 0 1 0 1 0 0 1 1 1 0 1 1 0 0 0

SUB művelet

REG mező a forrás

Regiszteres címzés

32 bites regiszter

d s REG R/MOpKód

Forrás:EBX

Cél:EAX

Page 291: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Gépi kód példa

Számítógép architektúrák 291

C nyelvű kódy=5;

z=6;

x=z+y*7;

Gépi kód

Assembly kódmov DWORD PTR [ebp-12], 5

mov DWORD PTR [ebp-8], 6

mov ebx, DWORD PTR [ebp-12]

mov eax, ebx

sal eax, 3

sub eax, ebx

add eax, DWORD PTR [ebp-8]

mov DWORD PTR [ebp-16], eax

c7 45 f4 05 00 00 00 c7 45 f8 06 00 00 00

8b 5d f4 89 d8 c1 e0 03 29 d8 03 45 f8

89 45 f0

Page 292: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Magasszintű programozásleképezése assembly-re 1.

Programozás alapjai

Kifejezéskiértékelés

Elágaztatás

Ciklusszervezés

Page 293: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Gondolatébresztő kérdések

Melyik értékadás fut le rövidebb idő alatt?int a, b=2, c=3, d=4, e=1, f=2;

a=(b+c)*(d-e)%f;

a=(2+3)*(4-1)%2;

a=5;

Mi az alábbi kifejezés értéke?(!3+8==2*4)+-1

Mi az alábbi kifejezés típusa C nyelven?5/(short)2==.5+’2’

Számítógép architektúrák 293

Page 294: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Gondolatébresztő kérdések

Ki/mikor/hogyan végzi a kifejezés kiértékelést?

Van címe a konstansnak?

Van-e különbség a #define és a constközött?

Kétirányú elágaztatásnak minősül-e azif (a==0) b=0; utasítás?

Hányszor fut le az alábbi ciklus magja?for(a<1,b=1;c++;d=1) e=1;

Számítógép architektúrák 294

Page 295: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Mi az outputja a programnak?

Számítógép architektúrák 295

Page 296: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Programozás

Editor

Szövegszerkesztőben forráskód létrehozása

Forrás kód: háttértárolón tárolt szöveges file

Esetleg nyelv érzékeny eszközrendszer

Fordító (compiler, assembler)

Előfeldolgozás, lexikai/szintaktikai/szemantikai elemzés, optimalizálás, kódgenerálás

Eredmény: tárgykód (ojbect file)

Nem interpreter!Számítógép architektúrák 296

Page 297: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Programozás

Kapcsolatszerkesztő (linker)

A tárgykódban nem igazi címek, csak hivatkozások vannak (több fájl, könyvtári függv.)

Linker feloldja a hivatkozásokat: futtatható fájl

Betöltő (loader)

Az op. rendszer része: létrehozza a folyamatot

RAM-ba tölti a gépi kódot

Inicializál: regiszterek, verem

Átadja a vezérléstSzámítógép architektúrák 297

Page 298: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A C nyelv típusai

Aritmetikai (egyszerű) típusok

[unsigned|signed] char

[unsigned|signed] [short|long|long long*] int

enum

float

[long*] double

Összetett/származtatott típusok

struct és union

tömb

mutató

Számítógép architektúrák 298

*ISO C99

Page 299: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A C egész típusai

Számítógép architektúrák 299

típus méret tartomány

[signed] char1 bájt

-128 127

unsigned char 0 255

[signed] short2 bájt

-32.768 32.767

unsigned short 0 65.535

[signed] int4 bájt

(2 bájt)

-2.147.483.648 2.147.483.647

unsigned int 0 4.294.967.295

[signed] long8 bájt

(4 bájt)

-9.223.372.036.854.775.808 9.223.372.036.854.775.807

unsigned long 0 18.446.744.073.709.551.615

[signed] long long*

8 bájt-9.223.372.036.854.775.808 9.223.372.036.854.775.807

unsigned long long 0 18.446.744.073.709.551.615

*ISO C99

Page 300: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Felsorolásos típus

Alacsony szinten int-ként reprezentált

C nyelven a két kód assembly szinten azonos

Számítógép architektúrák 300

Page 301: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A C nyelv valós típusai

Valós típusú konstansok formátuma

0.751

+.75100

Valós típusok paraméterei

Számítógép architektúrák 301

méret minimum maximum pontosság

float 4 bájt 1.18 · 10-38 3.40 · 10+38 7 számjegy

double 8 bájt 2.23 · 10-308 1.80 · 10+308 15 számjegy

longdouble*

10 bájt 3.36 · 10-4932 1.19 · 10+4932 19 számjegy

.751f

75.1e-2

0.751L

0.0751E+1

*ISO C99

Page 302: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Mutató típus

A C nyelvben

Fontos szerepet játszik (mutatóorientált nyelv)

Előjel nélküli egész reprezentáció (32 vagy 64 bit)

NULL: csupa nulla bit

Értéke adatcím és kódcím (!) is lehet

Aritmetikai műveletek is végezhetőek velük

Számítógép architektúrák 302

Page 303: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Rekord típus

struct kulcsszó

Nem biztos, hogy folytonos memóriaterületen

Számítógép architektúrák 303

nem használt bájt

A.a A.b A.c A.d

sizeof(A)==16

B.a B.bB.cB.d

sizeof(B)==24

Page 304: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A C nyelv tömbje

Tömb index 0-tól (db-1)-ig

Csak egydimenziós tömb van, viszont van tömbök tömbje

Sztring: karaktertömb

Lezáró karakter ’\0’ (ASCII kód: 0)

A tömb neve az első elemre mutató nevesített konstans (mutatóorientáltság erős)

Számítógép architektúrák 304

egyenértékű utasítások

Page 305: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A forráskód alkotórészei

Karakterkészlet

Lexikális egység

Szintaktikai egység

Utasítás

Programegység

Fordítási egység

Program

Számítógép architektúrák 305

Kom

ple

xitá

s n

ő

Page 306: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Konstans (literál)

Közvetlen adat megadás (immediate)

Kódba épített adat

8, 16, 32, 64 bit szélességű

Fix vagy lebegőpontos ábrázolás

Magas szinten: 123, 1.25f, ’a’

Alacsony szinten: 0x0000007b, 0x3fa00000, 0x61

Számítógép architektúrák 306

Page 307: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Nevesített konstans

Komponensei: név, típus, érték

#define abc 123

Előfordító kicseréli a nevet az értékre

Kódba épített adat

Assembly szinten egyszerű konstans

const int abc=123;

Assembly szinten egyszerű változó

A fordító nem engedi a változtatást

Számítógép architektúrák 307

Page 308: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Változó

Komponensei: név, attribútum, cím, érték

Deklaráció: explicit, implicit, automatikus

Hatáskör: statikus, dinamikus

Élettartam: statikus, dinamikus, programozó által vezérelt

Értékadás: kezdőértékadás (automatikus, explicit), értékadó utasítás, paraméterátadás, input utasítás

Számítógép architektúrák 308

Page 309: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Változó

Alacsony szinten

Adott méretű lefoglalt memóriaterület

Ha van cím komponens mindig van érték is

Érték: bitsorozat (tetszőleges értelmezéssel)

Értékadás: memóriacímre adat mozgatás

Statikus változó adat szegmensben

Dinamikus változó verem szegmensben

Programozó által vezérelt a heap-ben

Mutató: előjel nélküli egész változó C-benSzámítógép architektúrák 309

Page 310: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Kifejezés

Komponensei: típus, érték

Formálisan: operátor, operandus és zárójel

Operátor: unáris, bináris, ternáris

Alak: infix (2+3)*4prefix * + 2 3 4postfix (RPN) 2 3 + 4 *

Infix alak esetén nem egyértelmű kiértékelés:precendencia és kötésirány kell

Típusegyenértékűség vagy típuskényszerítés

Számítógép architektúrák 310

Page 311: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A C precedencia táblázata

Számítógép architektúrák 311

Operátor Leírás Kötés-irány

1.

() Zárójel, függvény paraméter lista

[] Tömb indexelés

. Mező hivatkozás

-> Mező hivatkozás mutatóval

++ --Utólagos inkrementálás/dekrementálás

2.

++ --Előzetes inkrementálás/dekrementálás

+ - Előjel

! ~ Logikai/bitenkénti tagadás

(típus) Típus kényszerítés

* Mutatott terület

& Címképzés

sizeof Méret

3. * / % Szorzás/osztás/maradékos osztás

4. + - Összeadás/kivonás

Operátor Leírás Kötés-irány

5. << >> Shiftelés balra/jobbra

6.< <= > >==

Relációs operátorok (< > )

7. == != Relációs operátorok (= )

8. & Bitenkénti ÉS

9. ^ Bitenkénti XOR

10. | Bitenkénti VAGY

11. && Logikai ÉS

12. || Logikai VAGY

13. ?: Feltételes operátor

14.

= += -= *= /= %= <<= >>= &= ^= |=

Értékadó operátorok

15. , Vessző operátor

Page 312: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Kifejezés kiértékelés

Infix kifejezés kiértékelés

Számítógép architektúrák 312

Infix25 - 15 * 4 + 246 / 2

25 - 60 + 246 / 225 - 60 + 123

-35 + 12388

Infix & ()((25 - 15) * (4 + 246)) / 2

(10 * (4 + 246)) / 2(10 * 250) / 2

2500 / 21250

Precedencia táblázat fontos

Page 313: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Kifejezés kiértékelés

Prefix és postfix kifejezés kiértékelés

Számítógép architektúrák 313

Prefix/ * - 25 ; 15 + 4 ; 246 ; 2

/ * 10 + 4 ; 246 ; 2/ * 10 ; 250 ; 2

/ 2500 ; 21250

Postfix25 ; 15 - 4 ; 246 + * 2 /

10 ; 4 ; 246 + * 2 /10 ; 250 * 2 /

2500 ; 2 / 1250

A pontosvessző (;) itt csak az operandusok elhatárolására szolgál.

Hasonlít a függvényekhez (pl. MS Excel):=szum(3 ; hatvány(sin(0) ; 2) ; 1)

Fordított lengyel jelölésnek (RPN) is hívják.

Page 314: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Kifejezés kiértékelés

A kifejezés értékének, típusának meghatározása

Konstans kifejezést a fordító értékel ki

Nem konstans infix kifejezést a fordító postfixalakra hozza (figyelembe véve a zárójeleket,

precedenciát és a kötésirányt) és az alapján állítja elő a gépi kódot

imul ebx, ecx

eax + ebx * ecx & edx add eax, ebx

and eax, edx

Számítógép architektúrák 314

Page 315: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Utasítások

Deklarációs utasítás

Nem (biztos, hogy) áll mögötte gépi kód

A fordítóprogramnak szól

Végrehajtható utasítás

Egy magas szintű utasításból több gépi kódú utasítást is előállíthat a fordító

Csoportjai: üres, értékadó, ugró, elágaztató, ciklusszervező, hívó, egyéb

Számítógép architektúrák 315

Page 316: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Elágaztató utasítás

Kétirányú elágaztató utasítás C nyelven:if (kifejezés)

utasítás1;

[else

utatsítás2;]

Többirányú elágaztató utasítás C nyelven:switch(kifejezés){

case egész_konstans_kif_1: [utasítás1;]

[case egész_konstans_kif_2: [utasítás2;]]

[default: utasítás3;]

}

Számítógép architektúrák 316

Page 317: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A feltételes utasítás alacsony szinten

Számítógép architektúrák 317

cmp eax, ebxjne .L0mov ecx, 1

.L0: add edx, 1

if (feltétel)utasítás1;

utasítás2;

cmp eax, ebxjne .L2mov ecx, 1jmp .L3

.L2: mov ecx, 2

.L3: add edx, 1

if (feltétel)utasítás1;

elseutasítás2;

utasítás3;

Page 318: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A switch utasítás alacsony szinten

Számítógép architektúrák 318

switch (kifejezés){case kifejezes1:

utasítás1;case kifejezes2:

utasítás2;default:

utasítás3;}utasítás4;

cmp eax, 1je .L3cmp eax, 2je .L4jmp .L2

.L3: mov ebx, 1

.L4: mov ebx, 2

.L2: mov ebx, 3add edx, 1

Page 319: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A break hatása alacsony szinten

Számítógép architektúrák 319

switch (kifejezés){case 1:

utasítás1;break;

case 2: utasítás2;break;

default: utasítás3;}

utasítás4;

cmp eax, 1je .L3cmp eax, 2je .L4jmp .L2

.L3: mov ebx, 1jmp .L5

.L4: mov ebx, 2jmp .L5

.L2: mov ebx, 3

.L5: add edx, 1

Page 320: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Ciklusszervező utasítások

Felépítés: fej + mag + vég

Működés szempontjából: üres, ‘normál’, végtelen

Fajtái: FeltételesKezdőfeltételesVégfeltételes

Előírt lépésszámúElőltesztelőHátultesztelő

Felsorolásos Végtelen

Számítógép architektúrák 320

Page 321: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A C nyelv ciklusai

Kezdőfeltételes (nem 0 feltétel esetén ismétel)

Végfeltételes (nem 0 feltétel esetén ismétel)

Számítógép architektúrák 321

while (feltétel)

utasítás;

for ([kif1]; [kif2]; [kif3])

utasítás;

do

utasítás;

while (feltétel);

Page 322: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A while és for ciklus alacsony szinten

Számítógép architektúrák 322

utasítás0;while (feltétel)

utasítás1;utasítás2;

mov eax, 10jmp .L2

.L3: sub eax, 1

.L2: cmp eax, 0jne .L3add ebx, 1

A for és a while ciklus assembly szinten egyenértékű.

x=5;

goto test;

loop:

y=y+1;

x=x-1;

test:

if (x>0) goto loop;

Page 323: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A do-while ciklus alacsony szinten

Számítógép architektúrák 323

utasítás0;do

utasítás1;while (feltétel);utasítás2;

mov eax, 10

.L3: sub eax, 1cmp eax, 0jne .L3add ebx, 1

A do-while ciklus nem lehet üres ciklus.

Page 324: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Magasszintű programozásleképezése assembly-re 2.

Eljárás, függvény

Lokális változó

Paraméterátadás

Page 325: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Gondolatébresztő kérdések

Hol vannak az hívott eljárás utasítási?Mi a kezdő memória címük?Hova kell átadni a vezérlést?

Melyik utasítással kell folytatni a végrehajtást ha végeztünk az eljárással?Mi a címe a következő utasításnak?Hova kell átadni a vezérlést?

Hol tárolódik a visszatérési cím?

Hol van eltárolva a hívási lánc?

325Számítógép architektúrák

Page 326: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Gondolatébresztő kérdések

Hogyan kerülnek át a paraméterek az alprogramba?

Hogyan kerül vissza a hívóhoz a visszatérési érték?

Ismersz-e változó paraméterszámú függvényt?

Hol van tárolva a lokális változó?A memória melyik részén helyezkedik el?

Miért dinamikus az ‚alap’ változó élettartama?

Miben különbözik a static változótól?

326Számítógép architektúrák

Page 327: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Gondolatébresztő kérdések

Melyik program a gyorsabb? Miért?#include<math.h>

int main(){

int a,b=-23;

a=abs(b);

return 0;}

#define abs(x) ((x)<0)?(-1*(x)):(x)

int main(){

int a,b=-23;

a=abs(b);

return 0;}

327Számítógép architektúrák

Page 328: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Gondolatébresztő kérdések

Mit ír az alábbi program a képernyőre?#include<stdio.h>

int b=2;

void one(int a){

a=a+1;}

int main(){

one(b);

printf(”%d %d\n”,a,b);

return 0;}

328Számítógép architektúrák

Page 329: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Gondolatébresztő kérdések

Hányszor fut le az eljárás?#include<stdio.h>

void one(int a){

if(a>0) one(a-1);

}

int main(){

one(1000000);

return 0;

}

329Számítógép architektúrák

Page 330: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Gondolatébresztő kérdések

Mit csinál a program?#include<stdio.h>

void one(){

int T[10000000];

T[12345]=67;

printf(”%d”,T[12345]);

}

int main(){

one();

return 0;

}

330Számítógép architektúrák

Page 331: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Gondolatébresztő kérdések

Mit ír az alábbi program a képernyőre?#include<stdio.h>

void one(){

int a=3-4;}

void two(){

int b;

printf(”%d\n”,b);}

int main(){

one();

two();

return 0;}

331Számítógép architektúrák

Page 332: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Alprogram

Az újra felhasználhatóság és a procedurális absztrakció eszköze

Komponensei:

Név

Formális paraméterlista

Törzs

Környezet

Fajtái:

Eljárás

Függvény332Számítógép architektúrák

Page 333: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Eljárás

Tevékenységet hajt végre

Aktiválás utasításszerűen lehet

Befejezés a törzs végére érve vagy befejeztető utasítással

Folytatás a hívás utáni utasítással

void procedure(int a, char b){

printf(”%d %c”,a,b);

} // C nyelven nincs eljárás…

procedure(3,’A’);…

333Számítógép architektúrák

Page 334: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Függvény

Értéket határoz meg

Aktiválás kifejezésben

Befejezés általában befejeztető utasítás révén visszatérési érték megadásával

Folytatás a kifejezés kiértékelésnél

int function(int a, char b){

return a+b;

}…

x=2*function(3,’A’)+1;…

334Számítógép architektúrák

Page 335: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A verem

Last In First Out tároló

Tetejének a memóriacímét a verem mutató regiszter (SP) tárolja

Push és Pop művelet

A verem mérete korlátos

Veremhez gyakran hozzá kell férni

Általában gyorsítótárazott (cache)

Adat kivétele nem fizikai törlés

Külön memóriaszegmensben van335Számítógép architektúrák

Page 336: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Eljárás hívás alacsony szinten…

hívó_utasítása_1

hívó_utasítása_2

eljárás_hívás

hívó_utasítása_3

hívott_utasítása_1

hívott_utasítása_2

befejeztetés

PC

SP

1

2

3

12

7

8

9

50

10

RAM:

old_PC

4

11

336

6

Számítógép architektúrák

Page 337: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Hívási lánc

Az alprogramok hívhatnak újabb alprogramokat, azok továbbiakat, …

A visszatérési címek folyamatosan a verem tetejére kerülnek (A verem mérete nő.)

A hívási lánc dinamikusan épül fel, bomlik le

A lánc minden tagja aktív, de csak a legutóbbi működik

Rekurzió: egy aktív alprogram meghívása

337Számítógép architektúrák

Page 338: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Lokális változók

Az programegységben deklarált nevek (változók) a programegység lokális nevei (változói)

Nem elérhetőek a programegységen kívülről

C nyelvnél (alapesetben):

Statikus hatáskörkezelés

Dinamikus élettartam kezelés

Nincs automatikus kezdőérték

338Számítógép architektúrák

Page 339: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Lokális változó alacsony szinten

Az alprogramba lépéskor a verem tetején a visszatérési cím található

A verembe mentjük a bázis regiszter értékét

A veremmutató (SP) értékét átmásoljuk a bázis regiszterbe (BP)

Átállítva a veremmutató értékét hagyunk helyet a lokális változók számára a veremben

A verem nem csak LIFO módon kezelhetőA lokális változók ‚bázis relatív’ címzéssel elérhetőek

339Számítógép architektúrák

Page 340: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Lokális változó alacsony szinten

void eljar(){

int a=1;

int b=2;

int c=3;

… *

}

Számítógép architektúrák 340

a=1

b=2

c=3

730

734

738

742

???

régi ebp

746

750

ret. cím754

esp=734

ebp=750

[ebp-8]

[ebp-4]

[ebp-12]

* A RAM tartalma:

Page 341: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Lokális változó alacsony szinten

eljar: push ebp

mov ebp, esp

sub esp, 16

mov DWORD PTR [ebp-12], 1

mov DWORD PTR [ebp-8], 2

mov DWORD PTR [ebp-4], 3

mov esp, ebp

pop ebp

ret

Számítógép architektúrák 341

Page 342: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Paraméter kiértékelés

Formális- és aktuális paraméter összerendelés

Sorrendi kötés

Név szerinti kötés

Számbeli egyeztetés

Azonos paraméterszám

Eltérő paraméterszám

Típusegyeztetés

Típusegyezés

Típus konverzió

342Számítógép architektúrák

Page 343: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Paraméterátadás

Érték szerinti

Cím szerinti

Eredmény szerinti

Érték-eredmény szerinti

Név szerinti

Szöveg szerinti

Az adatmozgás iránya fontos

C nyelvben: csak érték szerinti paraméterátadás343Számítógép architektúrák

Page 344: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Érték szerinti paraméterátadás

Formális paraméternek van címkomponense ahívott területén.

Aktuális paraméternek van érték komponense.

Az aktuális paraméter értéke átkerül a hívottalprogram területén lefoglalt címkomponensre.

Az információátadás egy irányú.

Az alprogram a saját területén dolgozik.

A hívott alprogram nem tudja hol van a hívó.

344Számítógép architektúrák

Page 345: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Függvényhívás alacsony szinten

1. A hívó a verembe teszi az aktuális paramétereket fordított (!) sorrendben. (sorrendi kötés, számbeli egyeztetés)

2. A verembe bekerül a visszatérési cím (PC aktuális értéke).

3. PC megkapja a hívott alprogram kezdőcímét.

4. Szekvenciálisan lefutnak a hívott utasításai. Hívott alprogram menti a regisztereket, felhasználja a veremben lévő paramétereket .Meghatározódik a visszatérési érték.

Computer Architectures

Page 346: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Függvényhívás alacsony szinten

5. Visszatérési érték betétele egy meghatározott általános regiszterbe (rax vagy st0/(x)mm0).

6. Lokális változók felszabadítása.

7. Veremből visszatérési cím (hívást követő utasítás

címe) átmásolása a PC-be (visszatérés).

8. Visszatérési érték a meghatározott regiszterben.

9. Paraméterek kitakarítása a veremből.

10. Végrehajtás folytatása a következő utasítással.

Computer Architectures

Page 347: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Függvényhívás alacsony szinten

Egyes esetekben…

A paraméterek meghatározott sorrendben regiszterekbe kerülnek, itt adódnak át. (El kell

menteni a korábbi tartalmat. Egész és valós külön.)

Float/double paraméterek száma az eax-ben.

A visszatérési érték néha a verembe kerül a visszatérési cím alá.

A paraméterek kitakarítása a veremből lehet a hívó vagy a hívott feladata is

Computer Architectures

Page 348: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Példa C nyelven

int fuggv(int c){

int a;

a=c+1; *

return a;

}

int main(int argc,

char *argv[]){

int a, b;

a=argc;

b=fuggv(a);

return b;

}

Számítógép architektúrák 348

730

734

738

742

746

750

754

esp=726

ebp=734

[ebp-8]

[ebp-4]fuggv: a

régi ebp

fuggv: c

param.

visszatér.cím

main: a

ősi ebp

main: b

758

762

[ebp+4]

[ebp+8]

[ebp+12]

[ebp+16]

726

766

770

[ebp+20]

* A RAM tartalma:

vere

m k

eret

Page 349: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Példa assembly-ben #1fuggv: push rbp

mov rbp, rsp

sub rsp, 8

mov eax, DWORD PTR [rbp+16]

mov DWORD PTR [rbp-8], eax

mov eax, DWORD PTR [rbp-8]

add eax, 1

mov DWORD PTR [rbp-4], eax

mov eax, DWORD PTR [rbp-4]

mov DWORD PTR [rbp+16], eax

mov rsp, rbp

pop rbp

ret

Számítógép architektúrák 349

Page 350: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Példa assembly-ben #2main: push rbp

mov rbp, rsp

sub rsp, 8

mov DWORD PTR [rbp-8], edi

mov eax, DWORD PTR [rbp-8]

push rax

call fuggv

pop rax

mov DWORD PTR [rbp-4], eax

mov eax, DWORD PTR [rbp-4]

mov rsp, rbp

pop rbp

ret

Számítógép architektúrák 350

Page 351: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Cím szerinti paraméterátadás

Formális paraméternek nincs címkomponense ahívott területén.

Aktuális paraméternek van cím komponense ahívó területén.

Az aktuális paraméter címe átkerül a hívottalprogramhoz, aki itt dolgozik.

Az információátadás két irányú.

Az alprogram a hívó területén dolgozik.

Gyorsabb, de veszélyesebb.

351Számítógép architektúrák

Page 352: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

A C nyelv és az assembly

Inline assembly C-ben

asm(” movl $10, %eax ”);

C forráskód fordítás assembly-re gcc-vel

gcc -S -masm=intel prog.c

Kimenet: prog.s

Assembly forráskód fordítás gcc-vel

gcc prog.s

Kimenet: a.out

Számítógép architektúrák 352

Page 353: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Képernyőre írás lehetőségei.TEXT:.string "This is a text.\n"

...

# printf("This is a text.\n");

mov eax, 0

mov edi, OFFSET FLAT:.TEXT

call printf

# puts("This is a text.\n");

mov edi, OFFSET FLAT:.TEXT

call puts

# write(1,"This is a text.\n",16);

mov edi, 1

mov esi, OFFSET FLAT:.TEXT

mov edx, 16

call write

# interrupt

mov eax, 4

mov ecx, OFFSET FLAT:.TEXT

mov edx, 16

int 0x80

Számítógép architektúrák 353

Page 354: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

OpenMP

Open Multi-Processing API

Osztott memória modell

Folyamatos fejlesztés 1997 óta

Támogatott nyelvek: C, C++, Fortran

Támogatott operációs rendszer: Windows, Linux

Tartalmaz:

Fordítási direktívákat

Könyvtári függvényeket

Környezeti változókat

Számítógép architektúrák 354

Page 355: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

OpenMP

Folyamaton belül párhuzamosan futó szálak

Egyik szál kitüntetett: master

Feladat- és adat párhuzamosság

Számítógép architektúrák 355

Feladat 1 A B

Feladat 3 A B

Feladat 4 x w

Feladat 5 x w

Feladat 2 A B

futásidőmaster

Page 356: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

OpenMP direktívák

#pragma omp parallel

A következő utasítás fusson több szálon is!

#pragma omp parallel

num_threads(4)

A következő utasítás fusson 4 szálon egyszerre!

#pragma omp parallel private(x,y)

shared(a,b)

A következő blokkban szereplő változók közülx és y legyen minden szálon egyedia és b legyen minden szálon közös

Számítógép architektúrák 356

Page 357: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

OpenMP direktívák

#pragma omp parallel for

A következő for ciklus lépéseit oszd fel a szálak között egyenletesen!

#pragma omp parallel for

schedule(guided)

A következő for ciklus lépéseit oszd fel a szálak között terheléstől függően!

#pragma omp parallel for

reduction(+:Sum)

A következő for ciklus elosztott lefutása után az egyes privát Sum változó értékeket add össze!

Számítógép architektúrák 357

Page 358: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

OpenMP direktívák

#pragma omp parallel sections

Hozz létre párhuzamosan futó szakaszokat!#pragma omp section

A következő blokk legyen az imént létrehozott egyik párhuzamosan futó szakasz!

#pragma omp master

A következő utasítást csak a master futassa!#pragma omp single

A következő utasítást csak az egyik szál futassa!

Számítógép architektúrák 358

Page 359: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

OpenMP direktívák

#pragma omp barrier

Hozz létre itt egy szinkronizációs pontot! Egyik szál sem mehet addig tovább amíg mindegyik el nem ért idáig.

#pragma omp critical

A következő utasítás (blokk) alkosson kritikus szakaszt, azaz egyszerre csak egy szál futtathassa ezt a részt (a többiek csak azután hogy az előző befejezte). Kölcsönös kizárás.

Számítógép architektúrák 359

Page 360: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

OpenMP könyvtári függvények

int omp_get_num_procs()

Visszaadja az elérhető processzormagok számátint omp_get_num_threads()

Visszaadja a szálak aktuális számátvoid omp_set_num_threads()

Beállítja hány szálon fussanak a párhuzamos szakaszok

int omp_get_thread_num()

Visszaadja az adott szál azonosítóját

Számítógép architektúrák 360

Page 361: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

OpenMP példa// gcc openmp.c -fopenmp

#include<stdio.h>

#include<omp.h>

int IsSame(int *A, int N){

int i, Sum1=0, Sum2=0;

#pragma omp parallel for

for(i=0;i<N;i++){

// #pragma omp critical

Sum1=Sum1+A[i];

}

#pragma omp parallel for reduction(+:Sum2)

for(i=0;i<N;i++)

Sum2=Sum2+A[i];

return Sum1==Sum2;

}

Számítógép architektúrák 361

Page 362: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Ajánlott irodalom

Andrew S. Tanenbaum: Számítógép architektúrák, Panem,

2006

Kovács György: Számítógép architektúrák, DE AVK, 2007

Budai Attila: Mikroszámítógép-rendszerek, LSI Oktatóközpont, 2000

Joseph Cavanagh: X86 Assembly Language and C Fundamentals, CRC Press, 2013

Richard Blum: Professional Assemby Language, Wiley, 2005

Nicholas Charter: Computer architecture, McGraw-Hill, 2001

R. E. Bryant, D. R. O’Hallaron: Computer Systems – A programmer’s perspective, Pearson, 2016

Számítógép architektúrák 362

Page 363: SZÁMÍTÓGÉPARCHITEKTÚRÁK …vargai/download/comparch/SzA.pdfÁbrázolás Fixpontos számábrázolás (2, 4 vagy 8 bájt) Előjeles vagy előjel nélküli BCD Pakolt vagy pakolatlan

Számítógép architektúrák 363

Köszönöm a figyelmet!

Sikeres felkészülést!