menu
shopping_cart
0
KOSÁR

6. lecke

A számítógép működése

lightbulb_outlineAz alaplap portjai, bővítőkártyák, CPU, utasításkészletek, buszok, memóriák...

Alaplap

A számítógép központi áramköre az úgynevezett alaplapon található. Ez egy moduláris felépítésű nyomtatott áramkör, amin előre beépített eszközök és csatlakozók találhatók. Az asztali számítógépek és laptopok alaplapja moduálris, perifériák csatlakoztathatók. A mobileszközök alaplapja nem moduláris, hanem az összes periféria (kamera, hangszóró, vaku, szenzorok, wifi antenna...) az alaplap része. Ezt SoC-nak (System on a Chip) nevezzük.

Egy átlagos alaplapon helyt kap:

  • a központi feldolgozegység, más néven a processzor (CPU -- Central Processing Unit)
  • adatok ideiglenes tárolásáért felelős véletlen elérésű memória (RAM -- Random Access Memory)
  • adatok hosszú távó tárolásáért felelős eszköz (merevlemez HDD vagy SSD) csatlakozására használatos csatlakozó
  • a számítógép indításáért felelős és a konfigurációs beállításokat tartalmazó BIOS vagy annak újabb változata az UEFI (lásd bővebben: Operációs rendszerek tétel)
  • a mai számítógépen beépített portok hada található, alaplaponként különböző összeállítással. Egyes nélkülözhetetlen eszközöket és a hozzájuk tartozó portokat az alaplap integráltan tartalmazza.

Portok

Videokártya kimeneti jelét biztosító portok. Ezek lehetnek analóg portok (amikor a jel közvetlenül jelent egy képi információt) vagy digitális portok, amikor a jel egy bitsorozatot kódol és ezt dekódolva kapjuk vissza a képi információt

  • analóg: VGA, S-video
  • digitális: DVI, HDMI

Hangkártya analóg ki- és bemeneti hangportjai, általában 3.5 milliméteres jack csatlakozóval. Biztos van egy kimeneti hangport (zöld), egy bemeneti port (piros). Lehetnek a többcsatornás hangrendszerekhez készített portok is, amivel a különzöző hangfrekvencia-tartományokat különböző hangszórókra csatolhatjuk. Létezik digitális audio port is és optikai audio port is.

Hálózati kártya RJ-45 jelzésű UTP kábel fogadására alkalmas port vagy a nagy sebességű ADSL internet elterjedése előtti RJ-11 jelzésű kisebb port, amivel egy modemen keresztül a telefonhálózatot használva kapcsolódhattunk az internetre (lásd: Hálózatok tétel)

USB portok, ami univerzális csatlakozási felületet biztosít szinte bármilyen eszköznek. A szabvány fejlődése során egyre kisebb változatok jelentek meg

az USB előtt

  • régebben (90-es, 2000-es évek) nem szabványos USB, hanem külön portja volt az egérnek és a billentyűzetnek, ami a PS/2 elnevezésű szabványt követte

  • még régebben (80-as 90-es évek) az alaplapon kapott helyet két speciális port: az egyik a csatlakozótűkön párhuzamos adatkommunikációt biztosított és a nyomtatók csatlakozására használták (párhuzamos port) a másik pedig soros adatkommunikációt tett lehetővé (soros port)

Merevlemez (HDD) vagy SSD csatlakozására szolgáló portok

  • Parallel-ATA (PATA), párhuzamos csatlakozást tesz lehetővé, de lassabb a vezetékben futó jelek szinkronizállása miatt
  • Serial-ATA (SATA), soros csatlakoázst tesz lehetővé

Egy alaplapra bővítőkártyák helyezhetők a régebbi AGP vagy az újabb elterjedtebb PCI (Peripheral Component Interconnect) csatolófelületek segítségével.

Busz avagy a sín

Az alaplapon a részegységek közötti fizikai összeköttetést busznak vagy sínnek nevezzük. Ez a valóságban egy egyszerű rézdrótként is elképzelhető, amin az információ elektronok formájában utazik.

