Számítógépek és processzorok Elvek, felépítés, működés utolsó módosítás: 2016.VII.29.
I.1. Mi az a számítógép? Nem triviális kérdés! Sok különböző felépítésű, működésű és célú számítógép létezik. Személyi számítógép, szuperszámítógép, beágyazott rendszer stb. Analóg vs digitális, bináris vs decimális vs trináris, boole – fuzzy - neurális – kvantum – dns...
Ez?
Vagy ez?
Netán ez?
Esetleg ez?
E?
Ez meg mi?
Hát?
I.2. Alapelvek Algoritmus: egy probléma megoldásához használt eljárás, módszer, utasítássorozat -» program Al Hvarizmi (kb ), perzsa tudós nevének torzított alakjából, aki „Hiszáb al-dzsabr va l-mukábala” c. munkájában lefektette az algebra alapjait.
Alapelvek Univerzális, programozható számítógép
Computer (1949)
Alapelvek Számítógép Computer: eredetileg a számításokat végző embereket hívták így Számológép (hagyományos): matematikai számolások elvégzésére képes Számítógép: a számológép + az őt kezelő személy Ebből a személyből is idővel gép lett, így született a modern számítógép
Alapelvek Analóg számítógép
Alapelvek Digitális számítógép
Számítógép Program: számítások, műveletek sorozata, amelyek adott bemenő adatokból (input) a kívánt kimeneti adatokat (output) előállítja (matematikailag: algoritmus, azaz annak megvalósítása adott gépen) Tárolt program: előre bevihetjük a programot és az adatokat egy (több) tárolóba (memória), ahonnan a gép a saját ütemezésében be tudja hívni
Számítógép A tárolt program teszi lehetővé az összetettebb műveleteket, vezérlési lehetőségeket, időzített működést stb. Fontos részei a feltételes utasítások (elágazások), ugrások (függvényhívások) és ciklusok – ezek különböztetik meg az egyszerű, soros (szekvenciális) programú számológépektől
Személyi számítógép (Personal Computer) Otthoni és munkahelyi használatra. Emberre szabott beviteli, kiviteli és feldolgozó eszközökkel (perifériákkal): (billentyűzet, egér, képernyő, nyomtató, mikrofon, hangszóró és ezek meghajtó egységei, háttértárak stb.) közepesen nagy teljesítményigényű feladatokra van kitalálva
Személyi számítógép Az eredeti IBM-PC (IBM 5150) 1981
Mobil számítógépek Valahol a PC és a beágyazott rendszer között. „Okostelefon”, tablet, stb.
Mobil személyi számítógép
Szuperszámítógép Tudományos és mérnöki számításokhoz. Működtetése gyakran más számítógépeken keresztül történik, saját humán interfészek nem szükségesek Nagyon nagy számítási teljesítmény (sok processzoros párhuzamos rendszerek) Akár hónapokig is számolhat egy feladatot
Szuperszámítógép
Beágyazott rendszer (Embedded system) Különböző eszközök (gépek) vezérlésével foglalkozó, azokba beépített számítógép. Jellemzően nem rendelkezik humán input- output (IO) eszközökkel Más eszközökkel való kommunikációra alkalmas IO eszközei vannak (interfészek, portok) Kis, közepes számítási teljesítmény
Beágyazott rendszer
Beágyazott rendszer humán interfésszel
II. Számítógépek és processzorok működése
II.1. Számítógépek alapelvei Turing, 1936 „On computable numbers...” Neumann, 1945 „First Draft of a Report on the EDVAC” Turing 1946 Automatic Computing Engine fenti publikációk egymásra is hatottak, ezek írják le a ma Neumann-elvekként ismert alapokat tárolt (flexibilis) program, kettes számrendszer, egész, fixpontos, lebegőpontos ábrázolás, kettes komplemens alapvető felépítés Turing 1950 „Computing machinery and intelligence”
Neumann elvek (számítógép) Kettes számrendszer, számábrázolási formátumok Tárolt program; tárolt adatok alap blokkvázlat (ALU, CU, IO, memória, perifériák)
Neumann vs. Harvard architektúra Neumann: közös adat és program tárolás (kb. pl. PC) Harvard: külön program és adat tárolás (pl.mikrovezérlők) Vegyes (pl. PC -> cache) szokás szerint nem egyértelmű és sok változatuk van
II.2. Utasításkészlet Utasításkészlet (instruction set): a processzor által „hardveresen” ismert utasítások halmaza Gépi kód (machine code): az utasításkészletben található utasítások sorozatából álló program, binárisan tárolva, gyakran hexadecimálisan megjelenítve. Ez a processzor által közvetlenül futtatható program.
Utasításkészlet Assembly: a legalacsonyabb szintű, processzorfüggő programozási nyelv. Lényegében a gépi utasításokhoz egy-egy könnyebben megjegyezhető szót rendelünk (mnemonic), ill. megkönnyítjük az adatábrázolást, behelyettesítéseket (tehát pl. a számadatokat írhatjuk decimálisban, a szöveges adatot ascii-ban, az ugrásoknál név szerint hivatkozhatunk a sorokra stb.).
Utasításkészlet Az eredetileg nem gépi kódban megírt programokat fordítóprogram (compiler) segítségével (régen kézzel!) alakítják gépi kódra. Magasabb szintű (pl. grafikus) nyelveknél ez akár több lépésben (közbenső nyelv használatával) is történhet. Kérdés: milyen nyelven írják a fordítót?
II.3. Mi van a processzorban? Processzor fő részei: ALU: aritmetikai és logikai egység (arithmetic and logic unit) CU: vezérlő egység (control unit) regiszterek: kisméretű belső memória az ideiglenes adatoknak (számolási részeredményeknek) adatbusz csatlakozás: a bináris adatoknak (jell. párhuzamos) címbusz csatlakozás: a külső memória és perifériák címzéséhez (jell. párhuzamos)
Processzor működése Szükséges egy órajelet (clock) biztosítani Ennek ütemére végzi a processzor a feladatok lépéseit, olvassa be és küldi ki az adatokat Egy-egy művelet elvégzése sok órajel-ütemet is igénybe vehet! Pipeline és párhuzamos feldolgozás miatt az órajel frekvenciája nem egyértelmű mutatója a műveletvégrehajtási sebességnek
Processzor működése Memória címzése (address bus), olvasás parancs (control bus, memory read) Utasítás beolvasása (fetch) (data bus->instruction register) Memóriacím növelése (program counter) minden beolvasott utasítás „szó” (memóriacella) után Utasítás értelmezése (decode) Szükség esetén utasítás következő részének beolvasása Szükség esetén utasításhoz tartozó adat beolvasása Utasítás végrehajtása (execute) Szükség esetén végeredmény kiadása (data bus) vagy ugrás végrehajtása (program counter) ld. Z80 folyamatábrás diasor!
Pipeline („csővezeték”) Program futtatás meggyorsítását célzó üzemmód Lényege, hogy több lépésre bontjuk a program végrehajtását, és azokat futószalagszerűen hajtjuk végre Akkor optimális, ha kevés az ugrás/elágazás a programban
Utasításkészlet fajtái RISC: reduced instruction set computer CISC: complex instruction set computer egyéb (pl. OISC: one instruction) szokás szerint nem egységes a definíció, nem egyértelmű a meghatározás
CISC sok utasítás (nem feltétlen!) összetett utasítások (bonyolultabb feladatok megoldhatóak egy utasításból) összetett adatszerkezetek támogatása utasítások többféleképpen, közvetlenül is hozzáférnek memóriához (sokak szerint ez a fő ismérve CISC-nek)
CISC Előnyei: magasabb szintű nyelvekről könnyebb fordítani (?) ha sok összetett utasításra van szükségünk, gyorsabb és rövidebb lehet a programunk a kevés utasítást tartalmazó, de közvetlen memória hozzáférést biztosító változatnál (pl. egyesek szerint a PIC) könnyebb lehet az asm programozás
CISC hátrányai: ha sok bonyolult utasítás van, nehezebb lehet az asm programozás ill. hibakeresés (debug) uP erőforrást/helyet foglal sok olyan funkció, amit ritkán használunk CISC-et gyakran microcode architektúrával valósítják meg
Utasításkészlet: microcode microcode: a processzoron belül kétszintű a program végrehajtása: a gépi kódú utasításokat még alacsonyabb szintű utasítások (microinstructions) sorozatára bontja (CISC->RISC) kívülről nem látszik – még assembly szinten sem! a gépi kód így könnyebben változtatható a hardver módosítása nélkül; ill. hasonló processzortípusok gépi kódja is hasonló lehet, míg a microcode különbözik (kód hordozhatóság) akár más processzor emulációja is lehetséges könnyebb hardver (processzor) fejlesztés
RISC kevesebb utasítás egyszerűbb utasítások memóriából (RAM) jellemzően csak egyszerű írás-olvasás művelet van, azaz RAM-ból beolvassuk értéket uP regiszterébe, onnan férnek hozzá az utasítások (load/store architecture)
RISC előnyei: az összetett utasításokra ritkábban van szükség, így kevesbé hátrányos, hogy azokat szoftverből valósítjuk meg a uP adott méretében az egyszerűbb, kevesebb utasítás megvalósítása gyorsabb műveletvégzést eredményez, ill. maradék helyet pl regisztereknek, egyéb funkcióknak
RISC igyekeznek arra, hogy utasítások hossza és végrehajtási ideje egyforma (és rövid) legyen elősegíti a pipeline szervezést hátrányai: jobban optimalizált fordítóra van szükség a gépi kód hosszabb lehet, ha sok bonyolult utasítás kell, akkor lassabb lehet
CISC-RISC a különbség, a definíció nem egyértelmű: lehet egy uP-ban kevés, egyszerű utasítás, de összetett memóriakezeléssel lehet egyszerű load/store memóriakezelés, de bonyolult, nagy utasításkészlettel (pl. magasabbszintű matematikai műveletek, mátrixok, hardverkezelés)
II.4. Alaplapok felépítése
CPU CPU: Központi feldolgozó egység (central processing unit) egy számítógépben a fő program futtatásáért, a gép fő vezérlési feladataiért felelős processzor ezenkívül lehetnek egyéb processzorok is a gépben (pl. periféria vezérlés) a központi egység állhat több processzorból...
Egyszerű buszrendszer
Példa előzőre: ZX Spectrum (Z80)
IBM-PC (8088) (1981)
IBM PC-AT (80286) (1984)
80386 Processzor órajele magasabb lett, mint az ISA buszé, szükségessé vált az illesztő hardver
Pentium Északi híd – Déli híd architektúra
Intel Hub Architecture (IHA) Pentium Pro -...
Intel PCH architektúra Core sorozat
BIOS Basic Input-Output System ROM-ban tárolt kisméretű program A gép indulásakor ezt olvassa be a CPU elsőnek Ez indítja el a háttértáron (pl. merevlemez) tárolt operációs rendszert Bizonyos alapszintű függvényhívásokat is biztosít a programok számára (hardverkezelés) PC-AT óta tartozik hozzá egy program, amivel a PC alapbeállításait lehet módosítani, ezeket RAM-ban tárolja (előtte kapcsolósor volt)
II.5. Memória RAM: random access memory, tetszőleges hozzáférésű, írható-olvasható memória, jellemzően illékony ROM: read only memory, csak olvasható (gyárilag írt), nem illékony EEPROM, Flash: olyan ROM, amit megfelelő módszerekkel felhasználó is felülírhat
SRAM Minden bit lényegében egy flip- flop. Egy bit általában 6 tranzisztor. Van 4 tranzisztor + 2 ellenállás változat is (többet fogyaszt, kisebb hely). Amíg van tápfesz, megtartja az értékét (nem kell frissíteni). Gyorsabb, mint a DRAM. Kisebb az adatsűrűség (bit/terület), mint DRAM, egy bit több helyet foglal, de egyszerűbb a vezérlése. Drágább. Ilyen van a cache-ben ill. mikrokontrollerekben.
DRAM Minden bit egy tranzisztor + egy kondenzátor. Nagy adatsűrűség. Rendszeres frissítés kell - külső vezérlő vagy a DRAM-ba beépített (kondi elveszti töltését). 64ms frissítési idő (refresh time) sor: 7,8us frissítési ciklus Felhasználás: nagy méretű RAM (számítógép)
Cache Sebességnövelő megoldás uP-n kívüli memória hozzáférés lassabb, mint a tokba beépítetté DRAM lassabb, mint SRAM (de nagyobb) cache: kisméretű, gyors SRAM processzoron belül
Cache külső RAM-ból a cache-be töltjük azokat az adatokat, amelyeket a közeljövőben gyakran kívánunk használni futtatott program részei szükségesebb adatok, változók külső RAM-mal szinkronizálni kell! összetett vezérlést igénye többszintű lehet
Cache AMD Athlon 64
DMA – Direct Memory Access CPU helyett DMA controller-en megy keresztül az adat A DMA controller gyorsabban, hatékonyabban viszi át az adatokat, ill. képes nagy blokkok átvitelére (nem kell külön bájtonként utasítani CPU-t – bár a tömbátvitelt már ismerik a modern processzorok (vektorutasítások))
DMA Probléma: buszt egyszerre csak vagy CPU vagy DMA kezelheti. Bájtonkénti átvitel: egyes átvitelek között CPU megkaphatja a buszt (be kell olvasnia az utasításokat stb) (cycle stealing) – pl. real time rendszerekben Tömbösített átvitel (burst mode): CPU vár (hold) Ha memória órajel gyorsabb, mint CPU akkor felváltva férhetnek hozzá (interleaved) Átlátszó (transparent): DMA figyeli, mikor szabad a busz Ha van cache, CPU dolgozhat tovább, de ilyenkor különbség lehet a cache és a RAM tartalma között (cache incoherence) -> cache-t ki kell írni DMA művelet előtt
DMA ISA busz: van egy/két DMA vezérlő, 4/8 DMA csatorna PCI busz: nincs központi vezérlő, bármelyik PCI eszköz kérheti a busz vezérlését a PCI vezérlőtől (déli híd)
II.6. Példák processzor felépítésre
4004
8008 (részletesebb)
8080
Z80
Z80 teszt áramkör
8087 FPU (Floating point unit)