Inden for computerteknik er mikroarkitektur (undertiden forkortet µarch eller uarch) en beskrivelse af de elektriske kredsløb i en computer, en central processorenhed eller en digital signalprocessor, som er tilstrækkelig til at beskrive hardwarens funktion fuldstændigt.

Forskere bruger udtrykket "computerorganisation", mens folk i computerindustrien oftere bruger udtrykket "mikroarkitektur". Mikroarkitektur og instruktionssætarkitektur (ISA) udgør tilsammen området computerarkitektur.

Hvad dækker mikroarkitektur over?

Mikroarkitektur beskriver den interne opbygning og de kredsløb, som gør det muligt for en processor at udføre instruktioner defineret af ISA'en. Den omfatter både funktionelle enheder og styringslogik, og går fra registerniveau til lave niveauers kredsløbsdesign. Eksempler på centrale dele:

  • Instruktionshent og -dekodning: logik der henter instruktioner fra hukommelse eller cache og oversætter dem til interne mikro-operationer.
  • Pipeline-stadier: opdeling af arbejdet i f.eks. fetch, decode, execute, memory og write-back for at øge gennemløb.
  • Aritmetisk/Logisk Enhed (ALU) og FPU: de enheder der udfører beregninger og floating-point operationer.
  • Registre og registerfil: hurtig lokal lagring til CPU-instruktioner og data.
  • Cache og hukommelsesstyring: niveauer af cache, TLB'er og hukommelsescontroller for at reducere adgangstid til data.
  • Kontrol- og styringslogik: pipeline-kontrol, interrupts, exceptions og kontekstskifte.
  • Spekulation og branch prediction: mekanismer der forudsiger kontrolflow for at holde pipeline fyldt.
  • Out-of-order execution og reorder buffers: muliggør at uafhængige instruktioner udføres i anden rækkefølge for bedre udnyttelse af enheder.
  • Multicore og coherency-mekanismer: design for flere kerner, delte caches og hukommelseskonsistens.

Vigtige designvalg og trade-offs

Mikroarkitekter afvejer ofte tre hovedparametre: ydelse, strømforbrug og område (chipareal). Nogle typiske valg:

  • RISC vs. CISC: Simple, faste instruktioner (RISC) gør ofte pipeline-design enklere; komplekse instruktioner (CISC) kan kræve mikroprogrammering eller ekstra dekodning.
  • Pipelining og superskalaritet: Flere parallelle pipeline-lanes (superscalar) øger throughput, men øger kompleksiteten for hazard-håndtering.
  • In-order vs. out-of-order: Out-of-order kan give bedre ydelse under afhængigheder, men koster mere logik og strøm.
  • Cache-størrelse og hierarki: Større caches mindsker hukommelseslatens men øger latenstid og forbrug.

Mikrokode og implementering

Nogle processorer bruger mikrokode (microcode) som et lag mellem ISA og de underliggende kredsløb — især ved komplekse CISC-instruktioner. Mikroarkitektur specificeres typisk i register-transfer level (RTL) sprog som Verilog eller VHDL, simuleres og verificeres, før den syntheses til gates og fysisk layout.

Ydelsesproblemer og løsninger

Typiske udfordringer i mikroarkitektur:

  • Data hazards: afhængigheder mellem instruktioner løses med forwarding, stalling eller omrokering.
  • Kontrolhazards: branch prediction og spekulativ udførelse minimerer pipeline-pauser ved forgreninger.
  • Cache-misses og hukommelseslatens: prefetching, større eller flerlaget cache og non-blocking caches hjælper.

Verifikation, test og sikkerhed

Mikroarkitekturer kræver omfattende verifikation: funktionel verifikation, formel verifikation, timing-analyse og test (ATE). Moderne mikroarkitekturer skal også tage højde for sikkerhedsrisici som sidekanalangreb og sårbarheder relateret til spekulativ udførelse (fx rowhammer-relaterede eller spekulationsbaserede angreb), hvilket kan påvirke designvalg for spekulation og isolation.

Anvendelser og variationer

Mikroarkitektur findes ikke kun i traditionelle CPU'er, men også i digital signalprocessorer, GPU'er, system-on-chip (SoC) løsninger og specialiserede acceleratorer. Hver klasse af enheder prioriterer forskellige egenskaber: lavt strømforbrug i mobil-SoC'er, høj gennemløb i server-CPU'er, eller massiv parallelisme i GPU'er.

Relation til instruktionssætarkitektur

ISA'en definerer hvad en processor kan gøre (instruktionssemantik, registrer, adresseringsformer), mens mikroarkitekturen beskriver hvordan disse instruktioner realiseres i hardware. To forskellige mikroarkitekturer kan implementere den samme ISA; omvendt kan en mikroarkitektur designes til at understøtte flere ISAs eller udvidelser.

Afsluttende bemærkninger

Mikroarkitektur er broen mellem abstrakt maskinmodel (ISA) og fysisk kredsløbsimplementering. Forståelse af mikroarkitektur er essentiel for at designe effektive og sikre processorer, optimere software og evaluere ydeevne i forskellige anvendelsesscenarier.