Máté: Architektúrák1. előadás1 Számítógép architektúra (architecture) A felhasználónak látszódó gép: adattípusok, utasítások, szolgáltatások összessége. Számítógép-felépítés (organization): a közvetlenül nem szükséges részekkel is foglalkozik. Számítógép - utasítás – programozás: gépi nyelv (kód), strukturált felépítés. Bonyolultabb nyelvek: fordítás, értelmezés. Virtuális gépek ábra.
Máté: Architektúrák1. előadás2 Gépi, nyelvi szintek (1.2. ábra) 0: digitális logika szintje: kapu (gate), AND, OR. … 1 bites memória, regiszter 1: mikroarchitektúra szintje: mikroutasítások, mikroprogram - nem minden gépen létezik, de a gépi utasítások végrehajtását gyakran mikroprogram végzi, ekkor ez a szint interpreter a 2. szintnek. Regiszterek, aritmetikai-logikai egység - ALU Adatfolyam - adatút 2: gépi nyelv szintje (tényleges gépi utasítások), itt dől el a kompatibilitás kérdése.
Máté: Architektúrák1. előadás3 3: operációs rendszer szintje: speciális kiegészítők (memóriakezelés, párhuzamos futtatás). Általában értelmezés. A szint utasításait az operációs rendszer vagy közvetlenül a 2. szint hajtja végre Eddig: rendszerprogramozók területe Az eddigi szintek programjai hosszú számsorozatok (természetesen ma már szimbolikusan készülnek) 4: assembly nyelv szintje (ezek tényleges nyelvek, fordítás), szimbolikus leírás (A2) 5: problémaorientált nyelv szintje: pascal, C, C++, …, adatbázis kezelők, …
Máté: Architektúrák1. előadás4 Hardver, szoftver fejlődése Többszintű gépek kialakulása. Kezdetben két szint: digitális logika, utasítások. Mikroprogram (hardver bővítése programozással): Wilkes, Gyorsan elterjedt. Csúcs: hatvanas, hetvenes évek; nagyon sok új utasítás (*, /, …, ciklusszervezés, megszakítások) - később hardverrel gyorsabbak megvalósíthatók lettek - folyamatosan változó határok.
Máté: Architektúrák1. előadás5 Operációs rendszerek A hatvanas években készültek először: supervisor, rendszerhívások, kötegelt (batch) feldolgozás, közvetlen telefonos összeköttetés (remote terminálok), időosztás (timesharing).
Máté: Architektúrák1. előadás6 Történelmi áttekintés (1.4. ábra) 0. generáció: Mechanikus gépek Pascal: (1642), összeadás, kivonás Leibniz ( ), szorzás, osztás is Babbage ( ), 1834: differencia gép - összeadás, kivonás, kiírás fémlemezre Csak egy programja volt Babbage: analitikus gép. Programozható: utasítások lyukkártyáról (Ada Augusta Lovelace). Egységek: memória (1000 db 50 jegyű szám), malom (+, -, *, /), input, output (lyukkártya). Zuse, 1936: elektromágneses relék használata.
Máté: Architektúrák1. előadás7 1. generáció: elektroncső ( ). COLOSSUS (Turing, 1943): titkosírások megfejtése - 30 évre titkosítva. ENIAC (Electronic Numerical Integrator and Computer - Mauchley, Eckert, 1943): cső, 140 KW, 30 tonna, 20 darab 10 decimális jegyes regiszter. Neumann János ig nem sikerült befejezni. Nyári iskola - sok próbálkozás. EDSAC (Wilkes, Cambridge, 1949), EDVAC (1949), UNISYS. Eckert és Mauchley sikertelenül próbálják találmánynak elfogadtatni.
Máté: Architektúrák1. előadás8 ENIAC: 10 cső egy decimális számjegyhez! Dugaszolással programozható. Neumann János (1.5. ábra): vezérlő, aritmetikai-logikai egység, memória, input, output. EDSAC: 2-es számrendszer, 4096 szavas memória. 40 bites szavak: előjeles egész, vagy két utasítás. Tárolt program: 8 bites utasításkód, 12 bites cím. Akkumulátor. Nem volt lebegőpontos aritmetika! IBM 701 (1953) 2K 36 bites memória. Legnagyobb 1. generációs: IBM 709 (1958). Szegeden: M3 (1963).
Máté: Architektúrák1. előadás9 2. generáció: tranzisztor ( ). Tranzisztor feltalálása: 1948, Nobel díj: Első jelentős tranzisztoros gép: DEC PDP-1 (1961). Teljesítménye fele az IBM 7090-nek, ára a töredéke. Csak US $. 4K 18 bites szó, 5 s ciklusidő, 512x512 display! 50 eladott gép. Néhány évvel később: PDP-8: omnibusz (általános sín, 1.6. ábra) eladott gép. Magyarországon: KFKI, TPAi. IBM 7090, 7094.
Máté: Architektúrák1. előadás10 Első üzlet-orientált gép (1961): IBM 1401 byte-szervezésű memória. Burroughs B5000 (1963), Cél: hatékony ALGOL fordítót lehessen írni! Első szuper-gyors gép (1964): CDC 6600 (tervező: Seymour Cray) Párhuzamos utasítás-végrehajtás (RISC). Szegeden: MINSZK 22.
Máté: Architektúrák1. előadás11 3. generáció: integrált áramkör ( ). Integrált (szilícium alapú) áramkör: R. Noyce, IBM problémája: 7094 és 1401 nem kompatibilis. (1964): 360-as sorozat (1.7 ábra). Szocialista országokban R-sorozat. Emuláció: a sorozat gépein az előző típusok programjai futtathatók. Multiprogramozás (DOS, POWER, OS). 24 bites címtartomány (16 Mbyte). A nyolcvanas évek közepéig elég, akkor áttérés a 32 bites címre. DEC: PDP-11 (1970): 16 bites~TPA Eddig csak számításigényes problémák -----
Máté: Architektúrák1. előadás12 4. generáció: VLSI (Very Large Scale Integration) (1980- ). Néhány millió elem egy lapkán (chipen). Személyi számítógépek. Kezdetben zacskóban: nyomtatott áramköri lap, IC-k, köztük általában INTEL 8080, kábelek, tápegység, hajlékony lemez CP/M operációsrendszer, Commodore, Apple, Spectrum-80. IBM PC (I-8088 alapú) a terveket publikálták - klónok. Microsoft: MS-DOS, OS/2, Windows. …
Máté: Architektúrák1. előadás13 Technológiai fejlődés Moore törvény (1965): Az egy lapkán elhelyezhető elemek száma másfél évenként duplázódik (1.8. ábra). Azt várják, hogy 2020-ig teljesülni fog. Minden más területen (lemezek, adatátvitel,...) hasonló sebességű a fejlődés. A szoftverek mérete, bonyolultsága is követi ezt: Nathan első törvénye: A szoftver gáz: kitölti a rendelkezésére álló teret. Jelenlegi (1999) számítógép típusok (1.9. ábra).
Máté: Architektúrák1. előadás14 Pentium II. (1.10, 11. ábra) UltraSPARC II Igény: UNIX-ot kisgépekre. Hálózati gépek: Ethernet. SUN (Stanford University Network ). Motorola CPU alapú gépek ben félmilliárd $ a bevételük. SPARC (Scalable Processor ARChitecture ). 32 bites, 36 MHz. Több cégnek átadták a gyártási jogot, verseny → gyors fejlődés! UltraSPARC I: 64 bites, multimédiás utasítások. UltraSPARC II, III: gyorsítás + kevés módosítás.
Máté: Architektúrák1. előadás15 picoJava II C, C++ nem eléggé védett! Java (kilencvenes évek közepe): objektum-orientált, biztonságos nyelv. Cél (SUN): bináris formátumú, WEB-en letölthető programok, applet-ek. JVM (Java Virtual Machine): fordítók, értelmezők (Java-ról JVM-re, JVM-ről saját gépre). picoJava II: Java bináris programok végrehajtására szolgáló architektúra.
Máté: Architektúrák1. előadás16 Fixpontos számok Pl.: kétjegyű decimális számok és előjel: Ábrázolási tartomány: [-99, +99]. Pontosság (két „szomszédos” szám különbsége): 1. Maximális hiba: (az ábrázolási tartományba eső) tetszőleges valós szám, és a hozzá legközelebb lévő ábrázolható szám különbsége: 1/2. Számolási pontatlanságok: a = 70, b = 40, c = - 30 esetén a + (b + c) = 80, (a+b) + c = -20. túlcsordulás
Máté: Architektúrák1. előadás17 Helyértékes ábrázolás Pl.: 521,25 10 = 5 * * * * * Általában (q alapú számrendszer esetén): a n a n-1 …a 0,b 1 b 2 …b m = a n *q n +a n-1 *q n-1 + …+a 0 +b 1 *q -1 +b 2 *q -2 + …+b m *q -m 0 a i, b j q Átszámolás számrendszerek között: egész rész: osztással, tört rész: szorzással.
Máté: Architektúrák1. előadás18 Pl. 23, átszámítása kettes számrendszer-be. Egész rész: Tört rész: /2marad egész * , , = 10111, Véges tizedes tört nem biztos, hogy binárisan is véges!
Máté: Architektúrák1. előadás19 B: Bináris, O: Oktális, D: Decimális H: Hexadecimális BODHBODH A B C D E F
Máté: Architektúrák1. előadás20 Példa bináris összeadásra: 1. összeadandó: (= 90) 2. összeadandó: (=124) Átvitel: Eredmény: (=214)
Máté: Architektúrák1. előadás21 Bit: egy bináris számjegy. Bájt (Byte): 8 bit, 8 bites szám. Előjeles fixpontok számok: 2 8 = 256 különböző 8 bites szám lehetséges. Melyek jelentsenek negatív értékeket? Előjeles számok szokásos ábrázolásai: előjeles abszolút érték, egyes komplemens, kettes komplemens, többletes.
Máté: Architektúrák1. előadás22 Előjeles abszolút érték: előjel és abszolút érték, az első bit (balról) az előjel: 0: +, 1: - Pl.: = , = Jellemzők: a nulla kétféleképpen ábrázolható, a legkisebb szám -127, a legnagyobb 127.
Máté: Architektúrák1. előadás23 Egyes komplemens: az első bit az előjel (0: pozitív, 1: negatív). Egy szám -1-szerese (negáltja) úgy kapható meg, hogy a szám minden bitjét negáljuk (ellenkezőjére változtatjuk). Pl.: = , = Jellemzők: a nulla kétféleképpen ábrázolható, a legkisebb szám -127, a legnagyobb 127.
Máté: Architektúrák1. előadás24 Kettes komplemens: az első bit az előjel (0: pozitív, 1: negatív). Egy pozitív szám negáltja úgy kapható meg, hogy az egyes komplemenshez egyet hozzáadunk. Pl.: = , = egyes komplemens, = kettes komplemens. Jellemzők: a nulla egyértelműen ábrázolható, a legkisebb szám -128, a legnagyobb 127.
Máté: Architektúrák1. előadás25 Többletes: a szám és a többlet összegét ábrázoljuk binárisan (ez már pozitív!). m bites szám esetén a többlet általában 2 m-1 vagy 2 m-1 – 1 Pl.: = , 128-többletes ábrázolás = =103 Jellemzők (128 többlet esetén): a nulla egyértelműen ábrázolható, a legkisebb szám -128, a legnagyobb 127. Megjegyzés: ez a rendszer azonos a kettes komplemenssel fordított előjellel. Használata: a lebegőpontos számok kitevő-részénél.
Máté: Architektúrák1. előadás26 BCD (Binary Coded Decimal) ábrázolás: minden decimális számjegyet négy biten ábrázolunk. Negatív számok BCD ábrázolása: 9 vagy 10 komplemens kóddal. Pl.: = , = (9 komplemens), = (10 komplemens).
Máté: Architektúrák1. előadás27 Lebegőpontos számok előjel karakterisztika törtrész Sok ekvivalens ábrázolási lehetőség, a leggyakrabban a törtrész első számjegye az adott szám első, nullától különböző számjegye (normalizált alak). Példa: 254 = 0,0254x10 4 = 0,254x10 3. Megjegyzések: A nulla ábrázolásához külön megállapodásra van szükség (általában csupa nulla számjegyből áll). A lebegőpontos ábrázolásoknál is meghatározható a legkisebb és a legnagyobb ábrázolható szám, továbbá a legkisebb és legnagyobb hiba.
Máté: Architektúrák1. előadás28 Feladat: Ábrázoljuk nyolcas számrendszerben et, előjelbittel kezdve, a kitevő legyen 1 jegyű (3 bites), 4-többletes, a törtrész 4 jegyű. Megoldás: 254/8 6 31/87 3/ , normalizált alak: 0,376x8 3, a megoldás: = törtrész 4-többletes kitevő
Máté: Architektúrák1. előadás29 IEEE 754 standard single 32 bites, double 64 bites (, extended 80 bites). single: Ha 0 < a kitevőrész < 255, a szám normalizált. Normalizált tört vezető 1-es bitje nincs ábrázolva! típuselőjelkitevőrész| törtrész | single1 bit 8 bit 127-többletes 23 bit double1 bit 11 bit 1023-többletes 52 bit
Máté: Architektúrák1. előadás30 Normalizált számok ( IEEE 754, single) 0 < kitevőrész < 255 kitevőrész = kitevő + 127, 127 többletes. Lehetséges kitevők:-126, -125, Közvetlenül a törtrész elé kell képzelni egy 1-est (implicit bit) és a bináris pontot. Az ábrázolt szám: (1 + törtrész) * 2 kitevő Pl.:0, = 3F = 3F , = BFC kitevőrész 1. törtrész
Máté: Architektúrák1. előadás31 Normalizálatlan számok (IEEE 754, single) kitevőrész = 0 A bináris pontot 0 előzi meg. Az ábrázolt szám: (törtrész) * Pl.: = = = = = 007F FFFF 16 kitevőrész 0. törtrész kitevőrész = 255 Túl nagy számok (túlcsordulás): (végtelen): pl. 1/0, NaN (Not a Number): pl. /
Máté: Architektúrák1. előadás32 Adattípusok Alapkérdés: mit támogat a hardver (milyen utasítások vannak) ? Ami nincs (pl. dupla pontosságú egész aritmetika), azt szoftveresen kell megcsinálni. Numerikus típusok: előjel nélküli és előjeles egész számok (8, 16, 32, 64 bites). lebegőpontos számok (32, 64, néha 128 bites), binárisan kódolt decimális számok: decimális aritmetika (COBOL Y2K = év probléma).
Máté: Architektúrák1. előadás33 Az egyes gépek által támogatott numerikus típusok P: Pentium II, U: UltraSPARC, J: JVM típus8 bit16 bit32 bit64 bit128 bit előjeles egész P U J U J előjel nélküli egész P U U BCD P lebegőpontos P U J U
Máté: Architektúrák1. előadás34 Karakterkódolás ASCII (American Standard Code for Information Interchanges), 7 bites: vezérlőkarakterek, az angol abc kis és nagy betűi, szimbólumok, ábra Latin-1 kód: 8 bites. IS 8859: kódlap, IS : magyar betűk is. UNICODE (IS – 2-33 ábra). 16 bites: kódpozíciók (code point). Általában egy nyelv jelei egymás után vannak – a rendezés könnyű. Kínai, japán, koreai: fonetikus szimbólumok, Han ideogramok (20992 jel, nincsenek szótár szerint rendezve).... Japán íráshoz kevés (> kanji jel van). Új jelek? Braille nincs benne.
Máté: Architektúrák1. előadás35 További nem numerikus típusok Logikai érték (boolean): igaz, hamis. Leggyakrabban egy bájtban (szóban) ábrázolják. Bit térkép. Mutató: Memória cím. Utasításformátumok Műveleti kód, operandus(ok), Címzés: az operandus címének megadása (5.9. ábra). Utasítás: fix hosszúságú (5.10. ábra), változó hosszúságú.
Máté: Architektúrák1. előadás36 Egyszerű sín alapú számítógép (2.1. ábra) CPU feladata: a memóriában tárolt program végrehajtása. Részei: aritmetikai-logikai egység (ALU), feladata: az utasítások végrehajtása, regiszter készlet, feladata: részeredmények, vezérlő információk tárolása. A legfontosabbak: - utasításszámláló (Program Counter): PC, - utasításregiszter (Instruction Register): IR, vezérlőegység, feladata: a program utasításainak beolvasása, az ALU, a regiszterek vezérlése, adatút (data path, 2.2. ábra).
Máté: Architektúrák1. előadás37 CPU (Central Processor Unit) feladatai a végrehajtandó utasítás betöltése, a betöltött utasítás típusának megállapítása, az ezt követő utasítás címének megállapítása, ha kell, az operandus(ok) címének megállapítása, ha kell, az operandus(ok) betöltése, az utasítás végrehajtása, ha kell, az eredmény címének megállapítása, ha kell, az eredmény tárolása.
Máté: Architektúrák1. előadás38 Címzési módszerek Három cím: cél = forrás1 + forrás2. Regiszterek használata rövidíti a címeket, de nyújtja a programot, ha az operandus csak egyszer kell. A legtöbb operandust többször használjuk. Implicit operandusok: Két cím: regiszter2 = regiszter2 + forrás1. Egy cím: akkumulátor = akkumulátor + forrás1. Nulla cím: verem, pl. az IJVM IADD utasítása.
Máté: Architektúrák1. előadás39 Utasítás típusok: regiszter-memória utasítások: a regiszterek és a memória közötti adatforgalom (betöltés, tárolás), regiszter-regiszter utasítások: összeadás, kivonás, … Az eredmény is regiszterben keletkezik. …
Máté: Architektúrák1. előadás40 Központi memória (2.9. ábra) A programok és adatok tárolására szolgál. Bit: a memória alapegysége, egy 0-t vagy 1-et tartalmazhat. Memória rekesz (cella): több bit együttese. Minden rekesz ugyanannyi bitből áll. Minden rekeszhez hozzá van rendelve egy szám, a rekesz címe. Egy rekeszre a címével hivatkozhatunk. A rekesz a legkisebb címezhető egység (2.10. ábra). Ma ez legtöbbször 8 bites (bájt – byte). A legtöbb processzor több egymás utáni bájttal is tud dolgozni (szó – word).
Máté: Architektúrák1. előadás41 Bájtsorrend (2.11., 12. ábra) A legmagasabb helyértékű bájt a szóban a legalacsonyabb címen: legmagasabb címen: nagy (big) endian kis (little) endian MSBfirstLSBfirst Most/Least Significant Byte first Ha egy 32 bites szó bájtjainak értéke rendre: a, b, c, d, akkor a szó értéke: a* b* c*256+d a+b*256+c* d*256 3 A szövegek karaktereit mindkét esetben növekvő bájt sorrendben helyezik el: problémák a gépek közötti kommunikációban!
Máté: Architektúrák1. előadás42 Az Intel 8086/8088 társzervezése A memória byte szervezésű. Egy byte 8 bitből áll. word, double word. Byte sorrend: Little Endian. A negatív számok 2-es komplemens kódban. szegmens, szegmens cím a szegmensen belüli „relatív” cím, logikai cím, virtuális cím, OFFSET, displacement, eltolás, Effective Address (EA) fizikai cím (Address)
Máté: Architektúrák1. előadás43 Az Intel 8086/8088 üzemmódjai valós (real) védett (protected) szegmens cím szegmens regiszter ↓ szegmens regiszter page tábla elem tartalma * 16 ↓ szegmens kezdőcíme fizikai cím szegmens kezdőcíme + szegmensen belüli cím
Máté: Architektúrák1. előadás44 Feladatok Mi a különbség értelmezés és fordítás között? Milyen részei vannak egy négy műveletes zsebszámológépnek? Milyen részei lehetnek egy bonyolultabb műveletek elvégzésére is alkalmas zsebszámológépnek? Mi a Neumann elv? Valamikor 1 mikron átmérőjű volt a mikroprocesszor egy tranzisztora. Moore szabálya szerint mekkora volt az átmérője egy évvel később?
Máté: Architektúrák1. előadás45 Feladatok Konvertáljuk a következő számokat bináris számokká: 1984, 4000, 8192 Hány különböző pozitív egész szám fejezhető ki k számjegy segítségével r alapszám esetén? Hajtsuk végre a következő számítást 8 bites kettes komplemensű számokon: , , – , –
Máté: Architektúrák1. előadás46 Feladatok Konvertáljuk a következő számokat IEEE egyszeres pontosságúba. Az eredményt 8 jegyű hexadecimális számként adjuk meg: 9, 5/32, -5/32, 6,125. Konvertáljuk a következő egyszeres pontosságú IEEE lebegőpontos számokat decimális számokká: 42E48000H, 3F880000H, H, C7F00000H. Mikor fordul elő, hogy két lebegőpontos számon végrehajtott művelet eredményénél a szignifikáns bitek száma drasztikusan csökken.