debreceni egyetem informatikai rendszerek és hálózatok tanszék

308
HARDVERKÖZELI PROGRAMOZÁS 1 Dr. Varga Imre Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék 2017. február 14.

Upload: others

Post on 31-Oct-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

HARDVERKÖZELI PROGRAMOZÁS 1

Dr. Varga Imre

Debreceni Egyetem

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

2017. február 14.

Page 2: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Követelmények

� Gyakorlat (aláírás)

�Ó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)

�C programozási „szintfelmérő” (plusz pontért)

� Írásbeli vizsga (gyakorlati aláírás esetén)

� Jegy: 75% elméleti vizsga + 25% gyakorlati eredmény

Hardverközeli programozás 1 2

Page 3: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Mérnökinformatikus képzés

Döntéstámogató rendszerek

Mesterséges intelligencia alapjai

Bevezetés a LabView programozásba

Magas szintű programozási nyelvek 1-2

Hardverközeli programozás 1-2

Digitális technika

Elektronika 1-2

Fizika 1-2

Hardverközeli programozás 1 3

absz

takc

ió, l

ogi

kai s

zin

t

Page 4: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Tematika

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

� Digitális elektronika alapjai

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

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

� Modern processzorok

� A programozás operációsrendszerhez kapcsolódó aspektusai

� Konkrét processzor architektúrák�Utasításkészletük, programozásuk

Hardverközeli programozás 1 4

Page 5: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

A tárgy célja

� Összeköttetés teremtése

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

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

� Hardver ismeretek átadása

� 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

Hardverközeli programozás 1 5

Page 6: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Fixpontos számábrázolás

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

A C nyelv típusainak reprezentációja

Page 7: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Mi az outputja a programnak?

Hardverközeli programozás 1 7

Page 8: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Adatszervezés

Adategységek

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

� Nibble (fél byte): 4 bit

� Byte: 8 bit

� Félszó: 16 bit

� Szó: (többnyire) 32 bit

� Dupla szó: 64 bit

Hardverközeli programozás 1 8

21625665.5364.294.967.29618.446.744.073.709.551.616

Page 9: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Adattípus

Megadás

� Reprezentáció

� Tartomány

� Műveletek

A C nyelv aritmetikai (egyszerű) típusai

� [unsigned|signed] char

� [unsigned|signed] [short|long|long long*] int

� float

� [long*] double

Hardverközeli programozás 1 9

*ISO C99

Page 10: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Fixpontos számábrázolás

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

� Előjel nélküli eset

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

�adott számú biten

� Példa (1 byte esetén)4110 � 1010012 �

� N biten ábrázolható

� legkisebb szám: 0

� Legnagyobb szám: 2N-1

Hardverközeli programozás 1 10

0 0 1 0 1 0 0 1

Page 11: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 byte esetén)-4110 � -1010012 �

� N biten ábrázolható

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

� Legnagyobb szám: 2N-1-1Hardverközeli programozás 1 11

1 0 1 0 1 1 11

meghatározza az előjelet

Page 12: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 12

Page 13: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

�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

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

Hardverközeli programozás 1 13

Page 14: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 byte: 0000 vagy (0011*) bevezető1395 � 00000001 00000011 00001001 00000101

Pakolt BCD

� 2 számjegy – 1 byte: nibble alapú1395 � 00010011 10010101

Hardverközeli programozás 1 14

*ASCII miatt

Page 15: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Egész típus

Ábrázolás

� Fixpontos számábrázolás�Előjeles vagy előjel nélküli

� BCD

Bájtsorrend

� Little-endian: LSB elől (gazdagép bájtsorrend)

� Big-endian: MSB elől (hálózati bájtsorrend)

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

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

Hardverközeli programozás 1 15

*ISO C99

Page 16: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Karakter típus

� Értékei karakter kódok

� Fixpontos számábrázolás

� C: ASCII (1 byte, előjeles/előjel nélküli, egészként használható)

� Java: Unicode (2byte, előjel nélküli)

� ASCII ⊂ ISO-8859-1 (Latin 1) ⊂ Unicode

� ASCII kódtábla

� 0x00-0x1F: vezérlő karakter

� 0x30-0x39: számjegy

� 0x41-0x5A: angol nagy betű

� 0x61-0x7A: angol kis betű

Hardverközeli programozás 1 16

Page 17: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Felsorolásos típus

� Alacsony szinten int-ként reprezentált

� C nyelven a két kód assembly szinten azonos

Hardverközeli programozás 1 17

Page 18: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

A C egész típusai

Hardverközeli programozás 1 18

típus méret tartomány

[signed] char1 byte

-128 127

unsigned char 0 255

[signed] short2 byte

-32.768 32.767

unsigned short 0 65.535

[signed] int4 byte

-2.147.483.648 2.147.483.647

unsigned int 0 4.294.967.295

[signed] long8 byte(4 byte)

-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 long8 byte

-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

Page 19: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 19

Page 20: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Lebegő pontos szabvány

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

� Előjel

�Pozitív: 0; Negatív: 1

� Formátumok

Hardverközeli programozás 1 20

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 21: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 21

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 22: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 22

Page 23: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

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

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

Hardverközeli programozás 1 23

Page 24: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

A C nyelv valós típusai