Általános buszok:

  • adatbusz: ahol csak adatok utaznak
  • címbusz: ahol címek utaznak, hogy az adatot hova kell írni
  • megszakítás busz: ahol a perifériák által küldött kérések utaznak

Egy sínre lehet, hogy csak 1 db eszközt csatolnak, ekkor a sínt az eszköz nevével illetik (pl: „memória busz"). Egy buszra lehet, hogy egyszerre több eszközt is felcsatoltak, ami kommunikácóis problémát jelenthet (pl: „Input-Output buszon" az összes periféria helyt kaphat). Ekkor a buszon valamilyen forgalomszabályozási eljárás szükségeltetik.

Egy buszon forgalomszabályozás hiányában a következő problémák fordulhatnak elő:

  • Adat egymásra futás: a küldő fél gyorsabb, mint amilyen gyorsan a CPU fel tudná dolgozni az adatokat. Ez előfordulhat a hangkártyárol fogadott adatok esetében, ahol folyamatosan keletkeznek adatok.
  • Adathiány

Az adatokhoz kapcsolódó problémák elkerülésére ideiglenes FIFO tárolókat használnak: Ebbe a kapott adat ideiglenesen beíródik, és akkor kerül ki belőle, amikor a fogadó félnek lesz ideje az adatot elkapni és feldolgozni -- így az adat egymásra futás elkerülhető.

FIFO = First-In, First-Out olyan memória alapú tároló, amibe adatokat tudunk írni és azt vissza tudjuk olvasni. A jellegzetessége, ahonnét a nevét is kapta, hogy az először beírt adat fog először távozni a tárolóból. Olyan ez, mint egy jegypénztár előtti sor: Az emberek csak egyre gyűlnek, és aki korábban érkezett a sorba, az fog először távozni onnét. A FIFO mérete azt jelenti, hogy milyen hosszú lehet a sor.

Egy perifériának jeleznie kell a processzor felé, hogy szüksége van egy kis számítási kapacitásra. Ez a megszakítás-kérés:

Megszakítás kérés (Interrupt) = Egy külön erre a célra fenntartott interrupt buszon a periféria szól a CPU-nak, hogy „Hé haver foglalkozzál már velem". Ekkor a CPU, mivel multitasking, ideiglenesen megszakítja az aktuális számításait és a perifériával kezd el egy kis ideig foglalkozni.

Amikor egy perifériának nincsen külön dedikált interrupt busza, hanem egy buszon több periféria is helyt kapott, akkor más megszakítás kérési módszerhez kell folyamodni:

Valamelyik periféria (most legyen a 2. pirossal jelzett periféria) az 1 db interrupt buszon (ábrán INTR -- Interrupt Request) szól a processzornak, a buszra feszültséget kapcsolva, hogy szeretne valamit. Szegény processzor nem tudja, hogy ki volt az, ezért ki kell nyomoznia. Két technológia létezik:

  • polling: a CPU megkérdez mindenkit egyesével, de ez erőforrás igényes
  • daisy-chaining: megkérdezi az első perifériát, hogy ő volt-e. Ha nem akkor már maga a periféria kérdezi meg a következő perifériát... és így tovább a perifériák láncolatán végigmegy a kérés (ábrán INTA sínen kérdezzük meg az első perifériát, aki már magától az OUT-on kérdez tovább, amíg meg nem kerül a kérdéses periféria )

Ha megvan a keresett periféria, akkor az azonosítóját, ami egy bitsorozat ő maga kimásolja egy adatsínre, és a processzor aki már „hallgatózik", hisz érkezett hozzá körábban egy interrupt kérés ezt elolvasva megtudja kivel kell foglalkozni.

Egy buszon a perifériák lehetnek önállóak is, meg életképtelen senkiházi rebellis lustaságok is:

  • Bus Master: eszköz, ami önálló módon képes adatátvitelt lebonyolítani
  • Bus Slave: nem képes önálló adatkommunikációra, egy másik eszköz vezérli őt

Egy számítógép építésekor lehetőségünk van kijelölni master-t vagy slave-et, egy jumper beállításával.

