Kompiuterių architektūros pagrindai: nuo tranzistorių iki veikiančios sistemos
Kompiuteriai tapo neatsiejama mūsų kasdienybės dalimi, tačiau nedaugelis susimąsto, kas iš tiesų vyksta po tuo plastikiniu korpusu. Kompiuterių architektūra – tai tarsi pastato brėžinys, nurodantis, kaip įvairūs komponentai sąveikauja tarpusavyje, kad atliktų užduotis, kurias jiems nurodome. Šiandien kalbėsime apie tai, kas sudaro kompiuterį, kaip šie komponentai bendrauja tarpusavyje ir kodėl tai svarbu net jei neplanuojate tapti programuotoju ar inžinieriumi.
Prieš pradėdami gilintis į techninius aspektus, svarbu suprasti, kad kompiuterių architektūra nėra vien tik apie techninę įrangą – tai ir apie idėjas, principus bei metodus, kurie leidžia kompiuteriams veikti. Tai tarsi tiltas tarp fizinių komponentų ir programinės įrangos, kurią naudojame kasdien.
Von Neumann architektūra: modernių kompiuterių pamatas
Beveik visi šiuolaikiniai kompiuteriai remiasi Von Neumann architektūra, pavadinta pagal vengrų matematiką Johną von Neumanną. Šios architektūros esmė – duomenys ir programos saugomi toje pačioje atmintyje. Tai revoliucinis pokytis, palyginti su ankstesniais kompiuteriais, kurių programos būdavo „užkoduotos” fiziškai, perjunginėjant laidus ar jungiklius.
Von Neumann architektūros kompiuterį sudaro penki pagrindiniai komponentai:
- Centrinis procesorius (CPU) – kompiuterio „smegenys”, atliekančios skaičiavimus ir valdančios kitus komponentus
- Atmintis – vieta, kur saugomi duomenys ir programos
- Įvesties įrenginiai – klaviatūra, pelė, mikrofonas ir kt.
- Išvesties įrenginiai – monitorius, garsiakalbiai, spausdintuvas ir kt.
- Duomenų magistralė – sistema, leidžianti šiems komponentams bendrauti tarpusavyje
Ši architektūra leidžia kompiuteriams būti universaliems – tas pats kompiuteris gali atlikti skirtingas užduotis, tiesiog paleisdamas skirtingas programas. Tai skiriasi nuo specializuotų įrenginių, kurie sukurti atlikti tik vieną funkciją.
Procesoriai: kompiuterio širdis ir protas
Centrinis procesorius (CPU) yra kompiuterio „smegenys”. Jis atlieka visus skaičiavimus ir koordinuoja kitų komponentų darbą. Modernūs procesoriai susideda iš milijardų tranzistorių – mažyčių elektroninių jungiklių, kurie gali būti įjungti arba išjungti, taip atvaizduojant 1 ir 0 (dvejetainį kodą).
Procesorius atlieka keturis pagrindinius veiksmus, vadinamus „fetch-decode-execute-store” ciklu:
1. Paima (fetch) instrukciją iš atminties
2. Iškoduoja (decode) instrukciją, kad suprastų, ką reikia daryti
3. Įvykdo (execute) instrukciją
4. Išsaugo (store) rezultatą atmintyje
Šiuolaikiniai procesoriai turi daugybę optimizacijų, leidžiančių jiems veikti greičiau:
- Daugiabrančiai procesoriai – turi kelis branduolius, galinčius dirbti lygiagrečiai
- Instrukcijų konvejeris – leidžia pradėti vykdyti naują instrukciją, dar nebaigus ankstesnės
- Spartinančioji atmintis (cache) – greitesnė atmintis, sauganti dažnai naudojamus duomenis
- Spekuliatyvus vykdymas – procesorius „spėja”, kokia instrukcija bus vykdoma toliau
Procesorių greitis matuojamas hercais (Hz), nurodančiais, kiek ciklų per sekundę gali atlikti procesorius. Tačiau šiuolaikinių procesorių palyginimas vien pagal dažnį yra klaidinantis – svarbu ir architektūra, branduolių skaičius, spartinančiosios atminties dydis ir kiti veiksniai.
Atminties hierarchija: nuo registrų iki išorinių diskų
Kompiuterio atmintis nėra vienalytė – ji sudaryta iš skirtingų lygių, sudarančių hierarchiją. Kuo arčiau procesoriaus yra atmintis, tuo ji greitesnė, bet ir brangesnė bei mažesnės talpos.
- Registrai – mažytė, bet itin greita atmintis pačiame procesoriuje
- L1, L2, L3 spartinančioji atmintis (cache) – vidutinio dydžio ir greičio atmintis, esanti procesoriuje arba šalia jo
- Operatyvioji atmintis (RAM) – pagrindinė kompiuterio atmintis, kurioje saugomos veikiančios programos ir duomenys
- Kietieji diskai, SSD – lėtesnė, bet didesnės talpos atmintis, kurioje saugomi duomenys išjungus kompiuterį
- Išoriniai diskai, debesų saugyklos – lėčiausia, bet didžiausios talpos atmintis
Įdomu tai, kad kai atidarote programą ar failą, jis perkeliamas iš lėtesnės atminties į greitesnę. Pavyzdžiui, kai paleidžiate žaidimą iš kietojo disko, jo duomenys įkeliami į RAM, o dažniausiai naudojamos instrukcijos – į spartinančiąją atmintį.
Šiuolaikiniai kompiuteriai naudoja įvairias technikas, kad optimizuotų atminties naudojimą:
- Virtualiosios atminties sistema leidžia naudoti kietąjį diską kaip RAM plėtinį
- Atminties puslapiavimas padeda efektyviai valdyti atmintį, skaidant ją į „puslapius”
- Prefetching – duomenų išankstinis įkėlimas į spartinančiąją atmintį, numatant, ko prireiks
Įvesties/išvesties sistema: bendravimas su išoriniu pasauliu
Kompiuteris be įvesties ir išvesties įrenginių būtų tiesiog skaičiavimo mašina, negalinti bendrauti su išoriniu pasauliu. Įvesties įrenginiai (klaviatūra, pelė, mikrofonas, kamera) leidžia mums perduoti informaciją kompiuteriui, o išvesties įrenginiai (monitorius, garsiakalbiai, spausdintuvas) – gauti informaciją iš jo.
Įvesties/išvesties (I/O) sistema yra sudėtinga, nes turi suderinti skirtingus greičius – procesorius veikia milijardus kartų greičiau nei, pavyzdžiui, spausdintuvas. Tam naudojami buferiai (laikinos atminties sritys) ir pertraukimų mechanizmas.
Pertraukimai leidžia įrenginiams „pertraukti” procesoriaus darbą, kai jie pasiruošę siųsti ar priimti duomenis. Tai efektyviau nei nuolatinis tikrinimas (polling), kai procesorius periodiškai tikrina, ar įrenginys pasiruošęs.
Šiuolaikinėse sistemose I/O operacijos dažnai vykdomos per specializuotus kontrolerius, atlaisvinančius pagrindinį procesorių kitiems darbams. Pavyzdžiui, grafikos procesorius (GPU) specializuojasi vaizdo apdorojime, garso korta – garso apdorojime ir t.t.
Magistralės ir sąsajos: kompiuterio kraujagyslės
Magistralės yra tarsi kompiuterio kraujagyslės, perduodančios duomenis, adresus ir valdymo signalus tarp įvairių komponentų. Pagrindinės magistralės:
- Duomenų magistralė perduoda duomenis tarp procesoriaus ir kitų komponentų
- Adresų magistralė nurodo, kur duomenys turi būti įrašyti ar iš kur perskaityti
- Valdymo magistralė perduoda valdymo signalus (pvz., skaitymo/rašymo operacijas)
Magistralių plotis (bitais) nusako, kiek duomenų gali būti perduodama vienu metu. 64 bitų magistralė gali perduoti dvigubai daugiau duomenų nei 32 bitų magistralė per tą patį laiką.
Šiuolaikiniuose kompiuteriuose naudojama daug įvairių sąsajų, skirtų specifiniams tikslams:
- PCIe (PCI Express) – naudojama greitoms periferijos plokštėms (grafikos kortoms, SSD)
- SATA – skirta kietiesiems diskams ir optiniams įrenginiams
- USB – universali sąsaja įvairiems išoriniams įrenginiams
- HDMI, DisplayPort – vaizdo ir garso perdavimui į monitorius, televizorius
Kiekviena sąsaja turi savo privalumus ir trūkumus – greitį, energijos suvartojimą, sudėtingumą ir kainą. Kompiuterių kūrėjai turi rasti balansą tarp šių veiksnių.
Instrukcijų rinkinių architektūra: kompiuterio „kalbos”
Instrukcijų rinkinių architektūra (ISA) yra tarsi kompiuterio „kalba” – ji apibrėžia, kokias instrukcijas procesorius gali suprasti ir vykdyti. Yra du pagrindiniai ISA tipai:
- CISC (Complex Instruction Set Computer) – turi daug sudėtingų instrukcijų, kurios gali atlikti sudėtingas operacijas vienu žingsniu. Pavyzdys – x86 architektūra, naudojama daugelyje asmeninių kompiuterių.
- RISC (Reduced Instruction Set Computer) – turi mažiau, bet paprastesnių instrukcijų, kurios vykdomos greičiau. Pavyzdžiai – ARM (naudojama mobiliuosiuose įrenginiuose) ir naujausia Apple M1/M2 architektūra.
Istoriškai CISC buvo populiaresnis, nes taupė brangią atmintį – viena sudėtinga instrukcija galėjo pakeisti kelias paprastas. Tačiau šiuolaikinėse sistemose, kur atmintis pigi, RISC privalumai (paprastumas, efektyvumas, mažesnis energijos suvartojimas) tampa vis svarbesni.
Įdomu tai, kad šiuolaikiniai x86 procesoriai iš tiesų viduje „išverčia” CISC instrukcijas į mažesnes RISC-tipo mikroinstrukcijas, taip sujungdami abiejų architektūrų privalumus.
Kompiuterių architektūros ateitis: kur link judame?
Kompiuterių architektūra nuolat evoliucionuoja, tačiau pastaruoju metu susiduria su rimtais iššūkiais. Moore’o dėsnis (teiginys, kad tranzistorių skaičius procesoriuose padvigubėja kas 18-24 mėnesius) pradeda strigti, nes artėjame prie fizinių silicio technologijos ribų.
Todėl ieškoma naujų būdų didinti kompiuterių galią:
- Specializuoti procesoriai – vietoj universalių procesorių kuriami specializuoti (TPU mašininiam mokymuisi, kriptovaliutų kasimo procesoriai ir t.t.)
- Kvantiniai kompiuteriai – naudoja kvantinės mechanikos principus, kad atliktų tam tikrus skaičiavimus eksponentiškai greičiau
- Neuromorfiniai procesoriai – imituoja žmogaus smegenų veikimą
- 3D lustai – tranzistoriai išdėstomi ne tik plokštumoje, bet ir erdvėje
- Naujos medžiagos – silicį gali pakeisti grafenas, anglies nanovamzdeliai ir kitos medžiagos
Taip pat matome tendenciją, kad kompiuterių architektūra tampa vis labiau heterogeniška – viename įrenginyje naudojami skirtingų tipų procesoriai, optimizuoti skirtingoms užduotims.
Architektūros paslaptys: žvilgsnis už uždangos
Kompiuterių architektūra gali atrodyti kaip sudėtinga ir abstrakti sritis, tačiau ji turi tiesioginę įtaką mūsų kasdieniam technologijų naudojimui. Supratimas, kaip veikia kompiuteriai „po gaubtu”, gali padėti priimti geresnius sprendimus renkantis įrenginius, diagnozuoti problemas ar net pradėti kurti savo programinę įrangą.
Pradedantiesiems rekomenduočiau pradėti nuo paprastų projektų su Arduino ar Raspberry Pi – šie nedideli kompiuteriai leidžia praktiškai susipažinti su kompiuterių architektūros principais. Taip pat verta pasidomėti emuliatoriais, kurie leidžia virtualioje aplinkoje sukurti ir išbandyti įvairias architektūras.
Nepaisant to, kad kompiuterių architektūra tampa vis sudėtingesnė, jos pagrindai išlieka tie patys jau daugiau nei 70 metų. Von Neumann modelis, sukurtas 1945 metais, vis dar yra daugumos šiuolaikinių kompiuterių pagrindas. Tai rodo, kad geros idėjos kompiuterių moksle išlieka ilgam, net jei technologija aplink jas nuolat keičiasi.
Taigi, nesvarbu, ar esate programuotojas, IT specialistas ar tiesiog technologijų entuziastas – bazinis kompiuterių architektūros supratimas praturtins jūsų žinias ir leis geriau suprasti skaitmeninį pasaulį, kuriame gyvename.