A címbusz (angolul address bus) a számítógép egyik alapvető buszrendszere, amely az eszközök és a memóriahelyek azonosítására szolgáló címjeleket továbbítja. A címet bináris formában (címvonalak vagy címvezetékek sorozataként) továbbítja a processzorból a memóriavezérlő és más eszközök felé, lehetővé téve, hogy a rendszer egy adott memória- vagy I/O-helyet kiválasszon és elérjen. A címbusz elsősorban egyirányú: a CPU vagy a busz-kontroller címet küld a többi komponensnek, míg az adatátvitelt az adatbusz végzi.

Hogyan épül fel és mi a szerepe a rendszerbuszban?

A címbusz a rendszerbusz része, amely általában három fő összetevőből áll: a cím-, az adat- és a vezérlőbuszból. A címbusz vezetékek száma (a címsáv szélessége) határozza meg a címteret — vagyis azt, hogy elméletileg hány különböző memóriahelyet lehet megcímezni. A legtöbb modern számítógépben a processzor és a memória közötti kapcsolatban ez a vezetékcsoport található.

Címsáv szélessége és címterület — példák

  • 32 bites címtartomány: egy 32 bites címsáv 2^32 címre ad lehetőséget, ami 4 294 967 296 bájt = 4 gigabájt (GB) címezhető memóriát jelent.
  • 36 bites példa: ahogy a cikk korábbi része is említi, egyes rendszerek 36 címvezetéket használnak (gyakran a régebbi x86 kiterjesztések miatt), ami 2^36 ≈ 68,7 milliárd bájt, azaz körülbelül 64 gibibájt (GiB) címezhető területet jelent. (Megjegyzés: gigabájt vs. gibibájt pontosítás; a számítások bináris alapúak.)
  • 64 bites elméleti határ: egy 64 bites címsáv elméletben 2^64 címre képes, ami 16 exbibájt (EiB) címterületnek felel meg — ez gyakorlatilag hatalmas, de a valós rendszerek gyakran kevesebb cíbit használnak a megvalósíthatóság és a költségek miatt.

Fontos megjegyezni, hogy a processzor architektúrája által támogatható elméleti címterületet gyakran a chipkészlet, az alaplap és az operációs rendszer korlátozza. Emiatt a gyakorlatban elérhető fizikai memória mennyisége gyakran kisebb, mint az elméleti maximum (például a hardver nem használja fel a teljes 64 bites címtartományt).

Fizikai és virtuális címzés

A címbusz fizikai címeket továbbít — ezek a tényleges memóriacímek a hardveren. Modern operációs rendszerek és processzorok azonban általában virtuális címet használnak a programok számára; ezeket a virtuális címeket a memória-kezelő egység (MMU) alakítja át fizikai címekké paginálás és lap-táblák segítségével. A címbusz csak a már lefordított, fizikai címeket fogja látni, így a címfordítás, lapcsere és jogosultságellenőrzés az MMU és az OS feladata.

Perifériák, címdekódolás és memóriafoglalás

A címbusz nemcsak a RAM-ot, hanem a memória-térképre helyezett perifériákat is elérhetővé teszi (memory-mapped I/O). A memória dekódolása (address decoding) határozza meg, hogy egy adott cím melyik eszközhöz vagy memóriaregiónak felel meg — ez lehet memória, I/O-regiszter vagy egy adott eszköz chip select-je. Egyes architektúrák külön I/O-portokat használnak (port-mapped I/O), ilyenkor külön utasításokkal címeznek I/O regisztereket, de a címbusz szerepe mindkét esetben központi.

Multiplexelés, tri-state és DMA

A nagy számú vezeték és a csatlakozó-pontok (pin-ek) költsége miatt egyes rendszerek a cím- és adatvonalakat multiplexálják: ugyanazokat a fizikai lábakat időben váltva használják először címjelként, majd adatjelként. Ez csökkenti a csatlakozók számát, de összetettebb vezérlést igényel (pl. latch-elés az address latch enable jelekkel). A címbusznál gyakoriak a tri-state meghajtók és az átvételi jogosultságok szabályozása, hogy egyszerre csak egy eszköz vezérelje a buszt.

Direkt memóriához hozzáférő (DMA) eszközök közvetlenül használhatják a címbuszt és az adatbuszt is, hogy az OS beavatkozása nélkül mozgatni tudják az adatokat a memóriában. Ehhez buszarbritráció és jogosultságátadás szükséges (pl. busz-grant, busz-req jelek).

Gyakorlati korlátok és tipikus megvalósítások

Bár a címsáv szélessége matematikai határt ad, a gyakorlatban a következők is korlátozzák az elérhető memóriát:

  • chipkészlet és alaplap támogatása — az alaplap és a memóriavezérlő fizikailag meghatározza, mennyi RAM szerelhető és használható;
  • operációs rendszer és hardver-software integráció — az OS-nek is támogatnia kell a nagyobb címterületet;
  • reszervált címek és memóriahiányok — bizonyos címtartományok eszközöknek vagy rendszerfunkcióknak lehetnek fenntartva (például memóriafoglalási ütközések I/O eszközökkel);
  • implementációs részletek — például a fizikai címek tényleges bitjeinek kihasználtsága (sok modern CPU csak 48–52 bitet használ a 64-ből).

Összefoglalás

A címbusz a számítógép címzésének alapja: megadja, melyik memória- vagy eszközregisztert kell elérni. A címsáv szélessége határozza meg az elméleti címteret, de a gyakorlati elérhetőséget mindig a hardver és az operációs rendszer határai befolyásolják. A címbusz működése szorosan kapcsolódik az adatbuszhoz és a vezérlőbuszhoz, továbbá kulcsszerepet játszik a perifériák címzésében, a DMA-műveletekben és a memóriakezelés teljes folyamataiban.