Jumper: Kis bizbasz, amivel két érintkezőt összekapcsolunk. Merevlemezek és optikai meghajtók hátulján szoktak réz tűk helyet kapni. A megfelelő tűket, ha egy jumperral összekapcsoljuk, akkor jelezzük a perifériának, hogy ő master vagy slave.

A perifériák forgalomszabályozásában további chipek segédkezhetnek az alaplapon:

  • PIC -- Programmable Interrupt Controller. Ugye eddig a megszakításokat a processzor kezelte. Ő indította el vagy a pollingot, vagy a daisy-chaining-et. A PIC egy chip, ami csak a megszakításokkal foglalkozik, levéve a terhet a processzorról.
  • DMA -- Direct Memory Access. A perifériák, ha a memóriához akarnak hozzáférni, akkor az adatokat a processzoron keresztül kell küldeniük és maga a processzor fogja felmásolni a memóriába azokat. A DMA chip leveszi a terhet a processzorról és ő végzi ezeket a műveleteket

Egy átlagos alaplap buszrendszere az ábrán látható. Két fontos chip szinte minden alaplapon megtalálható: Az északi híd és a déli híd.

Híd = egy chip ami különböző buszokat kapcsol össze és a buszokra kapcsolt eszközök konfigurálását, felismerését végzik, illetve leveszik a terhet sok téren a processzorról.

Az északi híd nevű chip a memóriát és a grafikus kártya fele irányuló sínt köti össze a déli híddal és a processzorral.

A déli híd a bővítőkártyákért és az alaplapon található portokért felel.

Egy valós alaplap képe alább található

  1. A CPU, mint legnagyobb energiafogyasztó tápellátását végző áramkör
  2. CPU foglalat (nincs benne a processzor, kivették)
  3. Memória foglalatok
  4. Északi híd és a rajta található hőelvezető lamellák
  5. PCI-Express szabványú csatlakozók
  6. Déli híd
  7. SATA portok
  8. PATA port (régebbi nevén: IDE port)
  9. PCI csatlakozók
  10. Floppy csatlakozók
  11. Az számítógépház előlapján található USB portokat itt kell rákötni az alaplapra
  12. Az előlapi audio csatlakozókat itt kell rákötni az alaplapra
  13. Egy gombelem, ami a BIOS-t táplálja, ebben az alaplap konfigurációja található elmentve és ő felel a számítógép elindításáért
  14. Tápcsatlakozó, a tápegységből itt veszi fel az alaplap az áramot.

A processzor

A processzor a számítógép vezérlését és az utasítások végrehajtását végzi. Az utasításokat a processzor programok formájában binárisan kapja. Egy kettes számrendszer-beli utasítás több részből állhat:

  • műveleti kód: hogy milyen utasítás hajtódjon végre (összeadás, szorzás, adatmozgatás....) egy processzornak meghatározott utasításkészlete van, ami processzoronként különbözik
  • egy vagy több adat

Az utasítást papírra írva (például ezen jegyzetben) a műveleti kódot és az adatokat bináris formában hagyjuk, de a számítástechnikában elterjedt a hexadecimális forma, mert ez jóval rövidebb. Az érthetőség elősegítése érdekében az utasításokhoz rájuk utaló kulcsszavakat lehet rendelni, így alkotva meg az assembly-t (lásd bővebben: Cprog jegyzet)

Processzor regiszter = A processzor gyorsan írható és olvasható ideiglenes tárolóegységei amik az utasításokban található adatokat tárolják -- vagy a processzornak a működését valósítják meg. Pár darab 32-64 bites tároló (processzortól függ), amire valamilyen névvel lehet hivatkozni (áltlában EAX, EBX, ECX ... AH, AL, BH, BL ...).