Valós típusú konstansok formátuma

� 0.751

� +.75100

Valós típusok paraméterei

Hardverközeli programozás 1 24

méret minimum maximum pontosság

float 4 byte 1.18 · 10-38 3.40 · 10+38 ≈7 számjegy

double 8 byte 2.23 · 10-308 1.80 · 10+308 ≈15 számjegy

longdouble*

10 byte 3.36 · 10-4932 1.19 · 10+4932 ≈19 számjegy

� .751f

� 75.1e-2

� 0.751L

� 0.0751E+1

Page 25: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Mutató típus

� Indirekt hivatkozásra szolgálnak

� Tartományának elemei tárcímek

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

� A C nyelvben

�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

Hardverközeli programozás 1 25

Page 26: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Rekord típus

� Különböző típusú területek együtt

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

� Nem biztos, hogy folytonos memóriaterületen

Hardverközeli programozás 1 26

nem használt byte

A.a A.b A.c A.d

sizeof(A)==16

B.a B.bB.cB.d

sizeof(B)==24

Page 27: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

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

Hardverközeli programozás 1 27

Page 28: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 � j � 1 E

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

Hardverközeli programozás 1 28

�,� �

��,� ��,�

��,� ��,�

��,� ��,�

→ � � ��,���,���,���,���,���,�

Page 29: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Sztring típus

� Karakterek sorozata

� Elemei a megfelelő belső reprezentációban(pl. C: 1byte, ASCII; Java: 2 byte, 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)

Hardverközeli programozás 1 29

Page 30: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

Hardverközeli programozás 1 30

egyenértékű utasítások

Page 31: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Digitális elektronikai alapok

Félvezető

Dióda, tranzisztor

Logikai kapu

Flip-flop

Multiplexer, címdekódoló

Összeadó áramkör

Page 32: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Félvezetők

� „Rossz vezető, rossz szigetelő”

� Ok: szilárdtestek sávszerkezete

�4 vegyérték elektron (Si, Ge)

�Kvantumfizika

�Bohr-féle atommodell

Hardverközeli programozás 1 32

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 33: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 33

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 34: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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.

Hardverközeli programozás 1 34

+-

-+-

-+

+-

-+

+ -+

+ -

+ -+-

-+-

-+

+-

-+

+ -+

+-

-+-

-+

+-

-+

+ -+

+ -

+ -+-

-+-

-+

+-

-+

+ -+

+-töltéssűrűség

elektrosztatikus potenciál potenciálgát

n p

kiürített réteg

Page 35: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Hardverközeli programozás 1 35

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: LED

Page 36: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Tranzisztor

� 2 darab p-n átmenet („összefordított diódák”)

� Kapcsoló, erősítő

Hardverközeli programozás 1 36

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 37: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

A logikai NAND kapu

� 2 bemenetű logikai kapu („nem és”)

� Jele:

� Felépítése, működése:

Hardverközeli programozás 1 37

A B Q

0 0 1

0 1 1

1 0 1

1 1 0

A

B

Vcc

Q

GNDTTL NAND kapu

Page 38: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

További logikai kapuk

� Felépíthetőek NAND kapukból

Hardverközeli programozás 1 38

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 39: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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ó

Hardverközeli programozás 1 39

D

CLK

Q

_Q

D flip-flop

CLK

adat bemenet

adat kimenet

4 bites regiszter

Page 40: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 40

D

C

B

A

Z

S0 S14:1 multiplexer

S0 S1 Z

0 0 A

0 1 B

1 0 C

1 1 D

Page 41: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 41

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 42: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Összeadó áramkör

� Félösszeadó: 2 bit összeadására képes

� Teljes összeadó: 3 bit összeadásáraképes (2 félösszeadó)

Hardverközeli programozás 1 42

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 43: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Ripple-carry összeadó

� Több bites adatok összeadására képes

� Láncba fűzött teljes összeadók

Hardverközeli programozás 1 43

++++

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 44: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

A processzorok felépítése

Számítógép architektúra

CPU

Regiszterek

Fetch-execute ciklus

RISC / CISC processzorok

Page 45: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

Hardverközeli programozás 1 45

Page 46: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 46

Page 47: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 elterjedtHardverközeli programozás 1 47

Page 48: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

� Processzor

� Memória

� Input-Output interfész

� Buszrendszer

� Perifériák

Hardverközeli programozás 1 48

Processzor Memória I/O interfész

Buszrendszer

Perifériák

Page 49: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 49

Processzor Memória I/O interfész

címbusz

adatbusz

vezérlő busz

Page 50: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Processzor

� Központi feldolgozó egység (CPU)

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

�Vezérlés, utasítás végrehajtás

� 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ő gyorsítótár

Hardverközeli programozás 1 50

Végrehajtó egység (EU)

Page 51: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Regiszterek

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

�Mérete általában az adatbusz szélességével egyenlő

�Általában 8-512 bit

� 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

� Néha átnevezhetőek

� 3 kategória:

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

Hardverközeli programozás 1 51

Page 52: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 (általában) átáll 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

Hardverközeli programozás 1 52

Page 53: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 hol van)

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

Hardverközeli programozás 1 53

Page 54: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 54

Page 55: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 55

�Átvitel (CF)

