V računalništvu je mikroarhitektura (včasih skrajšano µarch ali uarch) opis električnega vezja računalnika, centralne procesne enote ali digitalnega signalnega procesorja, ki zadostuje za popoln opis delovanja strojne opreme.

Znanstveniki uporabljajo izraz "organizacija računalnikov", medtem ko ljudje v računalniški industriji pogosteje uporabljajo izraz "mikroarhitektura". Mikroarhitektura in arhitektura nabora ukazov (ISA) skupaj tvorita področje računalniške arhitekture.

Kaj pravzaprav pomeni mikroarhitektura?

Mikroarhitektura opisuje način, kako so logične funkcije, določene z ISA, fizično in elektronsko izvedene. Medtem ko ISA določa nabor ukazov, registre in način naslovljanja, mikroarhitektura določa notranje bloke in njihove povezave, časovne odnose in metode izvajanja teh ukazov. V praksi to pomeni odločitve o zasnovi cevovodov (pipelines), upravljanju predpomnilnikov, enotah za izvajanje, napovedovanju vejitev in nadzornem krmilniku.

Glavne komponente mikroarhitekture

  • Datapath (podatkovna pot): zbirka izvajalnih enot (ALU, FPU), registrskih datotek in povezanih multiplexorjev, ki izvajajo aritmetične in logične operacije.
  • Kontrolna enota: prevede ukaze ISA v mikroukaze ali signale, ki usmerjajo datapath; obstajata dve osnovni paradigmi — mikroprogramiranje (microcode) in hardwired kontrola.
  • Cevovod (pipeline): razdeli izvajanje ukaza na več stopnj (fetch, decode, execute, memory, writeback), kar poveča prepustnost, a zahteva upravljanje hazardov in sinhronizacijo.
  • Predpomnilniki (caches) in hierarhija spomina: vključujejo L1, L2, L3 predpomnilnike, TLB (prevedbeni predpomnilnik strani) in strategije nadomestitve, ki močno vplivajo na zmogljivost.
  • Napovedovalnik vejitev: izboljša delovanje cevovoda z zmanjševanjem stroškov poskoka (branch penalty) pri pogojnih skokih.
  • Izvajalne enote in superskalarno izvajanje: število in tip enot (več ALU, vektorni/vektorski enoti) in sposobnost izvajanja več ukazov hkrati (superscalar) ali izven vrstice (out-of-order).
  • Register file in preurejanje registrov: mehanizmi za dodeljevanje fizičnih registrov za podporo out-of-order in izboljšanje paralelizma.
  • I/O in vmesniki: vgrajeni krmilniki, pomnilniški kanali in povezave s perifernimi napravami.

Tehnike za izboljšanje zmogljivosti

  • Superskalarno izvajanje: hkratno dekodiranje in izvajanje več ukazov na cikel.
  • Izvenvrstno izvajanje (out-of-order): ponovno urejanje ukazov glede na razpoložljive podatke in enote za povečanje uporabe izvajalnih enot.
  • Pipelining: razdelitev izvrševanja na faze za povečanje prepustnosti.
  • Hiperkocke in vektorsko izvajanje: SIMD/Vector enote za obdelavo velikih nizov podatkov hkrati (pomembno pri medijskih in znanstvenih aplikacijah).
  • Predpomnilniki in multitier pomnilniška hierarhija: zmanjšanje latence dostopa do podatkov in izboljšanje izkoristka prostora v predpomnilniku.

Razlika med mikroarhitekturo in ISA

ISA (arhitektura nabora ukazov) je vmesnik med strojno opremo in programsko opremo — opredeljuje ukaze, registre in format podatkov. Mikroarhitektura pa predstavlja notranjo implementacijo teh ukazov. Dve različni mikroarhitekturi lahko izvajata isto ISA — tako lahko proizvajalci izboljšujejo hitrost, porabo energije ali stroške, ne da bi spremenili programsko opremo. Na primer, procesorji z enako ISA se lahko razlikujejo po številu jeder, velikosti predpomnilnikov ali uporabi naprednih spekulativnih tehnik.

Oblikovalske omejitve in kompromise

Pri načrtovanju mikroarhitekture je treba upoštevati več kompromisov:

  • Zmogljivost vs. poraba energije: višja frekvenca in več paralelizma povečata zmogljivost, a tudi porabo energije in oddajanje toplote.
  • Kompleksnost vs. zanesljivost: napredne tehnike, kot je out-of-order in spekulativno izvajanje, povečajo kompleksnost načrta in zahtevajo obsežno preverjanje (verification).
  • Stroški in velikost čipa: večje število tranzistorjev omogoča več funkcij, a dviguje proizvodne stroške in zmanjšuje donosnost.

Razvojni proces in validacija

Mikroarhitekture običajno modelirajo in simulirajo z visokonivojskimi orodji (simulacije ISA-level, ciklusno natančne simulacije) ter nato opisujejo v RTL (Register Transfer Level) jeziku kot sta Verilog ali VHDL. Po sintetičnem prevodu sledijo testiranje, formalna verifikacija in prototipiranje na FPGA ali s čipnim tiskom. Zaradi kompleksnosti sodobnih procesorjev je verifikacija izrazit del razvojnega cikla.

Primeri in trendi v industriji

V praksi najdemo veliko mikroarhitektur, prilagojenih različnim potrebam: visoko zmogljivi strežniški procesorji, nizkoenergijski mobilni čipi, vgrajeni sistemi in pospeševalniki za umetno inteligenco. Sodobni trendi vključujejo:

  • Heterogeni sistemi: kombiniranje jeder z različno zmogljivostjo in porabo (big.LITTLE pristopi).
  • Chiplet arhitekture: sestavljanje čipov iz manjših zasebnih kosov (chiplets) za boljšo proizvodnjo in prilagodljivost.
  • Specifični pospeševalniki: namenska strojna oprema za strojno učenje, šifriranje in multimedijo.
  • Varnostne izboljšave: zaščite proti spekulativnim napadom (npr. mitigacije za Spectre/Meltdown) in strojno podprte varnostne funkcije.

Zaključek

Mikroarhitektura je srčika načrta procesorja — povezuje abstraktne specifikacije ISA z nizkonivojskimi električnimi in logičnimi rešitvami. Razumevanje mikroarhitekture pomaga razložiti, zakaj se procesorji z isto ISA obnašajo različno glede hitrosti, porabe energije in primernosti za določene naloge. Zaradi hitrega razvoja aplikacij in novih tehnologij ostaja področje mikroarhitekture dinamično in polno inovacij.