Számítógép architektúrák Fazekas Gábor Debreceni Egyetem Károly Róbert Főiskola fazekas.gabor@inf.unideb.hu gfazekas@karolyrobert.hu
Architektúra = szerkezet, felépítés Funkcionális szemlélet Nem vagyunk tekintettel a technikai megvalósításra Funkcionális egység jele: téglalap, beleírva az egység szerepe, pl. printe r Cél: a számítógép működésének megismerése, megértése A gépi nyelv tanulmányozása ehhez fontos segédeszköz Assemblerek szerepe 2016/04/11 2
A számítógép funkcionális felépítése (IBM SYSTEM 360 család, Neumann architektúra) KÖZPONTI EGYSÉG Központi vezérlőegység (CPU, processzor) utasítás vezérlő aritmetikai logikai egység regisztertár belső busz Busz rendszer adatok címek vezérlés Memória (operatív tár, főtár, Input output vezérlő egység (csatorna, channel, I/O processzor) Input output vezérlő egység (csatorna, channel, I/O processzor) Berendezés vezérlő egység (DCU, device control unit) Berendezés vezérlő egység (DCU, device control unit) Berendezés vezérlő egység (DCU, device control unit) Berendezés vezérlő egység (DCU, device control unit) I/O berendezés periféria, (pl. grafikus display) I/O berendezés (pl. grafikus display) I/O berendezés (pl. klaviatúra) I/O berendezés (pl.merevlemez) I/O berendezés (pl. merevlemez) I/O berendezés (pl. mágnesszalag) I/O berendezés (pl. mágnesszalag) Input output RAM, ROM) vezérlő egység I/O berendezés (csatorna, Berendezés (pl. hálózati csatolás) channel, vezérlő egység I/O processzor) 2016/04/11 (DCU, device I/O berendezés 3 control unit) (pl. hálózati csatolás)
Központi vezérlőegység (CPU, processzor) - utasítás vezérlő: felügyel minden eseményt a CPU-n belül, utasítások végrehajtásának vezérlése, órajel szerepe, pipeline, szuperskalár proc. - aritmetikai-logikai egység: implementálja az alapvető aritmetikai és logikai műveleteket (+,-,*,/, shift, and, stb ) - regisztertár: gyors belső tároló (adat, cím, vezérlés) - lebegőpontos egység: törtszámokkal végzett műveletek számára ( kalkulátor ) - kiegészítő egységek (MMX- multimédia támogatás) - SISD, SIMD, MIMD rendszerek (Flynn taxonómia) - XMM, SSE (Streaming SIMD Extensions), SSE2, SSE3 rendszerek - belső busz: belső adat/vezérlőjel -forgalom - CACHE: közbülső (gyorsító) tár cache hit/miss - Memória management egység (MMU): interfész (kapcsolat) az operatív memóriához. - Több magvas (multicore) processzorok, Hyper-Threading technológia 2016/04/11 4
Operatív tár (Main Memory, főtár) - adatok és utasítások tárolására szolgál - elemi tároló egységek lineáris tömbje (funkc. szemlélet!) - elemi tároló egység: bájt (byte): 8 bit (binary digit, Tukey, az információ mérésének alapegysége) - bájt: tekinthető 8 jegyű kettes számrendszerbeli számnak (#) 0 <= # <=255 - helyiértékek, bitpozíciók számozása ( jobbról balra ) - bájtok címzése: Kilo/Mega/Giga,, x 2 10, Kilo ~ KiBi -ROM/RAM - von Neumann elv: a memória homogén, mindenütt tárolható utasítás, vagy adat. - következmény: az utasítás adatként kezelhető (sajnos ez fordítva is megtörténhet!) 2016/04/11 5
Busz rendszer - BUS = Bidirectional Universal Switch - Busz: elektromosan vezető kábelköteg, amely jeleket képes továbbítani a CPU és a memória vagy az I/O vezérlő között - Három típusa van: Vezérlő (control) busz: szinkronizáció Cím (address) busz: memóriahely /készülék azonosítás Adat (data) busz: adatátvitel. - Busz szélessége: vonalak ( kábelek ) száma 2016/04/11 6
I/O vezérlő egység(ek) ~ egy egyszerű processzor (CPU), amely önállóan képes adatokat átvinni egy I/O berendezés és az operatív memória között ~ alternatív elnevezés: channel / csatorna, DMA, I/O adapter ~ párhuzamosan működik a CPU-val! következmény: a CPU és I/O tevékenységek egymást időben átlapolhatják háttér: Moore szabály gyors CPU vs. lassú I/O (berendezés) vö. ENIAC ~ egy I/O processzor akár több I/O készüléket is vezérelhet! 2016/04/11 7
2016/04/11 8
Vissza a CPU-hoz: Regiszterek 1. osztályozás: hardver szoftver 2. osztályozás: rendszer felhasználói 3. osztályozás: vezérlő adat cím 4. 5. 2016/04/11 9
Néhány fontos regiszter Utasításcím mutató / Program számláló (Instruction Pointer / Program counter) (IP / PC) : az éppen végrehajtás alatt levő gépi utasítást szekvenciálisan követő utasítás memóriabeli címét tartalmazza. Ha egy utasítás végrehajtása befejeződött, a CPU mindig erről a címről tölti be a következő utasítást. Betöltés után a PC értéke megnő a beolvasott bájtok számával. Utasítás regiszter: ide kerül a beolvasott utasítás (műtőasztal / feldolgozó szalag) Verem mutató (stack pointer): verem (LIFO STACK) tetejére mutat. Verem (STACK) Speciális adatszerkezet, a veremmutató allokálja! Speciális veremműveletek: push, pop Flag regiszterek: a CPU állapotait tükrözik, vagy indikálják Pl.: carry, zero, parity, overflow, direction, stb Szerepük: Feltételes vezérlésátadás feltételei 2016/04/11 10
Az Intel (IA32) regiszterkészlete (példa) 2016/04/11 11
Az Intel (IA32) címtere 2016/04/11 12
Az Intel (IA32) regiszterkészlete (példa) 2016/04/11 13
Az Intel (IA32) regiszterkészlete (példa) Adattárolás a memóriában: LITTLE- / BIG-endian ábrázolások 2016/04/11 14
Az Intel (IA32) flag-regiszterkészlete 2016/04/11 15
Hogyan működik a CPU? Példa 2016/04/11 16
A gépi utasítások ábrázolása, szerkezete Egy gépi utasítás által tartalmazott információ: Mit kell tenni (milyen gépi műveletet/lépést kell végrehajtani)? operáció Mivel kell tenni (milyen adatokkal kell a műveletet végrehajtani)? operandusok Pl.: összeadás 34 453 A gépi ábrázolás meglehetősen bonyolult (IA32 példa): 2016/04/11 17
2016/04/11 18
Megszakítások & int CPU Megszakítási jel / vonal = bejövő / Input jel Alacsony / Magas állapotok A megszakítások maszkolhatók (a jel nem éri el a CPU-t (disabled) Van kivétel: NMI 2016/04/11 19
Megszakítás források KÜLSŐ BELSŐ I/O MÉRŐKÉSZÜLÉK MÁS CPU ÓRA PROGRAM HIBA PROGRAMOZOTT Véletlen SW_INT Jelentősége: Lehetővé válik olyan események kezelése, amelyek nem a CPU belső órájának megfelelően ütemeződnek, történnek. 2016/04/11 20
Megszakítás kezelés HELYZET: Megszakítási jel (INT) érkezik, a megszakítás megengedett (enabled) 1. A folyamatban levő gépi utasítás befejeződik. (Egy folyamatban, végrehajtás alatt álló utasítást nem lehet megszakítani!) 2. A PC/IP regiszter tartalma tárolódik, mentődik. (Pl.: a memóriába, vagy erre a célra szolgáló regiszterbe, azaz a CPU megjegyzi a következő utasítás címét.) 3. A PC/IP-be betöltődik egy, a megszakítás forrásától függő érték (cím). Pl.: a memóriából (interrupt vector). 4. A CPU kernel/szupervizor módba vált. Megjegyzés: A megszakítás nyomhagyó ugró (vezérlésátadó) utasítás CPU állapotváltással. 2016/04/11 21
CPU működési módok: Megszakítás kezelés 1. Szupervizor (kernel) mód: A gépi utasításkészlet minden utasítása végrehajtható. 2. User (felhaszáló / program) mód: A gépi utasításkészlet egy részhalmaza nem hajtható végre ebben a módban. Ezek a privilegizált utasítások. 3. Duál módú működés: az operációs rendszer magjának (kernel) hardveres támogatása. 4. Privilegizált utasítások: Pl.: az I/O vezérlő, a rendszerórát módosító, a megszakításokat maszkoló utasítások. 2016/04/11 22
Megszakítás kezelés A megszakítási jel elindít egy utasítás sorozatot (programot), amely feldolgozza ezt a jelet, válaszol rá. Amikor a feldolgozás / válaszadás befejeződik, a megszakított program folytatódhat: A PC/IP tartalma visszatöltődik a mentésből, A CPU állapota visszaállítódik az eredeti állapotába. Az interrupt handler (megszakítás kezelő) általános feladatai: Az INT vonalak maszkolása, A regiszterek mentése, Feldolgozás, A maszkolás megszüntetése, 2016/04/11 23
Szoftveres megszakítás Programozott (tervezett) megszakítás. Speciális gépi utasítás létezik, amelynek végrehajtása biztosan kiváltja a megszakítást. Alakja: INT n (alternatív módon pl.: SVC, TRcc) n egy bájtos adat, a gépi kód része. n kiválaszt egy elemet a megszakítási vektorból (szolgáltatást ) Az INT n segítségével egy meghatározott szolgáltatást kérhetünk az operációs rendszertől. System (service) Call : rendszer hívás. 2016/04/11 24
DATA NUMERIC LOGICAL BINARY DECIMAL CHARACTER BIT VECTOR OTHER FIXED POINT FLOATIN G POINT ZONED PACKED ASCII ISO- LATIN I BITMAP PIXEL ANY BUT NUMERIC SIGN + MODULU S SHIFTED TWO S COMPLEMENT IEEE-754 OTHER WINDOW S-1250 UTF, OTHER BAR KOCHBA 2016/04/11 25
Bináris adatok reprezentációi A hexadecimális / oktális számrendszerek szerepe: Egy bináris jelsorozat rövid és tömör ábrázolása. Pl. 00011001 = 19h = 31o (átváltás algoritmusai!) Hexadecimális számrendszer számjegyei : 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F, 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f. A számítógépek nem végeznek műveleteket hexadecimális / oktális számokkal!! Pl. nincs olyan gépi utasítás, amely két oktális számot összeadna. Egy m bites tárolóban 2 m állapot tárolható! m= 8 (bájt): 2 8 = 256; m=16 (szó) : 2 16 = 65536 ; m=32 (duplaszó) : 2 32 = sok filozófia mentes (előjel nélküli, nemnegatív) egészek: 0 # 2 m -1 2016/04/11 26
Bináris adatok reprezentációi A gyakorlatban szükség van pozitív és negatív egész számokra is! 1. megoldás: Vegyük egészeknek egy 0-ra szimmetrikus tartományát, legyen -2 m-1 + 1 X 2 m-1-1, és legyen x, ha x 0 x' = m 1 2 x, ha x 0 Az x x leképezés lényegében kölcsönösen egyértelmű ( a 0-nak két képe van!) és 0 x 2 m -1. Ábrázoljuk x helyett az x -t! A 2 m-1 helyiérték (legbaloldalibb bit): előjelbit, a többiek a szám abszolút értékét jelentik: előjeles abszolút értékes számábrázolás. Példák: m= 8 (bájt): -127 x 127 = 2 7-1; m=16 (szó) : -32767 x 32767 = 2 15 1; m=32 (duplaszó) : 2016/04/11 27
Bináris adatok reprezentációi 2. megoldás: Vegyük egészeknek egy 0-ra (majdnem) szimmetrikus tartományát, legyen -2 m-1 x 2 m-1-1, és legyen x = x + 2 m-1 Az x x leképezés kölcsönösen egyértelmű ( a 0-nak is egy képe van!) és 0 x 2 m -1. Ábrázoljuk x helyett az x -t! A 2 m-1 helyiérték (legbaloldalibb bit): előjelbit (!), a többiekkel együtt a szám eltoltjának értékét jelenti: eltolásos (shifted/biased) számábrázolás. Példák: m= 8 (bájt): -128 x 127 = 2 7-1; m=16 (szó) : -32768 x 32767 = 2 15 1; m=32 (duplaszó) : 2016/04/11 28
Bináris adatok reprezentációi 3. megoldás: Vegyük egészeknek egy 0-ra majdnem szimmetrikus tartományát, legyen -2 m-1 x 2 m-1-1, és legyen x, ha x 0 x ' = m 2 + x, ha x 0 Az x x leképezés kölcsönösen egyértelmű. (0 x 2 m -1) Ábrázoljuk x helyett az x -t! A 2 m-1 helyiérték (legbaloldalibb bit): előjelbit. Komplemens számábrázolás, x az x kettes komplemense. Példák: m= 8 (bájt): -128 x 127 = 2 7-1; m=16 (szó) : -32768 x 32767 = 2 15 1; m=32 (duplaszó) : 2016/04/11 29
Bináris adatok reprezentációi 3.1. Kérdés: Legyen x egy nemnegatív egész szám az ábrázolási tartományból ( 0 x 2 m-1-1 ). Hogyan tudjuk meghatározni (-x) t? Válasz: Ha x 0, akkor (-x) = 2 m + (-x) = 2 m -x = {(2 m -1) x } +1. Megjegyzés: 2 m -1 bináris alakjában minden jegy (m darab) egyes! 3.2. Kérdés: Legyen x egy tetszőleges egész szám az ábrázolási tartományból (-2 m-1 x 2 m-1-1 ). Hogyan tudjuk meghatározni (-x) t? Válasz: Ha x 0, akkor 3.1. Ha x < 0, akkor x > 0, így (-x) = -x. Azonban ekkor x = 2 m + x -x = 2 m - (x ) = {(2 m -1) (x ) } +1. Következmény: Egy kettes komplemens formában ábrázolt szám negatívjának ábrázoltját úgy határozhatjuk meg, hogy minden bitet negálunk és az eredményt inkrementáljuk. 2016/04/11 30
Bináris adatok reprezentációi 3.3. Kérdés: Legyen x és y egy-egy tetszőleges egész szám az ábrázolási tartományból (-2 m-1 x,y 2 m-1-1 ). Milyen feltételek mellett lesz (x + y) = x + y? Válasz (tétel): Ha x + y is benne van az ábrázolási tartományban, akkor (x + y) = x + y (mod 2 m ). Megjegyzés: a legértékesebb (baloldali) bitpozíción keletkező átvitel ignorálandó! Hasonló módon: (x - y) = x + (-y) (mod 2 m ). Megjegyzés: Az aritmetikai műveleteknél nincs különbség a numerikus bitek és az előjelbit között. 2016/04/11 31
Bináris adatok reprezentációi 3.4. Kérdés: Hogyan detektálható a túlcsordulás az összeadás és kivonás során? Túlcsordulás: az eredmény nincs az ábrázolható tartományban. Feltétel: csak x -t és y -t (az ábrázoltakat) ismerjük! Tétel: Legyen x és y egy-egy tetszőleges egész szám az ábrázolási tartományból (-2 m-1 x,y 2 m-1-1 ) és jelölje c m-1, c m-2 az x + y képzése során a legbaloldalibb, illetve a következő bitpozíción keletkező átvitelt (carry). Az x + y (mod 2 m ) eredmény akkor és csak akkor helyes, ha c m-1 = c m-2. Példák: m = 4, x = - 3, x = 1101, y = 5, y =0101; x + y =0010, c3=c2=1, o.k. m = 4, x = - 3, x = 1101, y = - 6, y =1010; x + y =0111, c3=1,c2=0!! 2016/04/11 32
Bináris adatok reprezentációi 3.5. Kérdés: Hogyan térhetünk át m bites kettes komplemens ábrázolásról m + k bites ábrázolásra? Válasz: egészítsük ki az m bitet az előjelbittel azonos k darab vezető bittel! Fordított irányban is működik! Előjel-kiterjesztés (sign extension) Példák: m = 8, x = - 7, x = 256 + (-7) = 249 = 11111001. m = 16, x = - 7, x = 65636 7 = 11111111 11111001. A -1 ábrázolása: (-1) = 2 m -1 = 1111 11 (m darab 1-es!) 2016/04/11 33
Bináris adatok reprezentációi 3.6. Kérdés: Hogyan szorozhatunk össze egy m bites és egy n bites, kettes komplemens formában ábrázolt számot? Az eredmény biztosan elfér m+n biten (nincs túlcsordulás). Probléma: Legyen x és y egy-egy m bites és n bites kettes komplemens formában ábrázolt szám! Általában nem igaz, hogy (x y) = x y! Megoldás: BOOTH algoritmus (Andrew Donald Booth, 1951.) Legyen x és y egy-egy m bites és n bites, kettes komplemens formában ábrázolt szám! Legyenek A,S,P m+n+1 bites segédváltozók. 2016/04/11 34
Bináris adatok reprezentációi BOOTH algoritmus Legyen x és y egy-egy m bites és n bites kettes komplemens formában ábrázolt szám! Legyenek A,S,P m+n+1 bites segédváltozók. 1. Inicializálás: A: x 0 0 m bit n bit 1b S: P: -x 0 0 m bit n bit 1b 0 y 0 m bit n bit 1b 2016/04/11 35
Bináris adatok reprezentációi BOOTH algoritmus (folytatás) 2. Ha P legjobboldalibb bitpárja 01, akkor legyen P = P + A (átvitel eldobva). 10, akkor legyen P = P + S (átvitel eldobva). 00, vagy 11, akkor legyen P = P! 3. Toljuk el P-t eggyel jobbra aritmetikailag! 4. Ismételjük meg a 2. és 3. lépéseket n-szer! 5, Dobjuk el P legjobboldalibb bitjét: eredmény P-ben! Megjegyzés: Probléma van, ha x = 2 m-1! Megoldás: pótbit. 2016/04/11 36
Bináris adatok reprezentációi BOOTH algoritmus (példa) Legyen x=3, y=-4, (m=n=4)! Akkor A = 0011 0000 0, S = 1101 0000 0, P = 0000 1100 0. 1. iteráció: P = 0000 1100 0 P = 0000 0110 0 (shift) 2. iteráció: P = 0000 0110 0 P = 0000 0011 0 (shift) 3. iteráció: P = 0000 0011 0 P = P + S = 1101 0011 0 P = 1110 1001 1 (shift) 4. iteráció: P = 1110 1001 1 P = 1111 0100 1 (shift) Eredmény: 1111 0100 = -12 2016/04/11 37
Bináris adatok reprezentációi 2016/04/11 38
Bináris adatok reprezentációi Lebegőpontos számok Pontosság bizonyos valós (racionális) számok nem ábrázolhatók véges sok számjegy segítségével, pl.: 1/3 = 0.33, π = 3.141595 ez a tulajdonság függ a választott számrendszertől! pl.: 0.1 dec = 00011 0011 0011. bin Binárisan racionális számok: ha x = p/2 k (p, k egészek) akkor (és csak akkor) x ábrázolható, mint véges bináris tört. pl.: 5/4, 3/8, 7/16, stb. 2016/04/11 39
Bináris adatok reprezentációi Lebegőpontos számok ábrázolása Alapelv: ha x = m e k x normalizált alakja, akkor legyen x (m,k). Rögzített alap (e) esetén a megfeleltetés kölcsönösen egyértelmű! Klasszikus (IBM System360) ábrázolás: Binárisan racionális számok: ha x = p/2 k (p, k egészek) akkor (és csak akkor) x ábrázolható, mint véges bináris tört. pl.: 5/4, 3/8, 7/16, stb. 2016/04/11 40
Bináris adatok reprezentációi Klasszikus (IBM System360) lebegőpontos ábrázolás 32 biten sign(m) k =k+64 m 1 bit 7 bit 24 bit k = k + 64 : a karakterisztika 64-es eltoltja 7 biten m a normalizált mantissza ( m ) legértékesebb (a bináris pont utáni) 24 bitje 1. Példa: e=2 x = 257 dec = 100000001 bin = 0.100000001 10 9 bin ahonnan k = 9 + 64 = 73 = 1001001 ; m = 10000000 10000000 00000000 x = 01001001 10000000 10000000 00000000 = 49808000h 2016/04/11 41
2. Példa: e= 16 Bináris adatok reprezentációi ahonnan x = 257 dec = 101 hex = 0.101 10 3 hex k = 3 + 64 = 67 = 1000111 = 47 hex ; m = 101000 x = 47101000h 3. Példa: e= 16 x = 0.1 dec = 0.199999 hex ~ 0.199999 10 0 hex ahonnan k = 0 + 64 = 64 = 1000000 = 40 hex ; m = 199999 x = 40199999h Megjegyzés: x = 0.1 dec nem ábrázolható pontosan! (relatív pontosság!) 2016/04/11 42
Bináris adatok reprezentációi IEEE 754 lebegőpontos ábrázolás 32 biten sign(m) k =k+127 m 1 bit 8 bit 23 bit e=2; a mantissza normalizált, ha 1 m < 2, azaz m = 1.xxxx. A mantisszának csak a törtrészét ábrázoljuk! k = k + 127 : a karakterisztika 127-es eltoltja 8 biten; -126 k 127. m a normalizált mantissza ( m ) bináris pont utáni 23 bitje. k =0, ill. k = 255 egyéb lehetőségeket kódolnak. Megjegyzés: IEEE 754 64 bites ábrázolás esetén k = k + 2047 : a karakterisztika 2047-es eltoltja 12 biten; -2046 k 2047. m a normalizált mantissza ( m ) bináris pont utáni 51 bitje. Megnövelt ábrázolási tartomány és relatív pontosság 2016/04/11 43
Bináris adatok reprezentációi IEEE 754 lebegőpontos ábrázolás 32 biten 1.Példa: e=2 x = 1 dec = 1.0 bin = 1.0 10 0 bin ahonnan k = 0 + 127 = 127 = 01111111 ; m = 0000000 00000000 00000000 x = 00111111 10000000 00000000 00000000 = 3F800000h 2. Példa: e=2 x = 257 dec = 100000001 bin = 1.00000001 10 8 bin ahonnan k = 8 + 127 = 135 = 10000111 ; m = 0000000 10000000 00000000 x = 01000011 10000000 10000000 00000000 = 43808000h 2016/04/11 44
Bináris adatok reprezentációi IEEE 754 lebegőpontos ábrázolás 32 biten 2016/04/11 45
2016/04/11 46