�Nibble átvitel (AF)

�Túlcsordulás (OF)

�Előjel (SF)

�Megszakítási maszk (IF)

�Nulla (ZF)

�Paritás (PF)

�…

Page 56: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 56

Page 57: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 kapcsolódnak

� Tömbök, sztringek és lokális változók esetén hasznos

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

Hardverközeli programozás 1 57

Page 58: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Regiszterek

Memória cím regiszter (MAR)

� Összeköti a 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ű

Hardverközeli programozás 1 58

Page 59: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Regiszterek

Memória adat regiszter (MDR)

� Összeköti a 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ű

Hardverközeli programozás 1 59

Page 60: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 60

A operandus B operandus

eredmény

utasítás állapotALU

Page 61: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 61

Page 62: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 62

Page 63: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Ó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

� Arányos a CPU által disszipált hővel

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

� 1 MHz – 3 GHz

� Gyakran változtatható (turbo, powersave)

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

Hardverközeli programozás 1 63

Page 64: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

� 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

Hardverközeli programozás 1 64

Page 65: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 65

Page 66: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 66

Page 67: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 67

Page 68: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Olvasási ciklus

� DIY Calculator esetén

Hardverközeli programozás 1 68

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

Page 69: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Írási ciklus

� DIY Calculator esetén

Hardverközeli programozás 1 69

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

Page 70: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 71: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 71

Magasszintűprogramnyelvek

Assembly programozás

Gépi kód

Page 72: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 72

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

cím2. Operandus + eredmény cím

Műveleti kód1. Operandus

cím

Page 73: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Program és utasítás felépítés

Hardverközeli programozás 1 73

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 74: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 74

Page 75: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 75

Page 76: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

Hardverközeli programozás 1 76

Page 77: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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őjeltelen/előjeles szorzás (mul, imul)

� Előjeltelen/előjeles osztás (div, idiv)

� Összehasonlítás (cmp)

Hardverközeli programozás 1 77

Page 78: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

Hardverközeli programozás 1 78

Page 79: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Utasítás típusok

Bitléptető utasítások

� Logikai/előjeltelen balra léptetés (shl)

� Logikai/előjeltelen 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)

Hardverközeli programozás 1 79

Page 80: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

Hardverközeli programozás 1 80

Page 81: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Utasítás típusok

Stringkezelő (byte-sorozat 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)

Hardverközeli programozás 1 81

Page 82: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

� …

Hardverközeli programozás 1 82

Page 83: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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� …

Hardverközeli programozás 1 83

Page 84: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Címzési módok

Rejtett címzés

� Nincs igazi cím megadás

� Pl. ha nincs operandus

Hardverközeli programozás 1 84

Op.kód1

Op-kód2

500

501

502

503

Page 85: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 85

Op.kód

Adat

500

501

502

503

Page 86: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 86

Op.kód

Adat500

501

502

503

regiszter

Page 87: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 87

Op.kód

731

500

501

502

503

Adat

730

732

733

731

Page 88: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 88

Op.kód

731

500

501

502

503

945

730

732

733

731

Adat

943

944

946

945

Page 89: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 memóriacíme

Hardverközeli programozás 1 89

Op.kód

500

501

502

503

Adat

730

732

733

731

regiszter

731

Page 90: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 90

Op.kód

700

500

501

502

503

Adat

730

732

733

31

index reg.

731

Page 91: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 91

Op.kód

11

500

501

502

503

Adat

730

732

733

720

bázis reg.

731

Page 92: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 92

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

SUB művelet

Regiszter a forrás

Regiszteres címzés

32 bites regiszter

d s MOD REG R/MOpKód

Forrás:EBX

Cél:EAX

Page 93: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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!Hardverközeli programozás 1 93

Page 94: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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éstHardverközeli programozás 1 94

Page 95: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Magasszintű programozásleképezése assembly-re 1.

Programozás alapjai

Kifejezéskiértékelés

Elágaztatás

Ciklusszervezés

Page 96: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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?5/( short )2==.5+’2’

Hardverközeli programozás 1 96

Page 97: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 ;

Hardverközeli programozás 1 97

Page 98: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 98

Kom

ple

xitá

s n

ő

Page 99: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 99

Page 100: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 100

Page 101: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Változó

� Komponensei: név, attribútum, cím, érték

� Hatáskör: statikus, dinamikus

� Deklaráció: explicit, implicit, automatikus

� É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

Hardverközeli programozás 1 101

Page 102: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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-benHardverközeli programozás 1 102

Page 103: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Kifejezés

� Komponensei: típus, érték

� Formálisan: operátor, operandus és zárójel

� Operátor: uniáris, bináris, ternáris

� Alak: infix (2+3)*4perfix * + 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

Hardverközeli programozás 1 103

Page 104: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 , ecxeax + ebx * ecx & edx add eax , ebx

and eax , edx

Hardverközeli programozás 1 104

Page 105: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 105

Page 106: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Elágaztató utasítás

Kétirányú elágaztató utasítás C nyelven:if (kifejezés)utasítás1;[elseutatsí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;]}

Hardverközeli programozás 1 106

Page 107: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

A feltételes utasítás alacsony szinten

Hardverközeli programozás 1 107

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 108: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

