Adressbuss är en del av datorbussarkitektur som bär adressinformation mellan komponenter i ett datorsystem. Till skillnad från databussen (som överför själva data) skickar adressbussen endast signaler som anger vilken minnesplats eller vilken I/O-enhet som ska läsas eller skrivas. Adresserna representeras binärt och kodas över bussens ledningar så att minneskretsar och andra enheter kan känna igen den önskade platsen i det fysiska minnet.

Funktion och egenskaper

Adressbussar består av en uppsättning ledningar som förbinder processorn med huvudminnet och andra minnesmappade enheter. Några viktiga egenskaper:

  • Unidirektionell: Adresssignaler skickas normalt från processorn till minne och I/O (en riktning).
  • Identifiering av adresser: Varje kombination av höga/låga nivåer på bussens ledningar motsvarar en unik adress.
  • Användning vid minnesåtkomst: När processorn vill läsa eller skriva skickar den en adress på adressbussen och aktiverar lämpliga kontrollsignaler på kontrollbussen.
  • Minnessystemets avkänning: Minneskretsen eller I/O-enheten jämför mottagen adress med sitt egna adressområde (adressdekodning).

Bredd och adresserbarhet

Adressbussens bredd, det vill säga antalet ledningar (bitar), bestämmer hur många unika adresser som kan uttryckas. Formeln är enkel: 2^n adresser för en buss med n linjer. Om systemet är byte-adresserat betyder det också 2^n bytes adresserbart utrymme.

Exempel:

  • En 32-bitars adressbuss ger 2^32 = 4 294 967 296 adresser = 4 gibibyte (≈4 GB).
  • En 36-bitars adressbuss ger 2^36 = 68 719 476 736 adresser ≈ 64 gibibyte (≈68,7 GB).
  • En 64-bitars adressbuss ger 2^64 bytes = 16 exbibyte teoretiskt (16 EiB), vilket i praktiken fortfarande ofta begränsas av hur många fysiska adressbitar som faktiskt implementerats i CPU och chipset.

Moderna persondatorer och Macintosh-datorer kan ha fler än 32 fysiska adresslinjer (t.ex. 36 bitar) vilket möjliggör adressering av tiotals gigabyte fysiskt minne. Den verkliga mängden minne som kan användas påverkas dock av chipset och moderkort.

Systembussen och dess delar

Adressbussen är en av tre grundläggande delar i en systembuss:

  • Adressbussen – bär adressinformation (vilken minnescell/enhet som ska nås).
  • Databussen – överför de faktiska datavärdena mellan enheter.
  • Kontrollbussen – innehåller signaler som läs/skriv, klocka, avbrott och busstyrning.

Praktiska begränsningar och avancerade mekanismer

Trots teoretiska gränser sätter flera faktorer gränser i praktiken:

  • Chipset- och moderkortsbegränsningar: Många system implementerar inte alla möjliga adressbitar eller reserverar utrymme för I/O och systemresurser.
  • Operativsystem och virtuellt minne: Processorn arbetar ofta med virtuella adresser som översätts till fysiska adresser av en MMU (Memory Management Unit). Antalet virtuella adresser kan skilja sig från antalet fysiska adresser.
  • Särskilda lösningar för äldre system: På x86 användes t.ex. PAE (Physical Address Extension) för att låta 32-bitars CPU:er adressera mer än 4 GB fysisk RAM genom att öka den fysiska adressbredden till 36 bitar.
  • Memory-mapped I/O: I många system används delar av det fysiska adressrummet för att nå I/O-enheter, vilket minskar den adressrymd som finns kvar för vanligt RAM.

Varianter och implementeringstekniker

I vissa mikroarkitekturer multiplexas adress- och datalinjer för att spara på antal pins och ledningar; då sänds först adressdelen och därefter data över samma fysiska linjer, vilket kräver extra styrning och latchning. Andra system har separata dedikerade bussar för olika syften (t.ex. PCIe, minnesbussar), vilket ger högre prestanda och modularitet.

Sammanfattningsvis är adressbussen den komponent som berättar för minne och I/O var information ska läsas eller skrivas. Dess bredd avgör den teoretiska adressrymden (2^n), men praktiska faktorer som chipset, moderkort, operativsystem och I/O-mappning bestämmer slutligen hur mycket minne ett system faktiskt kan använda.