Busz (informatika)

A Wikipédiából, a szabad lexikonból.

Ezt a szócikket át kellene olvasni, ellenőrizni a szövegét, tartalmát. További részleteket a cikk vitalapján találhatsz.

A számítógép architektúrákban, a busz a számítógépnek olyan jól definiált része, alrendszere, amely lehetővé teszi adatok vagy tápfeszültségek továbbítását a számítógépen belül vagy számítógépek, illetve a számítógép és a perifériák között. Eltérően a pont-pont kapcsolattól, a busz logikailag összekapcsol több perifériát ugyanazt a vezetékrendszert használva. Minden buszhoz számos csatlakozó tartozik, amelyek lehetővé teszik a kártyák, egységek vagy kábelek elektromos csatlakoztatását.

A korai számítógépek buszrendszerei betű szerinti értelemben párhuzamos elektromos buszok voltak, több csatlakozóval, de fizikai kiépítésükban eltértek attól, funkcionálisan viszont azonosak voltak. A mai modern számítógépek buszai már párhuzamos és bit-soros kapcsolatokat is meg tudnak valósítani, vagy (elektromosan) párhuzamos huzalozásúak sokcsatlakozósak (multidrop), vagy pedig lánc topológiával rendelkezők, illetve egy kapcsoló hub-hoz csatlakozók, mint például az USB (univerzális soros busz).

Tartalomjegyzék

[szerkesztés] Története

A korai számítógép buszok huzalkötegek voltak, amelyek összekötötték a memóriákat és a perifériákat. Ezeket a huzalkötegeket nevezték később elektromos buszoknak vagy buszvonalaknak. Majdnem mindig volt egy memória busz és egy periféria busz, és mivel ezek eltérő funkciókat valósítottak meg, ezért különböző utasítások, teljesen más időzítések, és protokollok tartoztak hozzájuk.

Az első problémát a megszakítások használata okozta. A korai számítógépek a ki/be műveletek végrehajtása alatt hurokban várakoztak a perifériális művelet végére. Ez időveszteséggel járt, a gép gyakorlatilag állt, az egyéb feladatok is fel voltak függesztve. Ha viszont a program valamilyen egyéb feladot végzett, ami esetleg túl sok időt igényelt, és nem tudta időben figyelni a perifériális műveletet, akkor előfordulhatott ki/beviteli adatvesztés. A mérnökök kidolgozták a perifériák megszakítási rendszerét, amely biztosította a CPU által végzett művelet megszakítását. A megszakításokat prioritási csoportokba rendezték, mivel a CPU egyszerre csak egy feladatot tudott végrehajtani, így az időkritikus perifériális műveletek kapták a legmagasabb prioritást. A megszakításhoz rendelt program végrehajtása utána CPU visszatért a következő, alacsonyabb szintű megszakítási programhoz, vagy ha az nem volt, a főprogram végrehajtásához.

Nem sokkal később felmerült az igény arra, hogy a központi memóriát megosztva használja több CPU. Ezeknél a számítógépeknél a memória-hozzáférések is priorizálva voltak.

A klasszikus, egyszerű megoldás a megszakítások és memória-hozzáférések kezelésére a lánc kapcsolás volt.

DEC úgy döntött, hogy felesleges és drága két buszrendszert megvalósítani a kisméretű, nagy sorozatban készülő számítógépeknél, és kialakítottak egy olyan memória buszt, amelyre a perifériák is csatlakozni tudtak, így a memória műveletek egyszerűbbé váltak, a busz pedig bonyolultabbá. Abban az időben, ez egy igen merész tervezési lépés volt, az ellenzők biztosak voltak abban, hogy a megoldás életképtelen.

