Računalniška arhitektura je v računalniškem inženirstvu konceptualna zasnova in temeljna operativna struktura računalniškega sistema. Pojem zajema funkcionalni opis komponent, njihovega vedenja in zahtev glede zmogljivosti (npr. hitrosti, latence in prepustnosti) ter njihove medsebojne povezave. Poseben poudarek je na načinu notranjega delovanja centralne procesne enote (CPU) in njenem dostopu do naslovov v pomnilniku. Računalniška arhitektura je tako most med abstrakcijo, ki jo vidi programer, in praktičnimi odločitvami in omejitvami strojne izvedbe.

Opredelimo jo lahko tudi kot znanost in umetnost izbire in povezovanja strojnih komponent za izdelavo računalnikov, ki izpolnjujejo funkcionalne, zmogljivostne in stroškovne cilje. Pri tem nastopajo kompromisi med zmogljivostjo, porabo energije, stroški in kompleksnostjo.

Glavne sestavine računalniške arhitekture

Računalniška arhitektura pogosto vključuje tri medsebojno povezane ravni:

  1. Arhitektura nabora ukazov ali ISA — abstraktni model računalniškega sistema, kot ga vidi programer strojnega jezika (ali jezika zbirke). ISA definira nabor ukazov, načine pomnilniških naslovov, procesorske registre, formate naslovov in podatkov, semantiko ukazov, prekinitve, privilejne nivoje in model pomnilnika (npr. šibka ali stroga konsistentnost). ISA je vmesnik med strojno opremo in programsko opremo: sprememba ISA običajno zahteva spremembe v prevajalniku in/ali programski opremi.
  2. Mikroarhitektura, znana tudi kot računalniška organizacija, je nižja raven, ki podrobno opisuje, kako bo sistem realiziral ISA. Mikroarhitektura zajema:
    • pipeline (cevi) in faze izpeljave ukazov, supersistemske in superširinske tehnike;
    • mehanizme, kot so razporejanje ukazov, out-of-order izvajanje, register renaming in predvidevanje vej;
    • hierarhijo predpomnilnikov, TLBje, ALU, FPU in posebne enote (SIMD, vektorji);
    • upravljanje z viri, koherentnost medjedrnih predpomnilnikov in strategije sinhronizacije.
    Mikroarhitektura povezuje abstraktno ISA z dejanskimi strojno‑logičnimi enotami in močno vpliva na metrike, kot so IPC (instructions per cycle), latenca in poraba energije. Velikost predpomnilnika je na primer organizacijsko vprašanje, ki na splošno nima nobene zveze z ISA.
  3. Oblikovanje sistema, ki vključuje vse druge komponente strojne opreme v računalniškem sistemu, kot so:

Sistemske povezave, kot so računalniška vodila in stikala (interconnects), topologije omrežij (bus, crossbar, NoC) in protokoli za komunikacijo med komponentami.

Pomnilniški krmilniki in hierarhije (L1/L2/L3 predpomnilniki, glavna pomnilniška podpora, TLB, politike zamenjave).

Mehanizmi za razbremenitev procesorja, kot je neposredni dostop do pomnilnika (DMA), specializirane I/O enote in pospeševalniki.

Vprašanja, kot je večopravilnost, virtualizacija, upravljanje prekinitve in sinhronizacija med jedri.

Izvajanje (implementacija) arhitekture

Ko sta določena ISA in mikroarhitektura, je treba dejanski računalniški sistem zasnovati v strojni opremi. Ta postopek načrtovanja imenujemo izvajanje. Izvajanje je običajno postopek načrtovanja strojne opreme, ki vključuje več stopenj in disciplinskih dejavnosti (logično načrtovanje, vezje, fizična implementacija, verifikacija in testiranje).

Izvajanje lahko nadalje razdelimo na tri, vendar ne povsem ločene dele:

  • Izvajanje logike: Oblikovanje blokov, opredeljenih v mikroarhitekturi, predvsem na ravni prenosa registrov in vrat. To vključuje formalno specifikacijo funkcionalnosti, časovnih zahtev in sinhronizacije (sežig logike, FSM — končni avtomati za upravljanje). Na tej ravni se pogosto uporablja strojni opisni jezik (HDL), kot sta VHDL ali Verilog.
  • Izvedba vezja: implementacija logike kot konkretnih elementov: vrata, multipleksorji, flip-flopi, register file, ALU in večji bloki (predpomnilniki, krmilniki). Na tej ravni se optimizira za hitrost, porabo energije in površino (area). Pogoste naloge so sintetična optimizacija, ustvarjanje timing constraintov in analiza signalne integritete.
  • Fizično izvajanje: Fizična vezja so narisana, različne komponente vezja so nameščene v načrt čipa ali na tiskano vezje (PCB), sledijo operacije place-and-route, polaganje napajalnih in referenčnih slojev ter načrtovanje žic in njihovih lastnosti. Cilji so izpolnitev časovnih zahtev (timing closure), zmanjšanje šuma, optimizacija porabe energije in zagotavljanje zanesljivosti pri različnih pogojih delovanja.

Dodatne pomembne teme v arhitekturi

- Optimizacija zmogljivosti: latenca, prepustnost, IPC, frekvenčno prilagajanje, dinamično upravljanje moči (DVFS).

- Varnost in zanesljivost: mehanizmi za zaščito pomnilnika, izolacija procesov, ECC pomnilnik, ukrepi proti napakam in napadom na mikroarhitekturo (npr. stranske kanale).

- Večjedrnost in sočasnost: koherentnost predpomnilnikov, delitev virov, strategije za zmanjšanje vsebkovanja in povečanje paralelizma.

- Specializacija: integracija strojnih pospeševalnikov (GPU, NPU, DSP) in SoC (System on Chip) pristopi, kjer je več komponent združenih na en sam silicijev kos.

- Verifikacija in testiranje: formalna verifikacija, simulacije, FPGA prototipiranje, proizvodni testi in test coverage.

Praktični vidiki in kompromisi

Pri oblikovanju arhitekture so ključni kompromisi med:

  • zmogljivostjo (hitrejše izvajanje, nizka latenca),
  • stroški (silicijev die, število tranzistorjev),
  • porabo energije (kritična pri mobilnih napravah in strežnikih),
  • kompleksnostjo in berljivostjo programskih vmesnikov (ISA).

Na primer, dodajanje kompleksnih mikroarhitekturnih mehanizmov (out-of-order enote, razširjena predvidevanja vej) lahko poveča IPC, vendar tudi zahteva več tranzistorjev, več energije in zapletenejše preverjanje pravilnosti.

Pri procesorjih se celoten postopek implementacije pogosto imenuje zasnova procesorja; lahko gre tudi za družino sorodnih zasnov procesorjev, kot sta RISC in CISC. Razumevanje razlik med ISA, mikroarhitekturo in sistemsko zasnovo pomaga razložiti, zakaj so različni procesorji z isto ISA lahko zelo drugačni glede zmogljivosti, porabe energije in cene.