A legfontosabb regiszterek:

  • általános célú adatregiszterek
  • CPU működését megvalósító regiszterek

    • utasításokkal kapcsolatos regiszterek

      • Programszámláló regiszter (IP -- Instruction Pointer) de nevezik még utasításszámláló regiszternek is (PC -- Program Counter): A következő végrehajtandó utasítás memóriacímére mutat, ezt fogja a processzor a következő ütemben beolvasni
      • Akkumulátor regiszter: A végrehajtott utasítás eredményét tárolja
    • adatokkal kapcsolatos regiszterek

      • MAR -- Memory Address Register: az írni vagy olvasni kívánt adat memóriacímére mutat
      • MDR -- Memory Data Register: a memóriába írandó vagy onnan kiolvasott adat ideiglenes tárolója
    • speciális regiszterek

      • Veremmutató regiszter (Stack pointer): A verem (stack) egy speciális memóriaterület amibe a processzor ideiglenesen memóriacímeket ment el, amíg mással foglalkozik, hogy később vissza tudjon térni hozzájuk. Hogy mi pontosan az a stack? Olvass tovább! :)

      • Státusz regiszter: Utastások eredményével és egyéb történésekkel kapcsolatos regiszter, amit nem egy egész számként kell értelmezni, hanem bitenként. Minden egyes bitnek megvan a maga jelentése, például egy összehasonlító utasítás ( a=b? ) eredménye az, hogy egyezik a két szám, vagy különbözik azt egy meghatározott bit tárolja. A regiszterben található bitsorozat bitjeinek van jelentése.

Az adatokat a processzor a műveletvégrehajtás idejére bemásolja az adatregiszterekbe. Ezekre a nevük alapján lehet hivatkozni, így egy assembly nyelvű programban gyakran nem konstans számok, hanem regiszternevek fordulnak elő. Például:

Stack pointer

Egy futó programban legtöbbször függvények vannak definiálva, amik valamilyen számítást végeznek és az eredményt egymásnak adogatják. Például az alábbi C program egy szám faktoriálisát számítja ki rekurzió segítségével.

  • A főprogramban van egy "c" nevű változónk, amibe az 5! eredményét számítja ki a program, és végül kiírja az eredményt a képernyőre.
  • A faktoriálist számító függvény "factorial" névre hallgat és úgy működik, hogy paraméterként kap egy számot, az n-et és ezt megszorozza factorial(n-1) eredményével.

    • Tehát a függvény önmagát hívja meg ám, eggyel kisebb számmal ... egészen addig önmagát hívja meg a függvény amíg a 0-hoz nem érünk el, így tényleg az 5*4*3*2*1 számsorozat eredménye számítódik ki ami 5!-sal egyenlő.

Amíg egy függvény vár egy másik eredményére (a fenti példában ez történik, a factorial(n) vár arra, hogy kiszámítódjon a factorial(n-1) értéke) addig a várakozó függvény memóriacímét el kell valahova menteni, hogy aztán a processzor visszatérhessen később hozzá és ott folytassa az utasítások végrehajtását ahol abbahagyta. Az egymást hívó függvények memóriacímei egy speciális adatszerkezetben a verem-ben (angolul: stack) kerülnek elmentésre a memóriában. A processzorban a stack pointer regiszter erre a memóriacímre mutat.

Verem (Stack) = A verem egy LIFO (Last In First Out ) adatszerkezet. Úgy kell elképzelni, mint egy földbe ásott gödröt (vermet) amibe csak felülről pakolhatunk elemeket, és csak felülről vehetünk le elemeket. A LIFO szó arra utal, hogy amit utoljára raktunk a verembe (last in) azt fogjuk először levenni (firt out) mivel csak felül van egy nyílás -- ellentétben a FIFO adatszerkezettel.

  • PUSH: belerakunk valamit a verembe
  • POP: kiveszünk valamit a veremből

A verem alkalmas az egymást hívó függvények memóriacímeinek elmentésére (PUSH-olunk a verembe egy címet), hogy aztán amikor a processzor végzett egy későbbi függvény végrehajtásával visszatérhessen ahhoz a feladathoz amit korábban abbahagyott (POP-olunk egy címet a veremből).

A processzor felépítése