Az első mikroszámítógépek busz rendszerei tulajdonképen egy passzív [hátlap]ra épített, és egymással összekötött csatlakozókból álltak. Az egyes egységeket, a CPU-t, a memóriát vagy memóriákat, a periféria vezérlőket, stb. a csatlakozókba dugva automatikusan létrejött a kapcsolat az egységek között. Az egységek párhuzamosan voltak összekötve. Egyes megvalósítások esetében , mint például az IBM PC, külön utasítások szolgáltak arra, hogy a CPU használni tudja az így megvalósított ki/bemeneti buszt.

Néhány mikroprogramozott vezérlőben és beágyazott rendszerekben ki/beviteli busz gyakorlatilag nem is létezett. A kommunikációt a CPU vezérelte, a periféria vezérlők felé az adatok írása és olvasása előre meghatározott memóriaterületeken keresztül történt (legtöbb esetben), a központi órajeleknek megfelelő sebesség mellett. A külső egységek a CPU egy csatlakozójára adott jellel jelezték, hogy kiszolgálási igényük van, amihez általában valamilyen megszakítás (interrupt) is hozzá volt rendelve.

Például, a diszk vezérlő jelezni tudta a CPU-nak, hogy az adatok olvasásra készek a kijelölt memóriaterületen (mivel előzőleg betöltötte oda a lemezről leolvasott adatokat), a CPU ezután már hozzáfért a kért adatokhoz. A CPU és a diszk vezérlő között a kapcsolatot a memória biztosította. Az első gépek túlnyomó többsége ilyen elven működött, kezdve az Altair az S-100 buszával, és folytatva az 1980-as évek IBM PC-jével.

Ezek az egyszerű buszok voltak a legfontosabbak az általános célú számítógépek számára. Minden, a buszhoz csatlakozó berendezés azonos sebességgel tudott a buszon kommunikálni, amit a központi órajel határozott meg.

A CPU-k sebességének növekedése komoly problémát jelentett, mivel az előzőek értelmében a periféria vezérlők sebességét is azonos mértékben növelni kellett volna. Ez nem minden esetben sikerült, így előfordult, hogy egy gyors CPU-nak alkalmazkodnia kellett a leglassabb perifériavezérlő sebességéhez, a CPU sebesség növekedését nem lehetett kihasználni. Amíg ezt megoldást a beágyazott rendszerek esetében elfogadták, a kereskedelmi célú számítógépek esetében a piac már nem tolerálta.

Ugyancsak problémát jelentett, hogy gyakorlatilag minden művelethez a CPU-t igénybe kellett venni, így más feladatok végzésére már esetleg foglalt volt, tehát a CPU valódi áteresztőképessége drasztikusan leesett.

Néhény busz rendszer konfigurálása nagyon bonyolulttá vált, ha minden "polcról levett" berendezéssel együtt kellett működnie. Tipikus ilyen megoldás volt az alaplapokon és a csatolókártyákon lévő kisméretű kapcsolók (jumper) megjelenése, amelyek megfelelő helyre dugásával a memória címek, az I/O címek, megszakítási címek és prioritások bizonyos határok közöttt, de megváltoztathatók voltak.

"Második generációs" busz rendszerek, mint a NuBus már kezelték a fenti problémák egy részét. Ezek a buszok mereven két részre osztották a "világot": az egyikbe a CPU és a memória tartozott, a másikba pedig a számos vezérlőegység, a két világ közötti kapcsolatot a busz vezérlő (bus controller) biztosította. Ez a megoldás megengedte a CPU sebességének növelését anélkül, hogy buszra hatással lett volna. Ez a megoldás a terhelést a CPU-ról a csatolókártyák felé mozdította, a csatolókártyáknak egymással és a buszvezérlővel kellett kommunikálniuk, és ehhez nem volt szükség a CPU igénybevételére. Sikerül ilyen módon a jobb teljesítményet elérni, cserébe viszont a csatolókártyák sokkal bonyolultabbak lettek. Ezek a buszok gyakran "nagyobb" sebességűek voltak az adatutak szempontjából, kezdetben 8 bites párhuzamos buszok voltak ez első generációkban, aztán jöttek a 16 bites, majd a 32 bites adatutak, szoftver segítségével történő konfigurálás (most ezt szabványosították, mint Plug-n-play) a manuális jumper dugdosás kiváltására.

