Kompiuterių inžinerijoje mikroarchitektūra (kartais sutrumpintai vadinama µarch arba uarch) - tai kompiuterio, centrinio procesoriaus arba skaitmeninio signalų procesoriaus elektrinės grandinės aprašymas, kurio pakanka visiškai aprašyti aparatinės įrangos veikimą.

Mokslininkai vartoja terminą "kompiuterių organizacija", o kompiuterių pramonės atstovai dažniau sako "mikroarchitektūra". Mikroarchitektūra ir instrukcijų rinkinio architektūra (ISA) kartu sudaro kompiuterių architektūros sritį.

Pagrindinės mikroarchitektūros dalys

  • Instrukcijų srauto valdymas: instrukcijų paėmimas (fetch), dekodavimas (decode), vykdymas (execute) ir rezultatų įrašymas (writeback). Dauguma modernių mikroarchitektūrų sukasi aplink tiksliai apibrėžtas vykdymo stadijas.
  • Vamzdynavimas (pipelining): leidžia vienu metu apdoroti kelias instrukcijas skirtingose stadijose, taip žymiai didinant pralaidumą.
  • Keičiama seka ir iš eilės vykdymas: supaprastinta (in-order) arba sudėtingesnė (out-of-order) vykdymo logika, leidžianti vykdyti instrukcijas ne griežta ISA nurodyta tvarka, kad būtų geriau išnaudojami resursai.
  • Superskaliarinės ir SIMD/vektorinės vienetai: leidžia vienu ciklu vykdyti kelias instrukcijas arba vienu metu apdoroti daug duomenų elementų (vektoriniai plokščiai).
  • Atminties hierarchija: registrai, L1/L2/L3 kešai, TLB ir pagrindinė atmintis — mikroarchitektūra projektuoja, kaip greitai ir efektyviai procesorius pasieks duomenis.
  • Šakas ir jų spėjimas: branch predictor — mechanizmas, mažinantis laidumo praradimą dėl šakų (if/else) instrukcijų.
  • Registro pervadinimas ir išvengimas konfliktų: technikos, kurios leidžia sumažinti duomenų prieštaravimus ir padidinti lygiagretumą.
  • Mikrokodas vs. hardwired kontrolė: kai kurios instrukcijos gali būti įgyvendinamos per mikroprogramas (mikrokodą), kitos — specializuota aparatūra.

Santykis su ISA (instrukcijų rinkinio architektūra)

ISA apibrėžia, ką procesorius turi daryti: instrukcijas, registrus, atminties modelį ir binarinį programų sąsajos formatą. Mikroarchitektūra nurodo, kaip šios ISA taisyklės įgyvendinamos aparatūriškai. Du skirtingi procesoriai gali palaikyti tą patį ISA, bet turėti visiškai skirtingą mikroarchitektūrą — skirtingas vamzdynavimo stulpelius, kešų dydžius, spėjamąsias šakas ir kt. Dėl to to paties ISA įgyvendinimai gali skirtis pagal spartos, energijos sąnaudų ir kainos santykį.

Dizaino sprendimai ir kompromisai

  • Galia vs. našumas: didinant spartos rodiklius (daugiafazis vamzdynavimas, platesnės superskaliarinės jungtys) dažnai auga energijos suvartojimas ir silicio ploto poreikis.
  • Latencija vs. pralaidumas: kai kurios architektūros optimizuotos sumažinti vienos instrukcijos laiką (latenciją), kitos — maksimaliai padidinti bendrą per sekundę apdorojamų instrukcijų skaičių (pralaidumą).
  • Kompleksumas vs. patikimumas: sudėtingesnės mikroarchitektūros (pvz., plačios vėlinimo sekos, platūs iš-out-of-order langai) reikalauja sudėtingesnio testavimo ir verifikacijos.

Įprasti terminai ir technologijos

  • RTL (Register-Transfer Level): aparatinės logikos aprašymo lygis, kuriuo projektuotojai kuria mikroarchitektūrą prieš sintetizuodami ją į loginius vartus ir fizinį dizainą.
  • FPGA prototipavimas: greitas būdas patikrinti mikroarchitektūros elgesį realiame aparate prieš gamybą.
  • Verifikacija ir testavimas: modeliavimas, formalūs patikrinimai ir testų rinkiniai (benchmark'ai) užtikrina, kad mikroarchitektūra teisingai įgyvendina ISA ir veikia stabiliai.
  • Procesų mazgai: technologinis lygis (nm) lemia, kiek tranzistorių sutelpa, taip įtakojant spartos ir energijos parametrus.

Ką tai reiškia programuotojui ir sistemų kūrėjui?

Mikroarchitektūra veikia kaip „juodoji dėžė“ tarp programų ir fizinio lustelio. Nors ISA suteikia garantijas apie programų elgesį, mikroarchitektūra lemia realius veikimo rodiklius. Todėl programuotojai ir kompiliatorių kūrėjai optimizuoja kodą atsižvelgdami į kešų elgseną, šakų spėliojimą, instrukcijų lygiagretumą ir SIMD galimybes, kad pasiektų geriausią našumą konkrečioje mikroarchitektūroje.

Trumpa santrauka

Mikroarchitektūra — tai detalus kompiuterio ar procesoriaus įgyvendinimo planas: kaip iš ISA išgaunamas realus našumas, kaip valdoma atmintis, kaip padidinamas paralelizmas ir kaip sprendžiami kompromisai tarp galios, ploto ir greičio. Nors ISA pasako, ką reikia daryti, mikroarchitektūra parodo, kaip tai padaryti greičiau, efektyviau ir ekonomiškiau.