A switch utasítás alacsony szinten

Hardverközeli programozás 1 108

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 109: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

A break hatása alacsony szinten

Hardverközeli programozás 1 109

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 110: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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ételes

�Kezdőfeltételes�Végfeltételes

� Előírt lépésszámú�Előltesztelő�Hátultesztelő

� Felsorolásos� Végtelen

Hardverközeli programozás 1 110

Page 111: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

Hardverközeli programozás 1 111

while (feltétel)utasítás;

for ([kif1 ]; [kif2]; [kif3])utasítás;

doutasítás ;

while (feltétel);

Page 112: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

A while és for ciklus alacsony szinten

Hardverközeli programozás 1 112

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ű.

Page 113: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

A do-while ciklus alacsony szinten

Hardverközeli programozás 1 113

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 114: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Magasszintű programozásleképezése assembly-re 2.

Eljárás, függvény

Lokális változó

Paraméterátadás

Page 115: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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?

115

Page 116: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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?

116

Page 117: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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;}

117

Page 118: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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;}

118

Page 119: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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;}

119

Page 120: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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;}

120

Page 121: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Gondolatébresztő kérdések

� Mit ír az alábbi program a képernyőre?#include <stdio.h >void one (){

int a= -43;}void two (){

int b;printf (” %d\n”,b);}

int main(){one();two ();return 0;}

121

Page 122: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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ény122

Page 123: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Eljárás

� Tevékenységet hajt végre

� Aktivizá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’);…

123

Page 124: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Függvény

� Értéket határoz meg

� Aktivizá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;…

124

Page 125: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 van125

Page 126: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

11

RAM:

old_PC

4

10

126

6

Page 127: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 miden tagja aktív, de csak a legutóbbi működik

� Rekurzió: egy aktív alprogram meghívása

127

Page 128: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Lokális változók

Az programegységben deklarált nevek (változók) a programegység lokális nevei (változói).

C nyelvnél (alapesetben):

� Statikus hatáskörkezelés

� Dinamikus élettartam kezelés

� Nincs automatikus kezdőérték

128

Page 129: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 verembenA verem nem csak LIFO módon kezelhető

� A lokális változók ‚bázis relatív’ címzéssel elérhetőek

129

Page 130: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Lokális változó alacsony szinten

void eljar (){

int a=1;

int b=2;

int c=3;

… *

}

Hardverközeli programozás 1 130

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 131: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Lokális változó alacsony szinten

eljar : push ebpmov ebp , espsub esp , 16mov DWORD PTR [ebp-12], 1mov DWORD PTR [ebp -8], 2mov DWORD PTR [ebp -4], 3…mov esp , ebppop ebpret

Hardverközeli programozás 1 131

Page 132: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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ó

132

Page 133: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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ás133

Page 134: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

É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ó.

134

Page 135: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 felhasználja a veremben lévő paramétereket (bázis relatív, lokális változó).Meghatározódik a visszatérési érték.

135

Page 136: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Függvényhívás alacsony szinten

5. Visszatérési érték betétele a verembe (a visszatérési cím alá).

6. Veremből visszatérési cím (hívást követő utasítás

címe) kivétele.

7. Vezérlés visszaadása a megadott címre (lásd 6. pont).

8. Visszatérési érték kivétele a veremből.

9. Paraméterek kitakarítása a veremből.

10. Végrehajtás folytatása a következő utasítással.

136

Page 137: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

� … a visszatérési értéket az egyik regiszteren keresztül adjuk vissza

� A paraméterek kitakarítása a veremből lehet a hívó vagy a hívott feladata is

Hardverközeli programozás 1 137

Page 138: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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;}

Hardverközeli programozás 1 138

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:

Page 139: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Példa assembly-ben #1fuggv: push rbp

mov rbp, rspsub rsp, 8mov eax, DWORD PTR [rbp+16]mov DWORD PTR [rbp-8], eaxmov eax, DWORD PTR [rbp-8]add eax, 1mov DWORD PTR [rbp-4], eaxmov eax, DWORD PTR [rbp-4]mov DWORD PTR [rbp+16], eaxmov rsp, rbppop rbpret

Hardverközeli programozás 1 139

Page 140: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Példa assembly-ben #2main: push rbp

mov rbp, rspsub rsp, 8mov DWORD PTR [rbp-8], edimov eax, DWORD PTR [rbp-8]push raxcall fuggvpop raxmov DWORD PTR [rbp-4], eaxmov eax, DWORD PTR [rbp-4]mov rsp, rbppop rbpret

Hardverközeli programozás 1 140

Page 141: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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.

141

Page 142: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Megszakítási rendszer és input/output

Megszakítás, kivétel

Megszakításkezelés

Input/output

Buszrendszerek, perifériák

Page 143: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Szükségesség

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

� Ezek ez eszközök azonnali választ várnak aprocesszortól, függetlenül attól mivelfoglalkozik éppen.

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

� A megszakítás szolgál a CPU figyelménekfelhívására.

Hardverközeli programozás 1 143

Page 144: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 144

Page 145: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

�Csapda: pl. nyomkövetésnél

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

� Programozott kivétel (rendszerhívás)

Hardverközeli programozás 1 145

Page 146: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 146

Page 147: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 147

