En adressebus er en del af en computers computerbusarkitektur. Den bruges til at transportere adressen på den hukommelsesplacering eller det I/O-register, som en enhed (typisk CPU'en) ønsker at læse fra eller skrive til. Adresser overføres som binære værdier på en samling fysiske ledninger, og selve adressen kaldes normalt en fysisk adresse, når den placeres på adressebussen.
Funktion og opbygning
En adressebus består af et antal ledninger (adresselinjer). Hver linje repræsenterer en enkelt bit i adresseværdien, så antallet af ledninger bestemmer, hvor mange unikke hukommelsesplaceringer der kan identificeres. Når CPU'en vil tilgå et bestemt hukommelsesområde, udsendes den tilsvarende binære adresse på adressebussen, og den tilhørende hukommelsesenhed eller det perifere kredsløb "dekoder" denne adresse og reagerer.
Vigtige karakteristika:
- Adressebussen er typisk unidirektionel: adresser sendes fra masteren (ofte CPU'en) til hukommelse eller periferi.
- Adresselinjer bestemmer kapaciteten: med n linjer kan systemet adressere 2^n unikke adresser.
- Adressebussen bærer normalt fysiske adresser; virtuelle adresser oversættes af en MMU (Memory Management Unit) før de sættes på bussen.
- Adresse- og databussen er separate: databussen transporterer selve dataene og er ofte bidirektionel.
Bredde og adresseringskapacitet
Antallet af adresselinjer afgør den teoretiske mængde hukommelse, som kan adresseres. For eksempel:
- 20-bit adresse (f.eks. tidlige x86-løsninger) → 2^20 = 1 048 576 bytes = 1 MB.
- 32-bit adresse → 2^32 = 4 294 967 296 bytes ≈ 4 gigabyte (ofte skrevet 4 GB).
- 36-bit adresse → 2^36 = 68 719 476 736 bytes ≈ 64 gigabyte (eksempelvis visse ældre PC'er med 36 fysiske adresselinjer).
- 64-bit adresse → 2^64 ≈ 16 exbibytes (ofte omtalt som 16 EiB), forudsat understøttelse i hardware og styresystem.
Moderne personlige computere og Macintosh-computere kan have forskellige fysiske adresselængder afhængigt af CPU og chipset; nogle administrerer for eksempel 36 eller 40 fysiske adresselinjer, hvilket giver mere end 4 GB fysisk adresserbart rum. Den reelle mængde hukommelse, som kan anvendes, er dog ofte mindre end den teoretiske maksimumsgrænse på grund af chipset- og bundkortbegrænsninger, reserved områder (f.eks. PCI-mapped memory) og firmware/BIOS/UEFI-implementeringer.
Fysisk vs. virtuel adressering
Moderne operativsystemer bruger virtuelle adresser for processernes hukommelsesrum. Når en CPU arbejder med virtuelle adresser, oversætter hukommelsesstyringen (MMU) disse til fysiske adresser. Kun de fysiske adresser sættes på adressebussen; CPU'en sætter altså ikke direkte virtuelle adresser på busstifterne.
Særlige emner og praktiske detaljer
- Address decoding: Enheder på busserne indeholder dekodere, der genkender specifikke adresser eller adresseområder (memory-mapped I/O og normal RAM-placeringer).
- Multiplexing: På visse ældre eller simple systemer kan adresse- og datalinjer være multiplexede (samme fysiske ledninger bruges til både adresser og data på forskellige tidspunkter) for at spare ben; nyere systemer har ofte separate linjer.
- Systembus: Adressebussen er ét af tre hovedelementer i en traditionel systembus, sammen med databussen (som transporterer selve data) og kontrolbussen (som styrer timings og read/write-signaler).
- Memory-mapped I/O: Mange perifere enheder bruger samme adresseområde som RAM, så CPU'en kommunikerer med dem ved at skrive/indlevere til bestemte fysiske adresser.
Samlet set er adressebussens primære rolle at identificere, hvilken hukommelsesplacering eller hvilket register der skal tilgås — mens selve dataene overføres på databussen. Forståelsen af adressebussens bredde og begrænsninger er vigtig for at bedømme, hvor meget fysisk hukommelse et system kan håndtere, og hvordan hardware og styresystem arbejder sammen om hukommelsesadministrationen.