Egy tulajdonságukban a mai, korszerű buszok megegyeznek elődeikkel: a buszon lévő egységek azonos sebességgel kommunikálnak egymással. Ahogyan a CPU és memória függtelenné vált az egyéb berendezésektől, a CPU és memória sebességét addig lehetett emelni, amíg a technikai lehetőségek azt lehetővé tették (de CPU és a memória kommunikációjának szinkronban kell lennie). E folyamat eredményeként a busz (periféria) sebessége esetleg kisebb, mint a korai gépeknél, és az adat ki-bevitel továbbra is szűk keresztmetszetet jelent. Különsen jól megfigyelhető ez a hatás a videó kártyák esetében: az új buszok, mint a PCI már nem elég gyorsak, a PC-kben megjelentek az AGP buszok. 2004-től az AGP-t is kinőtték, és nagyteljesítményű (high-end) videó kártyák már az új PCI Express buszokat igénylik.

A külső egységek számának növekedésével a perifériák elkezdtek saját buszokat használni. Amikor a első (hard) diszk egységek egy külön kártyával csatlakoztak a buszhoz, elfoglalva ezzel egy szabad busz csatlakozókat. Az 1980-as és 1990-as évek között az új rendszerek, mint a SCSI és a IDE már szakítottak ezzel a megoldással, és nem foglaltak minden diszk egységhez egy-egy busz csatlakozót. Mára ezek a saját buszrendszerek már bevett gyakorlatnak számítanak, és egyre több több perifériát támogatnak.

Egyre népszerűbb lett az a koncepció, amely különbséget tesz helyi busz a külső busz között. A régi szemlélet szerint a buszokat úgy tervezték, hogy a belső egységek kiszolgálását biztosítsák (grafikus kártyák), később ezek a buszok már külső egységeket (scanner)eket is támogattak. Meg kell jegyezni, hogy a "helyi" kifejezés gyakran a processzorhoz nagyon közeli (VL és PCI) buszt jelenti, nem pedig az ISA-t. Az IDE ugyan a használata szempontjából külső busznak tekintehető, de legtöbbször a gépen belül valósítják meg.

A buszok "harmadik generációja" piaci megjelenés előtt áll, ideértve a HyperTransport és a InfiniBand megoldásokat is. Ezek a buszok rendelkeznek azzal a tulajdonsággal, hogy a képesek nagysebességű kommunikációra a CPU, memória, videó kártyák irányába, de ugyanakkor a sokkal lassabb perifériákkal (lemezegység) is együtt tudnak működni. A fizikai kapcsolódást sokféle formában engedik meg, és használhatók belső busznak éppen úgy, mint külső egységek csatlakoztatására. A legkülönbözőbb igényeket támogatják, a harmadik generációs buszok már sokkal jobban hasonlítanak a magasszintű protokolokkal dolgozó számítógépes-hálózatokhoz, mint az eredeti busz elképzeléshez, képesek a nagy számú, különböző egységet, perifériát kezelni, összekapcsolni. A kezelésük is lassan már inkább szoftveres megoldásokat igényl, mint hardveres beavatkozásokat

Egy másik ágon, az integrált áramkörök "testreszabásával" olyan logikák alakíthatók ki, amelyeket már intelligens vezérlőknek is nevezhetünk. Buszok, mint a Wishbone úgy vannak megtervezve, hogy megengedi a különböző integrált áramkörök egymás közötti kommunikációját.

[szerkesztés] Megvalósítások

Régen, a "busz" egy elektromosan párhuzamos rendszert jelentett, az elektromos vezetők, vezetékek megfeleletek a CPU kivezetéseinek. Ez a megoldás nem sokáig működött így, a mai moder rendszerekben már összemosódnak a buszok és a hálózatok közötti különbségek.