Page 148: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Fogalmak

Maszkolás

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

�Egyszerre, globálisan, 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

Hardverközeli programozás 1 148

Page 149: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Megszakításkezelés

Hardverközeli programozás 1 149

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 150: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

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

Hardverközeli programozás 1 150

Page 151: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Megszakításkezelési technikák

Hardverközeli programozás 1 151

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 152: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Input/Output

� Kapcsolat a külvilággal

�Hardveres I/O interfészek

�Szoftver interfész (device driver)

�Perifériás eszközök

Hardverközeli programozás 1 152

Periféria 1 Periféria 2

Külső buszok

Processzor Memória

Rendszer busz

I/O interfészek

buffer buffer

Page 153: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Input/output interfészek

� Kapcsolat 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 átvitel

�Párhuzamos átvitel

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

Hardverközeli programozás 1 153

Page 154: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 154

Page 155: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 155

Page 156: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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ággalHardverközeli programozás 1 156

Page 157: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Hardverközeli programozás 1 157

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 158: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 158

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

Page 159: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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: 4000-31500 MB/s (v4.0)

� Fejlesztés: 2003-

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

Hardverközeli programozás 1 159

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

Page 160: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

(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

Hardverközeli programozás 1 160

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

Page 161: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

SATA busz

� Serial ATA

� Soros belső busz

� Pont-pont kapcsolat

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

� Fejlesztés: 2003-

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

Hardverközeli programozás 1 161

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

Page 162: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

USB busz

� Universal Serial Bus

� Soros külső busz

� Plug-and-Play, elosztható (hub)

� Átviteli sebesség: 0,18-1250 MB/s (v3.1)

� Fejlesztés: 1996-

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

Hardverközeli programozás 1 162

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

Page 163: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Vezérlő hub-ok

Az alaplap fontos chip-jei

� Northbridge (memóriavezérlő hub)

� Southbridge (I/O vezérlő hub)

Hardverközeli programozás 1 163

CPU

North-bridge

South-bridge

AGP RAM

BIOS PCI IDE USB LAN I/O

Page 164: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Eszközmeghajtó

� Device Driver

� 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

Hardverközeli programozás 1 164

Page 165: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Perifériák

Hardverközeli programozás 1 165

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 166: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Adattárolás

Operatív memória

Cache

Háttértárak

Page 167: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Tárolók osztályzása

� Írhatóság szempontjából�Csak olvasható, olvasható-írható

� Hierarchiabeli helye szerint�Elsődleges, másodlagos, harmadlagos

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

� Adatmegőrzés szerint�Megmaradó, nem megmaradó

� Elérés szerint�Soros elérésű, tetszőleges elérésű

Hardverközeli programozás 1 167

Page 168: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 memória

Hardverközeli programozás 1 168

Page 169: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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, SDD

�CD-, DVD-meghajtó

�Memóriakártya

Hardverközeli programozás 1 169

Page 170: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 170

Page 171: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Programable 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)

Hardverközeli programozás 1 171

Page 172: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Félvezető memóriák

Erasable Programable ROM (EPROM)

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

� Majd ismét újraírható

Electrically Erasable Programable ROM (EEPROM)

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

Flash memória

� Speciális továbbfejlesztett EEPROM

� Blokkonként (gyorsabban) törölhető

Hardverközeli programozás 1 172

Page 173: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Félvezető memóriák

Random Access Memory (RAM)

� Véletlen 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)

Hardverközeli programozás 1 173

Page 174: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Syncronous Dynamic RAM (SDRAM)

� Órajellel szinkronizált válasz

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

Hardverközeli programozás 1 174

Page 175: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

Hardverközeli programozás 1 175

Page 176: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

� Megoldási ötlet

�Kö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

Hardverközeli programozás 1 176

Page 177: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 is�Szekvenciá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

Hardverközeli programozás 1 177

Page 178: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 tartalmaz

� CPU cache, GPU cache, Web cache, DNS cache

� CPU cache

�Többszintű: L1, L2, L3 cache

�On-chip vagy off-chip

Hardverközeli programozás 1 178

Page 179: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

� A tárolás egysége a „Sor”

� A Sor részei a „Tag” (toldalék) és a „Blokk”

� A Tag tartalmazza a Blokk főtárbeli címét és egyéb vezérlő információkat

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

Hardverközeli programozás 1 179

Cache

Tag Blokk

128 … DEF

131 … MNO

129 … GHI

RAM

ABC 127

DEF 128

GHI 129

JKL 130

MNO 131

CPU

Page 180: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 180

Page 181: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

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

� Az írást a cache nem gyorsírja

Hardverközeli programozás 1 181

Page 182: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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.

Hardverközeli programozás 1 182

Page 183: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

A cache működése

Hardverközeli programozás 1 183

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 184: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

A cache jellemzői

� A gyorsítótár mérete

� A Blokk mérete

� 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ő

Hardverközeli programozás 1 184

Page 185: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Cache hierarchia

Hardverközeli programozás 1 185

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 186: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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];

...

Hardverközeli programozás 1 186

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

Page 187: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 187

Page 188: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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: <2TB

� Írási/olvasási sebesség: 100MB/s - 1GB/s

�Fordulatszám: 5400 - 15000 rpm

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

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

