Digitális rendszerek
Korszerű többszintű számítógépek Fordító vs. értelmező Mikroprogram vs. drótozott végrehajtás Operációs rendszerek bevezetése Mikroprogramok kibővítése, fejlesztése Mikroprogramozás lezüllesztése 2
Számítógépek generációi Nulladik generáció: mechanikus számológépek (1642-1945) Blaise Pascal (1642) Összeadás, kivonás Gottfried Willhelm von Leibniz báró (~1676) Mai négyműveletes zsebszámológépek mechanikus őse Charles Babbage (150 évvel később) Differenciálgép (összeadás, kivonás) Hajózási navigációhoz, egyetlen algoritmust futtatott csak Az eredményeket rézbevonatú lemezbe lyukasztotta acél formanyomóval Analitikus gép (általános célú) Tároló: memória Malom: számolóegység Bemeneti rész: lyukkártyaolvasó Kimeneti rész: lyukkártya, nyomtatott papír Egyszerű assembly nyelven lehetett programozni Konrad Zuse (1930-as évek végén) Jelfogókból épített automata számológépet A II. világháború alatt elpusztul az összes gépe 3
Számítógépek generációi Nulladik generáció: mechanikus számológépek (1642-1945) John Attanasof Bináris aritmetika, kondenzátorok (memória), memóriafrissítés Kor technológia fejletlensége miatt csak a tervezőasztalon létezett számológépe Howard Aiken (1944, Harvard Egyetem) Mark I 72 (jelfogókból) épült, 23 decimális szó, utasítások végrehajtási ideje 6mp. Be- és kimeneti adathordozó lyukszalag Mark II. már az elektronika korszakában született meg. Első generáció: vákuumcsövek (1945-1955) John Mauchley, J. Presper Eckert ENIAC (1943) 18000 vákumcső, 1500 jelfogó, 30 tonna, 140kW 20, egyenként 10jegyű decimális számot tudott tárolni regisztereiben 6000 többállású kapcsolóval és átkötő kábelek segítségével programozták 1946-ig nem tudták befejezni a gép építését EDVAC (1949) Az első elektronikus elven működő számítógép az ENIAC alapjain, hamarosan kudarcba fullad a projekt. 4
Számítógépek generációi Első generáció: vákuumcsövek (1945-1955) EDSAC (az első Neumann elven működő gép) Memória, ALU, vezérlőegység, be- és kimeneti eszközök 4096 db 40 bites szó (memória): szavanként két 20 bites utasítás vagy egy 40 bites előjeles szám 20bites utasítások: 8 bit az utasítás típusát, 12 bit a memóriaszó címét adta meg. 40 bites akkumulátor (belső regiszter) 5
Számítógépek generációi Első generáció: vákuumcsövek (1945-1955) IBM 701 (1953) 2048 36 bites szó, szavanként két utasítás IBM 704 (1956) 4096 szavas mágnesgyűrűs memória, szavanként 36 bites lebegőpontos aritmetika IBM 709 (1958) IBM utolsó vákuumcsöves gépe, a 704-es felturbózott változata Második generáció: tranzisztorok (1955-1965) 1948-ban megszületett az első tranzisztor 10 év alatt szinte kiszorították a vákuumcsöves gépeket TX0 (16 bites), TX2 az első tranzisztoros gépek PDP1 (1961, DEC) 4096 18 bites szó, 200000 utasítás/mp (teljesítménye fele az IBM 7090-es tranzisztoros gépének), 120000 USD 512x512-es megjelenítő is tartozott hozzá, nemsokára megjelenik az első videójáték is rá. 6
Számítógépek generációi Második generáció: tranzisztorok (1955-1965) PDP-8 12 bites, 16000 USD, megjelenik benne az omnibus a mai szg.-ek sín(busz)rendszerének őse. IBM 7094 Ciklusideje 2μs, 32536 (mágnesgyűrűs memória36 bites szó ) Kistestvérét az 1401-est nem tudományos számításokra, hanem kisvállalati adatok tárolására fejlesztették (4000 8 bites szavas tároló) CDC 6600 (1964) Egy nagyságrenddel nagyobb teljesítményű az IBM 7094-esnél Nagyfokú párhuzamosság a CPU-n belül, akár 10 utasítás végrehajtása egyidejűleg 7
Számítógépek generációi Harmadik generáció: integrált áramkörök (1965-1980) Integrált áramkör megjelenése (1958) IBM System/360-as család kifejlesztése Családon belüli szoftverkompatibilitás, bevezető modellek (30, 40, 50, 65) Multiprogramozás megjelenése (több program egyidejűleg a memóriában) Az első emulációs képességekkel rendelkező számítógép 24 bites memóriacímzési lehetőség DEC PDP-11 az IBM 360-as kistestvére Szavas regiszterek és bájtos memória 8
Számítógépek generációi Negyedik generáció: magas integráltságú áramkörök (1980-?) '80-as évekre kiforrott VLSI technológia több tízezer és akár több millió tranzisztor elhelyezését is lehetővé tette egyetlen lapkán. Megjelennek a személyi számítógépek (pl Intel 8080-as CPU-val, CP/M operációs rendszerrel) IBM Personal Computer-t (Intel 8088 CPU-val) 1981-ban kezdik gyártani. Az IBM PC műszaki részleteinek közzététele után hamarosan megjelennek az IBM PC klónok. A versenytársak közül csak kevesen bírták a versenyt az IBM-el (pl. Apple Macintosh) Apple Macintosh (1984) tartalmazta az első GUI-t, mint személyi számítógép Osborne-1 (11kg!) az első hordozható számítógép Compaq piacra dobja az első hordozható IBM PC klónt 9
Számítógépek generációi Negyedik generáció: magas integráltságú áramkörök (1980-?) 1985: Intel 386-s CPU és ezzel épített PC-k kerülnek a piacra Egyre nagyobb teret hódítanak a RISC architektúrájú CPU-k 1992-ig kizárólag 8-32 bites CPU-k a piacon DEC kifejleszti a az első 64 bites CPUt, az Alpha-t. 10
Számítógépek generációi Eldobható számítógépek RFID technológiára alapozott aktív és passzív eszközök Mikrovezérlők Másképpen beágyazott számítógépek, mint. Pld Háztartási berendezések Kommunikációs eszközök Számítógép-perifériák Szórakoztató-elektronika Kép- és hangfeldolgozó eszközök Orvosi berendezések (műszerek) Katonai fegyverrendszerek Különböző kereskedelmi automaták, berendezések Játékok(kivéve a játékgépeket) Játékgépek Speciálisan játékra fejlesztve különleges hang és grafikai képességekkel Microsoft XBOX 360, Sony Playstation 2, Sony Playstation 3, stb. 11
Számítógépek generációi Személyi számítógépek Asztali (PC, munkaállomás) és hordozható típusok (notebook, PDA, stb.) Szerverek (kiszolgálók) Felturbózott PC-k és más architektúrájú szg.-ek, UNIX, Windows, stb. operációs rendszereket futtatva Munkaállomás klaszterek Több munkaállomás és PC egy rendszerbe kapcsolva, párhuzamos feldolgozásra alkalmazva Nagyszámítógépek (Mainframe-k) Nagy többségük az IBM 360-as sorozatának utódjai CPU, memória, háttértár, adatfeldolgozási sebesség tekintetében nagyságrendekkel felülmúlják a PC-ket és a munkaállomásokat Szuperszámítógépek A mainframe-k utáni nagyságrenddel nagyobb kapacitású számítógépek Kiszolgáló farmok gyakran teljesítményben felülmúlják ezeket a gépeket. 12
Számítógépek generációi 13
Processzorok CPU felépítése CPU: Central Processing Unit, központi feldolgozóegység Bus (sín): a számítógép részegységeit összekötő, címeket, adatokat és vezérlőjeleket továbbító párhuzamos vezetékköteg. Elhelyezkedése szerint lehet belső vagy külső Vezérlőegység: utasításbeolvasás és dekódolás, a CPU belső részegységeinek a vezérlése. ALU (Aritmetikai és Logikai Egység): utasítás-végrehajtás Regiszterek: kisméretű és gyors, CPU-n belüli memória Utasítás vagy programszámláló (PC, Program Counter) Utasításregiszter (IR, Instruction Register) Adatút: regiszterek, ALU és az ezeket összekötő sínrendszer összessége Utasítások Két fő csoport: regiszter-memória és regiszter-regiszter típusú műveletek Adatútciklus: ALU-n belüli utasítás-végrehajtás az előzőleg betöltött két operanduson, majd az eredmény visszaírása valamelyik regiszterbe Minél gyorsabb az adatútciklus, annál gyorsabban működik a CPU 14
Processzorok 15
Processzorok 16
Processzorok Utasítás-végrehajtás Minden utasítást részműveletek sorozataként hajt végre 1. Soron következő utasítás beolvasása az IR-be 2. PC beállítása a következő utasítás címére 3. Utasításdekódolás 4. Operandus(ok) címének megállapítása 5. Ha szükséges, operandus(ok) beolvasása a regiszter(ek)be 6. Utasítás végrehajtása, majd vissza a ciklus elejére Utasítások végrehajtása történhet, Fixen bedrótozott, azaz kizárólag hardveres megoldással Programozottan, azaz egy interpreter (értelmező) segítségével, melynek előnyei: Architektúrálisan kompatibilis számítógépek készíthetők Hibásan implementált utasítások javíthatók, tervezési hibák áthidalhatók Lehetőség az utasításkészlet utólagos bővítésére Strukturált felépítés A CPU bonyolultsága a hardver oldaláról áthelyeződik az értelmezőre (interpreter), azaz a szoftver oldalára. 17
Processzorok RISC és CISC CPU-k '80-as évektől kísérletek folynak a Berkeley-n és Stanfordban VLSI áramkörökkel az interpreter nélküli CPU-k kifejlesztésére. Hamarosan megjelennek az első példányok RISC I, RISC II és MIPS néven Nincsenek kompatibilitási problémák A kulcskérdés egyre inkább az 1 mp. alatt kiadható utasítások száma lett. CISC (Complex Instruction Set Computer) Komplex utasításkészletű számítógép (200-300 utasítás) RISC (Reduced Instruction Set Computer) Csökkentett utasításkészletű számítógép (kb. 50 utasítás) Ha egy CISC utasítás helyettesíthető 4-5 RISC utasítással, valamint ez utóbbiak végrehajtása 10-szer gyorsabb, akkor egyértelműen a RISC lesz a győztes Visszafelé kompatibilitás hiányzik Nem szorították ki a CISC CPU-s gépeket Intel a 486-ostól kezdődően arany középutas megoldásként vegyíti a két típus előnyeit RISC mag az egyszerű utasításokhoz és CISC mag a bonyolultakhoz (hibrid megoldás) Teljesítménye elmarad a RISC-től, de visszafelé kompatibilis a régi CPU-kkal 18
Processzorok RISC CPU-k tervezési kérdései Minden utasítást közvetlenül a hardver hajtson végre Az utasítások nem bonthatók fel mikroutasításokra, nincs interpreter. Maximalizálni kell az utasítások kiadásának ütemét Egyik megoldás a sok közül, hogy minél több utasítás végrehajtását kell egy másodperc alatt elindítani, pl. a párhuzamosság alkalmazásával MIPS: Millions of Instructions Per Second; mérőszám, mely nem foglalkozik az utasítások végrehajtási idejével. Könnyen dekódolható utasítások Utasítások indítási ütemét befolyásolja a dekódoláshoz szükséges idő Megoldás: pl. szabályos, fix hosszúságú és kevés mezőből álló utasítások Külön betöltő és tároló utasítások Csak a STORE és LOAD utasítás használhat az operandusai között külső memóriára hivatkozást, minden más utasítás csak regiszterekkel dolgozhat. Sok regiszter szükséges Lehetőség szerint minél több regiszterre van szükség, hogy csökkenteni lehessen a STORE és LOAD utasítások számát 19
Processzorok Utasításszintű párhuzamosság Teljesítménynövelés párhuzamosság alkalmazása nélkül szinte kizárólag csak a lapka órajelének emelésével lehetséges Párhuzamosság bevezetése: utasításszintű és/vagy processzorszintű Pipeline (csővezeték) Az IBM Stretch (1959) is alkalmazta ezt a megoldást (prefetch buffer vagy queue) Pipeline sokkal több részre bontja az utasítás-végrehajtást (min. 12-re) 20
Processzorok Utasításszintű párhuzamosság Szuperskaláris architektúrák Egy csővezetékes CPU több funkcionális egységgel 21 4-6 utasítás végrehajtását kezdik el egy órajel alatt Az S3 fázis gyorsabban előkészíti az utasításokat mint ahogy az S4 fázis végrehajtódnának Az S4 fázisban akár több ALU is lehet
Processzorok Processzorszintű párhuzamosság Tömbprocesszor Nagyszámú egyforma felépítésű CPU-ból áll, melyek ugyanazt a műveletet végzik el ugyanazon az adathalmazon SIMD, Single Instruction-stream Multiple Data stream A világ első ilyen gép az ILLIAC IV volt (University of Illinois, 1972) A terv szerint 4 negyedből állógép lett volna, negyedekként 8x8-as mátrixban CPU/memória párokkal, egy vezérlőegység/negyed Gazdasági megfontolásokból csak egy negyedet építettek meg belőle (50MFLOP sebességű volt) Már nem gyártanak ilyen CPU-kat A Pentium4-től kezdve az MMX és SSE utasításoknál használják ezt a végrehajtási modellt Vektorprocesszor Programozói oldalról nézve, hasonló mint a tömbprocesszor Minden összeadás egyetlen csővezeték elven működő egységben zajlik Adattömbökkel dolgozik, pl vektorokkal kapcsolatos műveletvégzés Vektorregisztereket használ (több hagyományos regiszterből áll) 22
Processzorok Processzorszintű párhuzamosság Multiprocesszorok Olyan rendszer, melyben egy közös memóriát használó, egynél több CPU található Szoftveres együttműködésre van szükség a CPU-k között Ebben a felállásban a CPU-kat szorosan kapcsoltaknak nevezik Könnyű a közös memória programozási modelljét használni Felosztható a közös memória a CPU-k között, de a határok nincsenek kőbe vésve 23
Processzorok Processzorszintű párhuzamosság Multiszámítógépek 256 CPU felett, már nehézségekbe ütközik a megvalósítás Olyan, sok számítógépből álló rendszerek, melyeknek csak saját memóriájuk van, közös nincs Multiszámítógépek CPU-it lazán kapcsoltaknak is nevezik Nagyobb rendszerekben nem célszerű a mindenkit mindenkivel séma alkalmazása Gyors üzenetekkel kommunikálnak a multiszámítógép CPU-i Multiprocesszorokat könyyebb programozni, de a multiszámítógépeket könnyebb építeni Hibrid rendszerek építésével próbálják az előnyös tulajdonságaikat ötvözni 24
Központi memória Központi memória Programok és adatok átmeneti tárolója a programvégrehajtás során Bitek 25 A memória alapegysége, tovább nem osztható. Minél több értéket akarunk egy helyiértéken ábrázolni (kódolni), annál bonyolultabb a szomszédos értékek szétválasztása megbízhatatlanabb lesz a memória Megoldás digitális információ kódolása a bináris számrendszer segítségével Némely IBM nagygépnél BCD, binárisan kódolt decimális aritmetika is használható
Központi memória Memóriacímek A memóriák rekeszekből (cellákból) épülnek fel A rekeszekre, a hozzájuk rendelt számmal (rekesz címével) lehet hivatkozni Pl.: ha egy memóriában n rekesz van és egyenként k bitet tárolhatnak, akkor 0 n-1 különböző cím létezik és egy rekesz 2k különböző értéket vehet fel A legkisebb címezhető egység a rekesz 8 bites rekesz bájt, szó n*(8 bit) vagy n bájt 26
Központi memória Bájtsorrend Egy szón belüli sorszámozás iránya 27 Balról-jobbra (SPARC, IBM nagygépek) nagy endián (big endian) Jobbról-balra (Intel CPU-k) kis endián (little endian) Különböző bájtsorrendet használó gépek közötti adatátvitel során konverzóra is szükség van. Hibamentes adatátvitelhez jelezni kell az adat típusát annak hosszát is.
Központi memória Hibajavító kódok Külső körülmények hatására a memória-áramkörök hibázhatnak Megoldás: hibafelismerő vagy hibajavító kódolás alkalmazása Mi a hiba? 28 Vegyünk két n = m + r bites kódszót, ahol m, az adatbitek száma és r, az ellenőrző bitek száma. Hamming távolság: két kódszó eltérő bitpozícióinak száma Ha a két kódszó távolsága d, akkor d egyszeres hiba szükséges ahhoz, hogy az egyik kódszó átalakulhasson a másikba
Központi memória Hibajavító kódok Kódolás Hibafelismerő kódolás: d egyszeres bithiba felismeréséhez d+1 Hamming távolságú kódolás kell (pl. paritásbit ahol, a Hamming távolság 2) Hibajavító kódolás: d egyszeres bithiba javításához 2d+1 Hamming távolságú kódolás kell Amennyiben adott az adatbitek száma m, úgy az összes egyszeres hiba javításához szükséges r ellenőrző bit az (m + r +1) 2r képlet alapján határozható meg (pl.: m=8, r=4; m=16, r=5; m=32, r=6; m=64, r=7) 29
Központi memória Gyorsítótár Az áramkörök integráltsági fokának növelését eltérő célokra használták fel a CPU-k és memóriák fejlesztésénél 30 CPU-knál a csővezeték-rendszert és a szuperskaláris funkciókat fejlesztették Memóriáknál alapvetően a kapacitást növelték
Központi memória Gyorsítótár A CPU-k és a memóriáramkörök közötti sebességkülönbség továbbra sem szűnt meg Megoldás: a memóriát a CPU lapkára kell integrálni Technológiai és gazdasági okok korlátozzák ebben az esetben a memória méretét Kicsi, gyors memória vagy nagy, lassú memória Kicsi, gyors memória (cache, gyorsítótár) A leggyakrabban használt memóriaszavakat a gyorsítótárban tároljuk A gyorsítótárazás fontos jellemzője a találati arány. Lokalitási elv (alapelv): egy rövid időintervallumban a memóriahivatkozások a teljes memória csak egy kis részét érintik Központi memória és a gyorsítótár blokkokra osztott (gyorsítósor) 31
Központi memória Gyorsítótár Gyorsítótárak tervezési szempontjai Gyorsítótár mérete Gyorsítósor mérete Gyorsítótár felépítése Egyesített vs. osztott gyorsítótár (Harvard-architectúra) Gyorsítótárak száma pl. L1, L2, L3 gyorsítótár az Intel és AMD CPU-k lapkáján Memóriatokozás és típusok 8 vagy 16 memórialapkát egy NYÁK-ra rögzítenek 32 SIMM (Single Inline Memory Module): 72 érintkező, 32 adatbit DIMM (Dual Inline Memory Module): 168 érintkező, 64 adatbit SO-DIMM (Small Outline DIMM): DIMM modul a notebook-okba
Memóriahierarchia 33 CPU regiszterek (összesen min. 128 byte, t ns) Gyorsítótár (cache, 32kB n*1mb, 2-3t ns) Központi memória (16MB n*10gb, t*10 ns, USD/MB) Mágneslemez (n*10gb n*1tb, min. 10 ms, penny/mb) Mágnesszalag (USD/GB), optikai lemez (n*1gb n*100gb, t*1 s)