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ó
- A CPU, mint legnagyobb energiafogyasztó tápellátását végző áramkör
- CPU foglalat (nincs benne a processzor, kivették)
- Memória foglalatok
- Északi híd és a rajta található hőelvezető lamellák
- PCI-Express szabványú csatlakozók
- Déli híd
- SATA portok
- PATA port (régebbi nevén: IDE port)
- PCI csatlakozók
- Floppy csatlakozók
- Az számítógépház előlapján található USB portokat itt kell rákötni az alaplapra
- Az előlapi audio csatlakozókat itt kell rákötni az alaplapra
- 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
- 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 (first 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
- aritmetikai egység, ami a számításokat végzi (mai gépekben: ALU)
- központi egység ami a működést vezérli (mai gépekben: CU)
- memória, ami adatokat tárol (mai gépekben: RAM)
- bemeneti egységek, amikkel kezelni lehet a gépet (mai gépekben: bemeneti perifériák)
- kimeneti egységek, amikkel 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 onnan 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 -- Erasable, 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ű.