Hardverközeli programozás 1 188

Page 189: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 189

Page 190: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Szektor

Hagyományos szerkezet512 bájtos szektor

Advanced Format (AF)4K native

Hardverközeli programozás 1 190

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 191: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Szektor hatása programokra...

#define SIZE 2048

char BUFFER[SIZE];

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

write(out, BUFFER, SIZE);

close(out);

...

Hardverközeli programozás 1 191

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

Page 192: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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++;}

Hardverközeli programozás 1 192

Page 193: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 193

Page 194: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 Hardverközeli programozás 1 194

Page 195: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 195

Page 196: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 196

Page 197: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 197

Page 198: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 198

Page 199: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

FAT file rendszer

Hardverközeli programozás 1 199

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 200: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Linux file rendszerek

� Pl.: Ext2, Ext3, Ext4

� Fájl tárolása

� Könyvtár tárolás

Hardverközeli programozás 1 200

attribútumok mutató filetartalom

a lemezen

file 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

file1 inode ID 1

file2 inode ID 2

file3 inode ID 3

file4 inode ID 4

Page 201: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Linux file rendszerek

Könyvtár hierarchia

Hardverközeli programozás 1 201

könyvtáribejegyzés

inode file adat

inode tábla

sys

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

partíció

adat szektorok

Page 202: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

inode

Hardverközeli programozás 1 202

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 203: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

RAID

� Redundant Array of Independent Disks

� 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)

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

Hardverközeli programozás 1 203

Page 204: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

RAID példák

Hardverközeli programozás 1 204

A1

A3

A5

A7

A2

A4

A6

A8

RAID 0 (összefűzés)

A1

A2

A3

A4

RAID 1 (tükrözés)

AP

BP

CP

DP

RAID 5 (forgó paritás)

A1

B1

C1

D1

A2

B2

C2

D2

RAID 4 (paritás lemez)

Lemez 1 Lemez 2 Lemez 1 Lemez 2

Lemez 1 Lemez 2

A1

A2

A3

A4

Lemez 3

AP

B2

C2

DP

A1

B1

CP

D1

A2

BP

C1

D2

Lemez 1 Lemez 2 Lemez 3

Page 205: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Memória hierarchia

Regiszter

L1 cache

L2 cache

L3 cache

Memória

Lemez

Harmadlagos tár

Hardverközeli programozás 1 205

ns

µs

ms

s

Elérési idő

Page 206: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Memória hierarchia

Regiszter

L1 cache

L2 cache

L3 cache

Memória

Lemez

Harmadlagos tár

Hardverközeli programozás 1 206

kB

MB

GB

TB

EB

B

Tároló kapacitás

Page 207: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

A programozás és az operációs rendszer

Rendszerhívás

Folyamatok

Szignál

Ütemezés

Virtuális memória

Page 208: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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ő

Hardverközeli programozás 1 208

Page 209: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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ául�Folyamatok kezelése

�Fájlok kezelése

�Eszközök kezelése

Hardverközeli programozás 1 209

Page 210: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 210

Szoftver

Felhasználói program

Kernel

Hardver

Könyvtári függvény

Rendszerhívás

Eszköz meghajtó

Hardver eszköz

Page 211: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

Hardverközeli programozás 1 211

Page 212: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Folyamat

� Egyedi azonosítóval rendelkezik (PID)

� Minden folyamatnak egy szülő- és több gyermek folyamata lehet

� Multi-programozott környezetben egynél több folyamat is lehet egyszerre

� 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

Hardverközeli programozás 1 212

Page 213: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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).

Hardverközeli programozás 1 213

Page 214: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Folyamat állapotátmenetek

Hardverközeli programozás 1 214

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 215: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

� …Hardverközeli programozás 1 215

Page 216: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

Hardverközeli programozás 1 216

Page 217: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 217

Page 218: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 218

Page 219: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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!

Hardverközeli programozás 1 219

Page 220: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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.

Hardverközeli programozás 1 220

Page 221: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Hardverközeli programozás 1 221

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 222: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Hardverközeli programozás 1 222

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 223: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Hardverközeli programozás 1 223

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 224: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Modern architektúrák

Futószalag végrehajtás

Párhuzamos végrehajtás

Szuperskalár és vektor processzorok

Page 225: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 225

Page 226: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

„Klasszikus” architektúrák

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

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

� CPU órajel frekvencia növelés

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

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

� Gyorsabb buszrendszer

� Társprocesszor alkalmazás (FPU)

� …Hardverközeli programozás 1 226

Page 227: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 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)

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

Hardverközeli programozás 1 227

Page 228: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

�ST0-ST7

� Külön utasításkészlet

�Pl. FADD, FMUL, FDIV, FSQRT, FSIN, …

Hardverközeli programozás 1 228

Page 229: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 229

Page 230: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 230

Page 231: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 231

Page 232: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Pipelining

Hardverközeli programozás 1 232

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 233: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 233

Page 234: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 234

Page 235: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 235

Page 236: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Hazárdok kezelése

� Adat hazárd kezelése�Pipeline buborék

�Operandus/eredmény továbbítás (bypassing)

�Sorrenden kívüli végrehajtás (OoOE)

�Regiszter átnevezés

