Arvutitehnikas on mikroarhitektuur (mõnikord lühendatult µarch või uarch) arvuti, keskseadme või digitaalse signaaliprotsessori elektrilise vooluahela kirjeldus, mis on piisav riistvara töö täielikuks kirjeldamiseks.

Teadlased kasutavad terminit "arvutikorraldus", samas kui arvutitööstuses töötavad inimesed ütlevad sagedamini "mikroarhitektuur". Mikroarhitektuur ja käsureaarhitektuur (ISA) moodustavad koos arvutiarhitektuuri valdkonna.

Mida mikroarhitektuur sisaldab?

Mikroarhitektuur määratleb detailid, kuidas ISA kaudu antud käsud tegelikult riistvaras realiseeritakse. See hõlmab:

  • Andmekiired ja andmesiinid (registerfailid, registrid, andmeedastusrajad)
  • Täitmeyjed ja ühikud (aritmeetika loogikaühikud — ALU, fpu, meediatöötlusüksused)
  • Pipelining ehk torustused ja etappide jaotus, mis võimaldab käske samaaegselt töödelda)
  • Joonehindamine (branch prediction) ja esitustusmeetodid, mis parandavad järjestuse efektiivsust)
  • Vahemälud (caches) ning mälu hierarhia ja koherentsusmehhanismid
  • Välised liidesed (bussid, I/O-sildid, mälukontrollerid)
  • Kontrollilogika — kas kasutatakse mikrokoodi (microcode) või tahkest riistvarast juhitavat kontrollijada
  • Energia- ja kella/tegeliku sageduse juhtimine (võimsusehaldus, taktsageduse dünaamika)

Kuidas mikroarhitektuur seostub ISA-ga?

Käsureaarhitektuur (ISA) määrab, millised käsud, registrid ja mälistruktuurid tarkvarale on nähtavad — see on liides operatsioonisüsteemi ja rakenduste jaoks. Mikroarhitektuur on see, kuidas see liides riistvaras tegelikult töötab. Sama ISA võib olla realiseeritud väga erinevate mikroarhitektuuridega: näiteks sama x86-ISA võib olla implementeeritud nii lihtsa, madala võimsusega protsessorina kui ka kõrge jõudlusega mitme tuumaga, väljaõppega protsessorina.

Tüüpilised disainitehnikad

  • Pipelining — jagab käsutäitluse etappideks (nt laadimine, dekodeerimine, täitmine, salvestamine). See tõstab läbivoolu, kuid nõuab hargnemise ja sõltuvuste haldamist.
  • Superscalar ja paralleelsus — mitu käsku täidetakse ühe tsükli jooksul paralleelselt.
  • Väljastpoolt järjestuse täitmine (out-of-order execution) — parandab ressursikasutust, täites käske sõltumatult originaaljärjestusest, vajadusel ümberjärjestades tulemused õigeks.
  • Registri ümbernimetamine — lahendab kirje-sõltuvusi ja võimaldab rohkem paralleelsust.
  • Speculative execution ja branch prediction — vähendavad hargnemiste mõju, kuid vajavad mehhanisme eksituste tagajärgede tühistamiseks.
  • Vahemälustrateegiad — mitmetasemelised cache’id (L1, L2, L3), assotsiatiivsuse valikud ja prefetching.

Riistvara realiseerimine ja tööriistad

Mikroarhitektuuri kavandatakse tavaliselt riistvarakirjelduskeeltega (näiteks Verilog või VHDL) ja seejärel sünteesitakse loogikaks, mis viiakse läbi kiibi tootmise protsessides. Disain hõlmab ka simuleerimist ja verifitseerimist (tõendamine, et disain vastab spetsifikatsioonile), milleks kasutatakse tarkvaralisi simulaatoreid ning formaalseid kontrollimeetodeid.

Microcode ja kontroll

Mõned protsessorid kasutavad mikrokoodi (väikest programmi riistvara sees), mis tõlgib kõrgema taseme ISA käsud madalamate kontrollisammudeni. See võimaldab lihtsamat vea parandamist ja keerukate ISA omaduste realiseerimist ilma täielikku riistvaralist ümberdisaini tegemata.

Disainikompromissid

Mikroarhitektuuri valikud mõjutavad kolme peamist mõõdet: jõudlus, võimsus ja pindala (area). Näiteks väljastpoolt järjestuse täitmine ja laiad superskalaarsed mootorid annavad head jõudlust, kuid tarbivad rohkem energiat ja võtavad rohkem kiipruumi. Taskesed või madala võimsusega seadmed eelistavad sageli lihtsamaid, energiasäästlikumaid mikroarhitektuure.

Mõju tarkvarale

Tarkvara (kompilaatorid, operatsioonisüsteemid) peab teadma ISA omadusi, kuid tihti optimeerivad kompilaatorid ja runtime-süsteemid koodi vastavalt konkreetsele mikroarhitektuurile (nt registreerimispaigutus, vahemälukäitumine, hargnemiste käitumine), et saavutada parem jõudlus.

Näited ja erinevused

  • RISC vs CISC — RISC-architectuurid (nt mõned ARM-disainid) keskenduvad lihtsamatele, fikseeritud pikkusega käskudele, mida on lihtsam torustada ja optimeerida. CISC-architectureid (nt x86) pakuvad rikkalikumaid käsukomplekte; tänapäeval mapivad x86 protsessorid mitmekompleksse ISA lihtsamate sisekäskudeni, mille kaudu mikroarhitektuur neid täidab.
  • Sarnane ISA, erinev mikroarhitektuur — sama ISA võib olla nii madala energia kui ka kõrge jõudlusega variantides, sõltuvalt torustuse, vahemälude, täitmismehhanismide ja taktisageduse valikutest.

Verifitseerimine ja turvalisus

Mikroarhitektuuril on suur mõju süsteemi turvalisusele — näiteks spekulatiivse täitmise ja vahemälu käitumise kõrvalproduktid võivad põhjustada küberturbe ründevektoreid (nt Spectre). Seetõttu on kaasaegsetes disainides järjest olulisem vormiline verifitseerimine, ründekindlate mehhanismide lisamine ja detailne testimine.

Kokkuvõte

Mikroarhitektuur on riistvara üksikasjalik kirjeldus, mis määrab, kuidas arvuti reaalselt ISA poolt ettenähtud käskusid täidab. See hõlmab paljusid tehnikaid ja kompromisse, mille eesmärk on optimeerida jõudlust, energiat ja kulu vastavalt sihtotstarbele — alates mikrokontrolleritest kuni tipptasemel serveri protsessoriteni.