Debreceni Egyetem Informatikai Rendszerek és …vargai/download/hardverprog1/...Tematika...
Transcript of Debreceni Egyetem Informatikai Rendszerek és …vargai/download/hardverprog1/...Tematika...
![Page 1: Debreceni Egyetem Informatikai Rendszerek és …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/1.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/2.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/3.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/4.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/5.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/6.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/7.jpg)
Mi az outputja a programnak?
Hardverközeli programozás 1 7
![Page 8: Debreceni Egyetem Informatikai Rendszerek és …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/8.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/9.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/10.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/11.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/12.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/13.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/14.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/15.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/16.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/17.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/18.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/19.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/20.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/21.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/22.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/23.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/24.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/25.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/26.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/27.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/28.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/29.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/30.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/31.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/32.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/33.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/34.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/35.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/36.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/37.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/38.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/39.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/40.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/41.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/42.jpg)
Ö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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/43.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/44.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/45.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/46.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/47.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/48.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/49.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/50.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/51.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/52.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/53.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/54.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/55.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/56.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/57.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/58.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/59.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/60.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/61.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/62.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/63.jpg)
Ó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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/64.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/65.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/66.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/67.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/68.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/69.jpg)
Í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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/70.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/71.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/72.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/73.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/74.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/75.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/76.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/77.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/78.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/79.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/80.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/81.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/82.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/83.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/84.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/85.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/86.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/87.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/88.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/89.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/90.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/91.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/92.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/93.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/94.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/95.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/96.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/97.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/98.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/99.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/100.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/101.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/102.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/103.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/104.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/105.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/106.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/107.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/108.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/109.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/110.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/111.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/112.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/113.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/114.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/115.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/116.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/117.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/118.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/119.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/120.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/121.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/122.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/123.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/124.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/125.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/126.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/127.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/128.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/129.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/130.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/131.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/132.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/133.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/134.jpg)
É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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/135.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/136.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/137.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/138.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/139.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/140.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/141.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/142.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/143.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/144.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/145.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/146.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/147.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/148.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/149.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/150.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/151.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/152.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/153.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/154.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/155.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/156.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/157.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/158.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/159.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/160.jpg)
(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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/161.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/162.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/163.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/164.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/165.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/166.jpg)
Adattárolás
Operatív memória
Cache
Háttértárak
![Page 167: Debreceni Egyetem Informatikai Rendszerek és …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/167.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/168.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/169.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/170.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/171.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/172.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/173.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/174.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/175.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/176.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/177.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/178.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/179.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/180.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/181.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/182.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/183.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/184.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/185.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/186.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/187.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/188.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/189.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/190.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/191.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/192.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/193.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/194.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/195.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/196.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/197.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/198.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/199.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/200.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/201.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/202.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/203.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/204.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/205.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/206.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/207.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/208.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/209.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/210.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/211.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/212.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/213.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/214.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/215.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/216.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/217.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/218.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/219.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/220.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/221.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/222.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/223.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/224.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/225.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/226.jpg)
„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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/227.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/228.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/229.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/230.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/231.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/232.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/233.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/234.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/235.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/236.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/237.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/238.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/239.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/240.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/241.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/242.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/243.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/244.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/245.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/246.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/247.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/248.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/249.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/250.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/251.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/252.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/253.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/254.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/255.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/256.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/257.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/258.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/259.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/260.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/261.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/262.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/263.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/264.jpg)
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
mó
po
nt
1
CPU
RAM
busz
cso
mó
po
nt
2
összeköttetés
![Page 265: Debreceni Egyetem Informatikai Rendszerek és …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/265.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/266.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/267.jpg)
Á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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/268.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/269.jpg)
Intel x86 architektúra
Processzor felépítés
Memóriakezelés
Assembly nyelv
![Page 270: Debreceni Egyetem Informatikai Rendszerek és …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/270.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/271.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/272.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/273.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/274.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/275.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/276.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/277.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/278.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/279.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/280.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/281.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/282.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/283.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/284.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/285.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/286.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/287.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/288.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/289.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/290.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/291.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/292.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/293.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/294.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/295.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/296.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/297.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/298.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/299.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/300.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/301.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/302.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/303.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/304.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/305.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/306.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/307.jpg)
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 …vargai/download/hardverprog1/...Tematika Számábrázolás, adattípus implementáció Digitális elektronika alapjai CPU felépítése](https://reader036.fdocument.pub/reader036/viewer/2022062912/5d16227488c993f36f8b634d/html5/thumbnails/308.jpg)
Hardverközeli programozás 1 308
Köszönöm a figyelmet!
Sikeres felkészülést!