� Strukturális hazárd�Pipeline buborék

� Vezérlési hazárd�Pipeline buborék

�Elágazásbecslés

Hardverközeli programozás 1 236

Page 237: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

Hardverközeli programozás 1 237

Page 238: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Pipeline buborék

Hardverközeli programozás 1 238

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 239: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 239

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 240: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 240

Page 241: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 241

Page 242: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 242

Page 243: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Regiszter átnevezés

Hardverközeli programozás 1 243

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 244: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

Hardverközeli programozás 1 244

Page 245: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Elágazás becslé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

Hardverközeli programozás 1 245

Page 246: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Szuperskalár processzorok

� Órajelenként több utasítás hajtódik végre

� Egy processzor magban több műveleti egység

� ILP és OoOE szekvenciális program esetén

Hardverközeli programozás 1 246

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 247: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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ák�MMX (Intel)

�3DNow! (AMD)

�SSE

�AVX

Hardverközeli programozás 1 247

Page 248: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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!

Hardverközeli programozás 1 248

Page 249: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 249

Page 250: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

Hardverközeli programozás 1 250

Page 251: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Vektor processzorok

AVX2

� int és float adatokra is

� Új utasítások

AVX-512

� 512 bites regiszter (int, float)

� 32 darab (ZMM0-ZMM31)

Hardverközeli programozás 1 251

ZMM0 YMM0 XMM0 MM0

64 bit128 bit256 bit512 bitMMXSSEAVXAVX-512

Page 252: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

VLIW processzorok

� Very Large Instruction Word

� Olyan speciálisan fordított programot igényel, amely explicit módon jelzi a párhuzamosan végrehajtható utasításokat

� Egy „utasítás” (ún. köteg) több kisebb, de egyszerre végrehajtható utasítást tartalmaz

� Szuperskalár ILP és OoOE

� Egyszerűbb hardver bonyolultabb fordító

� Utód: Explicitly Parallel Instruction Computing

Hardverközeli programozás 1 252

Page 253: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 253

Page 254: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Hyper-threading

� Az Intel SMT (Simultaneous MultiThreading) megvalósítása

� Több szál kezelése magon belül

�Több „állapottároló” processzor elem

�Egy „végrehajtó” elem

� Ha egy szálnak várnia kell, addig fusson a másik

� Minden „fizikai” mag két „logikai” magként viselkedik

� Az operációs rendszer támogatás fontos

Hardverközeli programozás 1 254

Page 255: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

Hardverközeli programozás 1 255

Page 256: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 256

Page 257: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

OpenMP

� Folyamaton belül párhuzamosan futó szálak

�Egyik szál kitüntetett: master

� Feladat- és adat párhuzamosság

Hardverközeli programozás 1 257

Feladat 1 A B

Feladat 3 A B

Feladat 4 x w

Feladat 5 x w

Feladat 2 A B

futásidőmaster

Page 258: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 258

Page 259: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 forschedule (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 forreduction (+:Sum)

� A következő for ciklus elosztott lefutása után az egyes privát Sum változó értékeket add össze!

Hardverközeli programozás 1 259

Page 260: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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!

Hardverközeli programozás 1 260

Page 261: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 ez előző befelyezte). Kölcsönös kizárás.

Hardverközeli programozás 1 261

Page 262: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 262

Page 263: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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;}

Hardverközeli programozás 1 263

Page 264: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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ő

Hardverközeli programozás 1 264

CPU

RAM

busz

cso

po

nt

1

CPU

RAM

busz

cso

po

nt

2

összeköttetés

Page 265: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Amdahl törvénye

� N darab processzor (szál) használata nem eredményez N-szeres gyorsulást egy folyamat végrehajtásában

� � � ���

���

���

������

ahol S a gyorsulás, T a futásidő és A a futásidő soros végrehajtású hányada0 ≤ A ≤ 1

Hardverközeli programozás 1 265

processzor szám (N)

gyo

rsu

lás

(S)

A=0,1

A=0,2

A=0,5

Page 266: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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, HDMIHardverközeli programozás 1 266

Page 267: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Á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

Hardverközeli programozás 1 267

Page 268: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 268

Page 269: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Intel x86 architektúra

Processzor felépítés

Memóriakezelés

Assembly nyelv

Page 270: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 270

Page 271: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Memória szegmentáció

� A memória részekre van osztva

�Kód szegmens

�Adat szegmens

�Verem szegmens

�Extra 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

Hardverközeli programozás 1 271

Page 272: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 + offset

� Lineáris cím = fizikai cím

Hardverközeli programozás 1 272

Szegmens kezdőcím (16 bit)

Eltolási cím (16 bit)

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

+

Page 273: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

Hardverközeli programozás 1 273

Page 274: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

x86 regiszterkészlet

Hardverközeli programozás 1 274

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 275: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

x86 regiszterkészlet

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

� EAX

�Elsődleges akkumulátor, szorzás, osztás

� EBX

�Akkumulátor, bázis mutató DS-ben

� ECX

�Akkumulátor, (ciklus)számláló

� EDX

�Akkumulátor, input/output, szorzás, osztás

Hardverközeli programozás 1 275

Page 276: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 276

Page 277: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 277

Page 278: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

x86 regiszterkészlet