Egy processzor két legfontosabb része:

  • ALU -- Aritmetikai Logikai Egység -- matematikai és logikai műveleteket végzi el
  • CU -- Vezérlő Egység -- A processzor működését irányítja. Feltölti a processzor működését megvalósító regisztereket

    • a programszámláló regiszterbe lekéri a következő utasítás címét
    • az adatregisztereket feltölti
    • kiszámítja az ALU-val az eredményt amit az akkumulátor regiszterbe ment el

Neumann János (1903-1957) magyar matematikus aki a digitális számítógép elvi alapjait dolgozta ki élete során megfogalmazott pár alapelvet, amit a mai napig követnek a számítógépek

Neumann-elvek

  • a számítógép legyen teljesen elektronikus működésű, mozgó mechanikától mentes
  • a számítógép használja a kettes számrendszert működése során. A kettes számrendszer 0 és 1 számjegyét egy alacsony és magas feszültség szinttel lehet jelképezni
  • a számítógépnek legyen belső memóriája
  • a memóriában kell tárolni a végrehajtandó programot („tárolt program elve")
  • soros utasítás végrehajtás történjen, az utasításokat egymás után kell végrehajtani (Neumann János a párhuzamos végrehajtás ötletét elvetette, azonban mára elterjedt lett)
  • a számítógép legyen univerzálisan felhasználható, programozható, ne csak egy feladatra legyen tervezve
  • a számítógépnek legyen 5 egysége (ez a Neumann-architektúra)

Neumann-architektúra

  1. aritmetikai egység, ami a számításokat végzi (mai gépekben: ALU)
  2. központi egység ami a működést vezérli (mai gépekben: CU)
  3. memória, ami adatokat tárol (mai gépekben: RAM)
  4. bemeneti egységek, amikkel kezelni lehet a gépet (mai gépekben: bemeneti perifériák)
  5. kimeneti egységek, amikel az eredményt megkapjuk (kimeneti perifériák)

Neumann-bottleneck

A számítástechnika fejlődése során a processzorok végrehajtás sebessége nagyobb ütemben fejlődött, mint a memóriák írási/olvasási sebessége, így a számítógép működése során a processzor sok időt tölt várakozással, amíg a tárolt program betölt (a merevlemezről→ a memóriába → onnét pedig a processzorba a végrehajtáshoz). Erre már a kezdetekben rájött Neumann János, így róla nevezték el Neumann-féle szűk keresztmetszetnek, angolul Neumann bottleneck (bottleneck=üvegnyak, mint amikor az üveg nyaka elszűkül).

Processzor cache

A Neumann-bottleneck-re megoldás, ha a processzorba nagy sebességű memóriákat ültetünk, amik idő előtt elkezdik betölteni a memóriából a következő utasítást, amíg a processzor még dolgozik az előzővel -- így az adatok azonnal rendelkezésre állnak és gyorsíthatjuk a végrehajtást.

Cache = Nagy sebességű memória, amibe az adatokat előre betöltjük, hogy gyorsan rendelkezésre álljanak

A mai processzorokban megabyte-os méretű cache memóriák vannak. A több magos processzorokban minden magnak vannak egyedi cache memóráii(nevük: L1, L2) és a processzormagok között megosztott memóriák is vannak (L3)

Az órajel

A processzorokban található egy kvarckristály (piezoelektromos kristályoszcillátor) ami az órajel előállításához szükséges rezgés stabilitását biztosítja. Az órajel egy 0-1-0-1-0-1 váltásokból álló bitsorozat, ami a számítóg p r szegys geinek m köd s t ütemzi.

Az órajel sebességét Hertz-ben adjuk meg, ami megmondja, hogy 1 másodperc alatt hány "rezgés", hány 0-1 váltást generált a kvarckristály. Az órajel minden áramköri részegységhez hozzá van kötve és az egységek csak 1-es szintre végeznek műveletet. Például, ha a processzornak össze kell adnia két számot, akkor a két szám a processzor regisztereibe különböző időben is megérkezhet, az összeadás az órajelre történik meg.

Utasításkészlet

Egy processzor lehet egyszerű felépítésű, ekkor kevés műveletet támogat, és a műveleti kódok mellett megadott adatok fix hosszúságúak lehetnek, és mindig ugyanannyi darabszámú adatot kell megadni egy utasításban. Vannak bonyolultabb felépítésű processzorok is, amelyek nagyon sok műveletet támogatnak, és a megadott adatok változó hosszúságú bitsorozatok is lehetnek, illetbe egy utasításnak többféle paraméterezése is létezhet.

  • RISC processzor -- Reduced Instruction Set -- csökkentett utasításkészletű processzor
  • CISC processzor -- Complex Instruction Set -- komplex utasításkészletű processzor

Multitasking

Egy soros végrehajtású egy magos processzor az operációs rendszer folyamatainak végrehajtása között váltogat, így a felhasználónak úgy tűnik, mintha egyszerre több program futna a számítógépen -- valójában a processzor egyszerre csak egy folyamattal foglalkozik, és nagy sebességgel mindig átkapcsol egy másikra.

A memória

RAM -- olvasható, írható

Az adatok ideiglenes tárolására alkalmas eszköz a véletlen elérésű memória (RAM, random access memory) ami onnét kapta a nevét, hogy bármely memóriaterület eléréséhez ugyanannyi idő szükséges és bármelyik memóriaterületet bármikor ki lehet olvasni. Információtartalmukat a feszültség megszűnése után elveszítik.

  • DRAM -- Dinamikus RAM -- A memóriacellák tartalmát folyamatosan frissíteni kell (pár milliszekumonként), mivel a tároló kondenzárotok nagyon hamar kisülnek, elveszítik a töltésüket, azaz elvesztik a tárolt adatot

    • ilyen például a számítógép alaplapján található operatív memória
  • SRAM -- Statikus RAM -- Nincs szükség periodikus frissítésre, csak az áramellátás megszűnésekor veszik el a tartalom

    • ilyen például az alaplapon található BIOS memória is, amit egy gombelem táplál

ROM -- csak olvasható (és némely változat esetén törölhető)

A ROM (Read Only Memory) csak olvasható, akkor használják, ha mindig ugyanarra az információra van szükség. Információtartalmukat a feszültség megszűnése után is megtartják

  • PROM -- Programmable ROM -- egyszer programozható ROM memória, ami lehetőséget biztosít az egyszeri felprogramozásra, ami után egy biztosíték kiég, így többet nem lesz írható a tároló

  • EPROM -- Electrically Programmable ROM -- többször programozható ROM memória, ami lehetőséget biztosít a felprogramozásra és utána ROM-két működik, ameddig akarjuk, azonban a teljes tartalma törölhető ultraibolya fénnyel történő megvilágítás esetén (fényelektromos jelenség hatására, az elektronok elszivárognak)

    • PROM és EPROM memóriák vannak(voltak) például a kézi kvarcjátékokban (tetris) és a tamagocsikban a 90-es években -- vagy fellelhetők háztartási eszközökben (mosógép) is, ahol nincs szükség az újraírásra.
  • EEPROM -- Electrically Erasable and Programmable ROM -- többször programozható ROM memória ami ROM-ként működik és megtartja a rá írt adatokat addig ameddig akarjuk, sőt bármely része törölhető (és újra írható) így adattárolóként kitűnően használható

  • A Toshiba nevű cég a 80-as években létrehozott egy olcsóbb, gyorsabb, egyszerűbb szerkezetű, és nagyobb blokkokban törölhető EEPROM memóriát, amit Flash memóriának neveztek el.

    • Flash memória alapúak a mai Pendrive-ok és SSD-k, mobiltelefonok belső tárhelyei
    • A Flash memóriákra épülnek a később a tech iparban kidolgozott memóriakártya szabványok, amik különböző technológiákkal különféle kapacitást, sebességet és funkciókat kínálnak

      • 90-es évek: CompactFlash memóriakártya, MMC MultiMediaCards,
      • 2000-es évek: xD kártya, Memory Stick memóriakártyák,
      • 2000-es évek közepe: Secure Digital (SD) memória kártlyák

Egy átlagos mai RAM memória 4 GB -- 32 GB méretű.

Egy átlagos mai Flash memória 32 GB -- 512 GB méretű.