A buszok lehetnek párhuzamos buszok (parallel), amelyek egyidőben általában egy szót visznek át a vezetékeken, vagy lehetnek soros buszok (serial), amelyek bit-soros formában továbbítják az adatokat. A különböző kiegészítő tápfeszültség, vezérlő jel(ek) a különböző meghajtók számára további kapcsolódási pontok (csatlakozó pontok) kialakítását teszik szükségessé mindkét irányban. Általában minden soros busz legalább két csatlakozó ponttal többet valósít meg a szükségesnél a fentiek miatt (legalább 2-t biztosan használ), mint az I²C soros busz. Ahogyan az adatráta növekszik, főleg a párhuzamos buszok esetén, az időzítéssel és az áthallással kapcsolatos problémák és azok elhárítása egyre nehezebb lesz. Részleges megoldás a erre a problémára a double pump the bus. Gyakran a soros buszok jóval gyorsabban dolgoznak, mint a párhuzamos buszok, annak ellenére kevesebb kapcsolódási ponttal rendelkeznek, viszont a soros buszoknál sem az áthallás, sem az időzítési problémák nem jelentkeznek. Erre jó példák az USB, a FireWire, és a Serial ATA. A több csatlakozós gyors soros buszok nem működőképesek, ezért inkább a lánc vagy a hub felépítésű buszokat alkalmaznak.

A legtöbb számítógépben belső és külső buszok is vannak. Egy belső busz a gépen belüli egységek összekepcsolását végzi, főleg a CPU-t és a központi memóriá(ka)t kapcsolja össze, vagy kapcsolja az alaplaphoz. Ezeket buszokat szokták még helyi buszoknak is nevezni, mivel a helyi egységeket kapcsolják össze, nem pedig a gépen kívüli egységeket vagy másik számítógépeket. A külső buszok csatlakoztatják a perifériákat az alaplaphoz.

A hálózatok összekapcsolása általában az Ethernet segítségével történik, azonban ez valójában nem busz, bár a különbség inkább koncepcionális, mintsem gyakorlati jellegű. A jelentkező új technológiák, mint az InfiniBand és a HyperTransport a jövőben még jobban összemossák a buszok és a hálózatok közötti különbségeket. Még a belső és külső közötti határvonal is bizonytalan, az I²C használható egyaránt belső- és külső busznak (ekkor már ACCESS.bus néven ismert), és az InfiniBand is képes helyettesíteni egy belső buszt, mint a PCI vagy mint a külső Fibre Channel buszt.

A személyi számítógépek mai trendjei, főként a laptop-ok esetén, elmozdulnak a külső kapcsoló felületek számának csökkentése felé (Cat5, USB, fülhallgató-mikrofon csatlakozó) és opcionálisan VGA vagy FireWire .

[szerkesztés] A párhuzamos (elektromos) busz és a lánc közötti különbség

Mindkét busz típus lineáris elrendezésű, azonban mégis vannak lényeges különbségek.

Az elektromos busz alatt olyan, elektromos szempontból párhuzamos vezetékrendszert értünk, amelyeken két vagy több csatlakozó van elhelyezve, a csatlakozók közötti távolság változhat, de az elektromos összeköttetés a csatlakozók között állandóan megvan. Az, hogy a busz hány párhuzamos veztékből áll, lényegtelen, de az lényeges, hogy minden csatlakozóhoz ugyanannyi vezeték csatlakozik. A legegyszerűbb példa egy ilyen buszra a mindenki által jól ismert hálózati hosszabbító (a 230 V-os hálózatról van most szó). Az erősáramú berendezések esetében ezek a "vezetékek" gyakran 5-10 cm széles, 1-2 cm magas vezető (alumínium) sínek, ezért a párhuzamos buszok vezetékeit gyakran nevezik "sín"nek.

