Tietokonetekniikassa mikroarkkitehtuuri (joskus lyhenne µarch tai uarch) on tietokoneen, keskusyksikön tai digitaalisen signaaliprosessorin sähköisen piirin kuvaus, joka riittää laitteiston toiminnan täydelliseen kuvaamiseen. Mikroarkkitehtuuri määrittelee, miten käskyt toteutetaan laitteistotasolla: mitä rekistereitä, laskenta‑yksiköitä, välimuistikerroksia ja ohjauslogiikkaa prosessorissa on ja miten ne ovat yhteydessä toisiinsa.

Tutkijat käyttävät termiä "tietokoneorganisaatio", kun taas tietokoneteollisuudessa käytetään useammin termiä "mikroarkkitehtuuri". Mikroarkkitehtuuri ja käskysarjaarkkitehtuuri (ISA) muodostavat yhdessä tietokonearkkitehtuurin alan: ISA määrittelee ohjelmoijan näkymän (käskyt, rekisterit, osoitteistus), kun taas mikroarkkitehtuuri kertoo, miten tämä ISA toteutetaan fyysisesti.

Mitä mikroarkkitehtuuri sisältää?

  • Ohjausyksikkö (control unit): tulkitsee käskyjä ja synnyttää ohjaussignaalit eri osille.
  • Laskentayksiköt (ALU, FPU): suorittavat aritmeettisia ja loogisia operaatioita.
  • Rekisterit: nopeasti osoitettavat tallennuspaikat käskyjen ja väliarvojen säilytykseen.
  • Välimuistit (L1, L2, L3) ja TLB: vähentävät muistiviiveitä ja nopeuttavat muistinkäyttöä.
  • Pipelining: käskyjen hajauttaminen peräkkäisiin vaiheisiin läpiprosessointia varten.
  • Haarauksen ennustus (branch prediction) ja speculative execution: suoritusajan optimointeja häiriöiden vähentämiseksi.
  • Superskalaari ja out‑of‑order‑suoritus: useiden käskyjen samanaikainen suorittaminen ja riippuvuuksien hallinta.
  • Microcode tai kovakoodattu ohjaus: käskyjen toteutustapa (ohjelmallinen mikrokoodi vs. staattinen logiikka).

Suunnitteluratkaisut ja niiden vaikutukset

Mikroarkkitehtuuriset valinnat vaikuttavat suoraan suorituskykyyn, energiatehokkuuteen, piiripintaan (die size) ja kustannuksiin. Esimerkiksi pitkälle pipeloinnin ja moniydinarkkitehtuurin avulla saavutetaan korkea suorituskyky, mutta ne lisäävät suunnittelun monimutkaisuutta ja virheiden mahdollisuutta. Toisaalta sulautetuissa järjestelmissä käytetään usein yksinkertaisempia mikroarkkitehtuureja, jotka priorisoivat pienen virrankulutuksen ja deterministisen toiminnan.

Tyypillisiä optimointitekniikoita

  • Pipelining: jakaa käskyn suorituksen vaiheisiin (esim. hakeminen, tulkinta, suoritus, muistioperaatio, kirjoitus) ja käynnistää uuden käskyn joka vaiheessa.
  • Hazardien hallinta: data-, kontrolli‑ ja rakenteellisten häiriöiden (hazardien) tunnistus ja ratkaisut, kuten forwarding ja stall‑mekanismit.
  • Haarauksen ennustus: vähentää ohjaushäiriöitä arvioimalla haarojen todennäköisyyksiä.
  • Out‑of‑order‑suoritus: käskyjä suoritetaan loogisessa järjestyksessä riippuvuudet huomioiden, mikä parantaa resurssien käyttöä.
  • Välimuistohierarkia: useita tasoja (L1−L3) ja optimointeja, kuten peruskaappaaminen (cache associativity) ja rinnakkaiskirjoitukset (write policies).

Mikroarkkitehtuurin ja ISA:n suhde

Käskysarjaarkkitehtuuri (ISA) määrittää käskyt, rekisterit ja toimintoihin liittyvän ohjelmointorajapinnan. Sama ISA voidaan toteuttaa useilla eri mikroarkkitehtuureilla: esimerkiksi x86‑ISA:ta on toteutettu sekä yksinkertaisilla että erittäin monimutkaisilla mikroarkkitehtuureilla (mm. µop‑dekoodaus, mikrokoodi, out‑of‑order‑yksiköt). ISA tarjoaa ohjelmalle yhdenmukaisen käyttöliittymän, kun taas mikroarkkitehtuuri tarjoaa optimoinnit ja toteutuksen, joka voi muuttua sukupolvien välillä säilyttäen ISA‑yhteensopivuuden.

Mikroarkkitehtuurin toteutus

Mikroarkkitehtuurin toteutus voi olla täysin integroitua piirisuunnittelua (ASIC), ohjelmoitavaa logiikkaa (FPGA) tai esisuunniteltuja ydinmoduuleja. Suunnittelussa käytetään laajasti simulaatiota, RTL‑koodia (Verilog/VHDL), syntetisointia ja laitteistokohtaista verifikaatiota varmistaakseen toiminnan ja suoritusarvot. Testaus ja validointi ovat kriittisiä, koska pienet virheet voivat johtaa vakaviin ohjelmistovirheisiin tai tietoturvariskeihin.

Esimerkkejä ja sovelluksia

Mikroarkkitehtuurit vaihtelevat suuresti: mobiililaitteiden energiatehokkaat ARM‑pohjaiset ydintoteutukset, suurten palvelinprosessoreiden moniydin‑ ja laajennetut välimuistiratkaisut sekä DSP‑järjestelmien signaaliprosessointiin optimoidut rakenteet. Myös RISC‑periaatteet (yksinkertaisempia käskyjä ja nopeaa pipeliningia) ja CISC‑arkkitehtuurit (monimutkaisemmat käskyt ja mahdollinen mikrokoodaus) näkyvät mikroarkkitehtuurisina eroja.

Haasteet ja kehitys

Mikroarkkitehtuurin kehitys kohtaa jatkuvasti uusia haasteita: energiatehokkuuden parantaminen, lämpöjohtaminen, moniydinin ajoituksen hallinta, tietoturva‑ominaisuudet (esim. spekulaatioon liittyvät haavoittuvuudet) sekä erikoistettujen kiihdyttimien integrointi (GPU, NPU). Myös arkkitehtuuristen paradigmojen, kuten RISC‑V:n avoimuus, tai heterogeenisten järjestelmien (CPU + GPU + NPU) kasvu muokkaavat mikroarkkitehtuurin suunnittelua.

Yhteenvetona mikroarkkitehtuuri on se laitteistollinen “sydän” joka muuttaa käskysarjan konkreettiseksi toiminnaksi, ja sen valinnat määrittävät pitkälti, kuinka tehokkaasti ja luotettavasti tietokonejärjestelmä toimii käytännössä.