Inden for computerteknik er computerarkitektur det konceptuelle design og den grundlæggende operationelle struktur af et computersystem. Det omfatter de tekniske tegninger og den funktionelle beskrivelse af designkrav — især krav til hastighed, båndbredde, sammenkoblinger og grænseflader. Computerarkitektur beskriver, hvordan man planlægger og implementerer systemets komponenter med særligt fokus på, hvordan den centrale processorenhed (CPU) fungerer internt, og hvordan CPU’en får adgang til adresser i hukommelsen, håndterer input/output og styrer perifer kommunikation.

Man kan også beskrive computerarkitektur som videnskaben og kunsten at udvælge og sammenkoble hardwarekomponenter, så systemet opfylder funktionelle mål samt krav til ydeevne, energieffektivitet og omkostninger. Arkitekturarbejde involverer ofte afvejninger mellem throughput, latenstid, strømforbrug, fysisk størrelse og kompleksitet.

Hovedområder i computerarkitektur

Computerarkitektur omfatter typisk tre hovedunderkategorier, som tilsammen beskriver både det synlige programmeringsniveau og de interne implementeringsdetaljer:

  1. Instruktionssætarkitektur (ISA): ISA er den abstrakte model af et computersystem, som ses af en programmør i maskinsprog eller assemblagesprog. ISA'en definerer blandt andet instruktionstyper, operandformater, hukommelsesadressemåder, processorregistre, undtagelseshåndtering og datarepræsentation. ISA'en er den kontrakt mellem hardware og software: compiler, assemblere og operativsystemer skrives til et givet ISA.
  2. Mikroarkitektur (også kaldet computerorganisation): Mikroarkitekturen beskriver, hvordan en bestemt ISA realiseres internt i hardwareenheden. Dette inkluderer pipeline-design, instruktionsdecoding, registerfiler, ALU-design, cache-hierarki, interconnects, branch prediction, superskalar og out-of-order eksekvering. Mikroarkitekturen bestemmer i høj grad ydelsen for en given ISA, men behøver ikke være synlig for programmereren.
  3. Systemdesign: Omfatter alle øvrige hardwarekomponenter og systemintegration — fra hukommelseshierarkier over I/O-subsystemer til netværksforbindelser og strømstyring. Eksempler på systemdesignelementer er:
  • Systemforbindelser som busser, switch-arkitekturer og højhastighedsinterconnects (f.eks. PCIe, NUMA-links).
  • Hukommelsescontrollere, cache-coherency-protokoller og flere lag i hukommelses-hierarkiet (L1/L2/L3 caches, DRAM, NVRAM).
  • Mechanismer til aflastning af CPU'en, fx direkte hukommelsesadgang (DMA), offload-engines og accelerators (GPU, TPU, FPGA).
  • Flersystem- og multiprocessing-problematikker, herunder multiprocessing-synkronisering, coherency, load-balancing og skalerbarhed.

Implementering (fra specifikation til hardware)

Når både ISA og mikroarkitektur er specificeret, skal det egentlige computersystem designes i hardware. Denne designproces kaldes implementering og omfatter flere overlappende faser fra logisk design til fysisk realisering. Implementering er normalt en hardware-teknisk proces med fokus på funktionalitet, timing, strømforbrug og pålidelighed.

Implementeringen kan opdeles i tre hovedniveauer:

  • Logisk implementering: Design af funktionelle blokke, typisk på register-transfer level (RTL) og gate-niveau. Her beskrives hvordan instruktioner flyttes, hvordan kontrolsignaler genereres, og hvordan datapath’en organiseres. Logisk design verificeres ofte med formel verifikation, simulering og testbenk (testbench).
  • Kredsløbs- og fysisk implementering: På kredsløbsniveau syntetiseres RTL til gates og biblioteks-komponenter; store blokke som ALU'er, cache-enheder og TLB’er kan optimeres særskilt. På det fysiske niveau (VLSI/PCB) placeres og forbindes komponenterne: standardcelle-placering, routing, timing-closure, strømdistribuering og signalintegritet er centrale aktiviteter.
  • Test, verifikation og fremstilling: Omfatter funktionel verifikation, timing-verifikation, STR (Static Timing Analysis), DFT (Design for Testability), produktionstests og fejltolerancetiltag. For komplekse CPU’er er hardware-verifikation en stor del af designindsatsen.

Designvalg og moderne tendenser

Ved design af en CPU eller et computersystem afvejes mange faktorer: ydeevne (instruktioner per cyklus, clockfrekvens), effektivitet (strøm pr. opgave), omkostninger (siliciumareal, kompleksitet) og kompatibilitet (ISA-kompatibilitet med eksisterende software). Nogle vigtige designteknikker og tendenser er:

  • Pipeline og superscalar-arkitekturer for at øge instruktionsparallelitet.
  • Out-of-order eksekvering, branch prediction og spekulativ udførelse for at udnytte ILP (Instruction-Level Parallelism).
  • Hukommelseshierarkier og hurtige caches for at mindske latenstid og øge båndbredde.
  • Multicore- og manycore-designs samt heterogene systemer med specialiserede accelerators (GPU, AI-acceleratorer).
  • Energieffektive teknikker: dynamisk spændings- og frekvensskalering (DVFS), clock-gating, power islands.
  • Virtualisering, sikkerhedsfunktioner (trusted execution, secure enclaves) og hardwarestøtte til container/VM-isolering.
  • Design for testbarhed, fejltolerance og pålidelighed i moderne processer og krympede geometrier.

Eksempler og familiestrukturer

For CPU'er kaldes hele implementeringsprocessen ofte for CPU-design. Mange producenter laver familier af beslægtede CPU-designs, hvor samme ISA kan realiseres i forskellige mikroarkitekturer målrettet forskellige markeder (lavt strømforbrug, høj ydeevne, embedded osv.). Kendte eksempler på ISA-familier er RISC- og CISC-designs, men også nyere åbne ISA’er som RISC-V har vundet udbredelse.

Samlet set kombinerer computerarkitektur teori og praktisk ingeniørarbejde: fra definitionen af det sprog og de instruktioner, som software skriver til, over mikroarkitektoniske teknikker, der giver hurtig udførelse, til systemdesign og fysisk implementering, der gør løsningen realiserbar og økonomisk konkurrencedygtig.