A lánc felépítésű busz abban különbözik az előbb leírt megoldástól, hogy a csatlakozók a párhuzamos vezetékek (a számuk itt sem lényeges) végein helyezkednek csak el. Az A, B, C, D egységek láncba kapcsolása valójáben azt jelenti, hogy a A berendezés küldő oldala egy "kábellel" össze van kötve a B berendezés fogadó oldalával, míg a B berendezés küldő oldala a C berendezés fogadó oldalával van összekötve, és így tovább. A fogadó és a küldő csatlakozók ugyanannyi csatlakozót tartalmaznak, esetleg más mechanikai kivitelben, azaz: minden bejövő vezetéknek van egy kimenő párja. A bemenet és kimenet között - a berendezésen belül - esetleg egy úgynevezett belső logika van, amely lehetőséget ad arra, hogy a bejövő jel tovább kerüljön (esetleg erősítve, formázva) a kimentre, de lehetséges, hogy a bejövő jel helyett a saját kibocsátott jele folyatatja az utat a következő egység felé. Ez azonban azt jelenti, hogy nincs meg a párhuzamos buszra jellemző állandó fizikai összeköttetés a csatlakozók között, itt csak logikai szintű összeköttés van.

[szerkesztés] Példák belső számítógép buszokra

[szerkesztés] Párhuzamos

  • CAMAC nukleáis mérőrendszerekhez
  • Extended ISA vagy EISA
  • Industry Standard Architecture vagy ISA
  • Low Pin Count vagy LPC
  • MicroChannel vagy MCA
  • MBus
  • Multibus ipari rendszerek céljaira
  • NuBus vagy IEEE 1196
  • Peripheral Component Interconnect vagy PCI
  • S-100 bus vagy IEEE 696, az Altair és egyszerűbb mikroszámítógépek használták
  • SBus vagy IEEE 1496
  • VESA Local Bus vagy VLB vagy VL-bus (videókártyákra)
  • VMEbus, a VERSAmodule Eurocard bus
  • STD Bus 8- és 16-bites mikroprocesszor rendszerekhez

[szerkesztés] Soros

  • 1-Wire
  • HyperTransport
  • I2C
  • PCI Express or PCIe
  • Serial Peripheral Interface Bus vagy SPI bus

[szerkesztés] Példák külső számítógép buszokra

[szerkesztés] Párhuzamos

  • Advanced Technology Attachment vagy ATA (megfelel a PATA, az IDE, az EIDE, az ATAPI, stb. megnevezéseknek) lemez/szalag priféria csatolásához kialakított busz
    (az eredeti ATA párhuzamos, de létezik a soros ATA vagy Serial ATA busz is, lásd később)
  • Centronics párhuzamos (általában egy berendezés csatolására, esetleg láncban 2 egységre)
  • HIPPI HIgh Performance Parallel Interface (nagyteljesítményű párhuzamos interfész)
  • IEEE-488 (megfelel a GPIB, General-Purpose Instrumentation Bus (általános célú eszköz busznak), és a HPIB, Hewlett-Packard Instrumentation Bus-nak)
  • PCMCIA, úgy is ismert, mint a PC kártya, leggyakrabban a hordozható és laptop gépekben használják, de egyre inkább háttérbe szorul a USB és beépített hálózati és modem kapcsolódási lehetőségek miatt.
  • SCSI Small Computer System Interface, lemez/szalag egység csatlakoztatására szolgáló busz

[szerkesztés] Soros

  • ACCESS.bus (A.b)
  • Apple Desktop Bus (ADB)
  • Controller Area Network (CAN)
  • Serial Peripheral Interface (SPI)
  • I²C
  • Fibre Channel
  • IEEE 1394 (FireWire)
  • RS-485
  • Serial ATA or SATA
  • Serial Storage Architecture (SSA)
  • Universal Serial Bus (USB)

[szerkesztés] Szabadalmaztatott

  • Floppy egység csatlakozója

[szerkesztés] Példák külső/belső buszokra

  • Futurebus
  • InfiniBand
  • QuickRing
  • SCI

[szerkesztés] Lásd még

  • Bus contention
  • Front side bus

[szerkesztés] Egyéb angol nyelvű linkek