EFLAGS regiszter

� Állapot bitek

� Vezérlő bitek

� Rendszer bitek

Hardverközeli programozás 1 278

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 279: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 279

Page 280: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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óHardverközeli programozás 1 280

Page 281: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

x86-64 architektúra

� Visszafelé kompatibilis az x86 (IA-32) architektúrával

� 64 bites általános célú regiszterek (RAX, RBX, RCX, RDX, RBP, RSP, RIP, RSI, RDI, R8-R15)

� 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)

Hardverközeli programozás 1 281

Page 282: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 282

Page 283: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Intel szintaxis.intel_syntax noprefix.globl mainmain: push ebp

mov ebp, espsub esp, 16mov DWORD PTR [ebp-16], 2mov DWORD PTR [ebp-12], 3cmp DWORD PTR [ebp-16], 4jne .L2mov eax, DWORD PTR [ebp-12]mov DWORD PTR [ebp-8], eaxjmp .L3

.L2: mov DWORD PTR [ebp-8], 4

.L3: mov eax, DWORD PTR [ebp-8]add esp, 16pop ebpret

Hardverközeli programozás 1 283

Assembly szintaxis

AT&T szintaxis.att_syntax noprefix.globl mainmain: pushl %ebp

movl %esp, %ebpsubl $16, %espmovl $2, -16(%ebp)movl $3, -12(%ebp)cmpl $4, -16(%ebp)jne .L2movl -12(%ebp), %eaxmovl %eax, -8(%ebp)jmp .L3

.L2: movl $4, -8(%ebp)

.L3: movl -8(%ebp), %eaxaddl $16, %esppopl %ebpret

Page 284: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 (∞)

Hardverközeli programozás 1 284

Page 285: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 ]

Hardverközeli programozás 1 285

Page 286: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 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: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Címzési módok

Effektív cím (EA) megadás alakjainak összegzése

Hardverközeli programozás 1 287

��:��:!�:

�:

"�:#�:

�$%�&'�(

�)*)�)

!)

�+!+*,

�,�$%�&'�(

�)*)�)

!)

�+!+

*,�$%�&'�(

1

248

�$%�&'�(

��1231á'

'�((�

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: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Alprogram hívási konvenció

Hívó szabályai

� Paraméterek fordított sorrendben verembe 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

Hardverközeli programozás 1 288

Page 289: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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)

Hardverközeli programozás 1 289

Page 290: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 290

Page 291: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Képernyőre írás lehetőségei.TEXT:.string "This is a text.\n"...

# printf("This is a text.\n");mov eax, 0mov edi, OFFSET FLAT:.TEXTcall printf

# puts("This is a text.\n");mov edi, OFFSET FLAT:.TEXTcall puts

# write(1,"This is a text.\n",16);mov edi, 1mov esi, OFFSET FLAT:.TEXTmov edx, 16call write

# interruptmov eax, 4mov ecx, OFFSET FLAT:.TEXTmov edx, 16int 0x80

Hardverközeli programozás 1 291

Page 292: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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ás

Hardverközeli programozás 1 292

Page 293: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 293

Page 294: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 294

Page 295: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 295

Page 296: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Intel Core i7

� Megjelenési év 2008

� 64 bites regiszterek (x86-64)

� Mikroarchitektúra: Nehalem, Sandy Bridge, IvyBridge, Haswell, Broadwell, …

� 45-14nm technológia

� 2-6 mag

� LGA aljzat (1000-2000 kontaktus)

� L3 cache, integrált GPU, AVX-512, integrált NorthBridge

Hardverközeli programozás 1 296

Page 297: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Főbb architektúra családok

� Intel X86 �

� Motorola 68000

� MIPS

� Transmeta

� PowerPC

� ARM

� Microchip PIC

� AVR

Hardverközeli programozás 1 297

MCU

CPU

Page 298: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 D1, (A1) ;move 2 bytes from D1 to theaddress stored in A1

Hardverközeli programozás 1 298

Page 299: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

MIPS

� RISC� 32/64 bites� 5 fokozatú pipe-line 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 addressstored in t0 to t1

Hardverközeli programozás 1 299

Page 300: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Transmeta Crusoe

� Alacsony fogyasztás� Szoftveres ISA

�X86 kompatibilitás�Akár Java bájtkód futtatás

� VLIW (128bit)� Megjelenés: 2000� Többszintű cache� Utód: Efficeon� Alkalmazás: tablet-ek, laptop-ok

Hardverközeli programozás 1 300

Page 301: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 301

Page 302: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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� 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

Hardverközeli programozás 1 302

Page 303: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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ött

�Pl.: a PC és egyéb regiszterek memóriára vetítve

MOVLW d’29’ ;move decimal 29 into W

Hardverközeli programozás 1 303

Page 304: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 304

Page 305: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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

Hardverközeli programozás 1 305

Page 306: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

High-Performance Computing

HPC - TOP 1 (2015)

� 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)

Hardverközeli programozás 1 306

Page 307: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

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 AMTC 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

� …

Hardverközeli programozás 1 307

Page 308: Debreceni Egyetem Informatikai Rendszerek és Hálózatok Tanszék

Hardverközeli programozás 1 308

Köszönöm a figyelmet!

Sikeres felkészülést!