2018. szeptember 11., kedd

Buszrendszer - Számítógép alkatrészei

A busz vagy sín (hosszabb elnevezéssel buszrendszer vagy sínrendszer) a számítógép-architektúrákban a számítógép 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é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 tulajdonképpen állt, az egyéb feladatok is fel voltak függesztve. Ha viszont a program valamilyen egyéb feladatot 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éppen egy passzív hátlapra é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 majdnem minden művelethez a CPU-t kellett igénybe venni, így más feladatok végzésére már esetleg nem ért rá, tehát a CPU valódi áteresztőképessége drasztikusan leesett.

Néhány buszrendszer 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ött, de megváltoztathatók voltak.

A „második generációs” buszrendszerek, 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ényt 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üggetlenné 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 nagy teljesí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 az 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-es é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 (szkenner)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 tekinthető, 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 magas szintű protokollokkal 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ényel, 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 megengedik a különböző integrált áramkörök egymás közötti kommunikációját.

Másik megközelítés

Mi a busz?

A busz a számítógép-architektúrákban a számítógép 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.


Történet: Első generációs buszrendszer

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. 
CPU vezérelt „mindent”
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.
Megszakítások
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.
Problémák
  • Gyors CPU – lassú perifériavezérlő
  • Gyakorlatilag minden művelethez a CPU-t igénybe kellett venni (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. ( 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ött, de megváltoztathatók voltak.)

"Második generációs" busz rendszerek 

NuBus 
  • 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. 
a terhelést a CPU-ról a csatolókártyák felé mozdította

Jobb teljesítmény

8 bites párhuzamos buszok 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 

Előnyök

a buszon lévő egységek azonos sebességgel kommunikálnak egymással. 
a CPU és memória függetlenné 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 )

Probléma

az adat ki-bevitel továbbra is szűk keresztmetszetet jelent 
videó kártyák 
PCI buszok már nem elég gyorsak,
 AGP buszok nagyteljesítményű (high-end) videó kártyák már az új PCI Express buszokat igénylik.

A PCI (Peripheral Component Interconnect) sínrendszer

Intel – 1991
ISA buszrendszer kiegészítésre 'patchelésére‘tervezték
 'PCI bridge’ felelős a CPU és a PCI perifériák közötti forgalom bonyolításáért 
Speciális pufferrel rendelkezik, melynek segítségével a CPU a transzfer befejezése előtt már más feladattal foglalkozhat  A puffer és a perifériák közötti tényleges adatátvitelt a CPU helyett a PCI bridge vezérli. 

Külső eszközök kommunikációja

perifériák - saját buszok használata
  • SCSI 
  • IDE  (nem foglaltak minden diszk egységhez egy-egy busz csatlakozót)

Új szemlélet:
  • Helyi busz (belső busz)
  • Külső busz 


Harmadik generációs buszok

HyperTransport 
InfiniBand 
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. 
Kezelésük már inkább szoftveres megoldásokat igényel, mint hardveres beavatkozásokat. 

Megvalósítások

párhuzamos buszok (parallel) amelyek egy időben általában egy szót visznek át a vezetékeken
 soros buszok (serial) amelyek bit-soros formában továbbítják az adatokat. 


Példák belső számítógép buszokra(párhozamos) 

CAMAC nukleáis mérőrendszerekhez 
Extended ISA vagy EISA 
Industry Standard Architecture vagy ISA 
NuBus vagy IEEE 1196 
Peripheral Component Interconnect vagy PCI 
VESA Local Bus vagy VLB vagy VL-bus (videókártyákra) 

Példák belső számítógép buszokra(soros)

HyperTransport 
I2C 
PCI Express or PCIe 
Serial Peripheral Interface Bus vagy SPI bus 

Példák külső számítógép buszokra 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) 
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 

Példák külső számítógép buszokra soros

IEEE 1394 (FireWire) 
RS-485 
Serial ATA or SATA 
Serial Storage Architecture (SSA) 
Universal Serial Bus (USB) 

A sínrendszer felépítése 

címsín, amely az eszközök címzését szolgálja, azok címét továbbítja rajta a processzor, szélessége 32 (esetleg 64) bitnek megfelelően ugyanennyi vezeték; 
adatsín, amelyen keresztül a továbbítandó adatot küldi, vagy fogadja a processzor. Az adatsín szélessége többnyire 32 (vagy 64) bit, illetve ugyanennyi vezeték; 
vezérlősín, amelynek vezetékeit a processzor a vezérlőjelek kiküldésére, vagy azok fogadására használja fel. A vezérlőjelek száma változó, általában 10-15 körül van minimálisan. 

Sínfoglalás  (buszfoglalás – bus arbitration)

Az adatátvitelek lebonyolításához egy időben több aktív eszköz (master) is igényelheti a busz használatát. Ilyenkor valamilyen eljárással el kell dönteni, hogy melyik eszköz kapja meg először a buszhasználat jogát. 
A buszhasználat jogának eldöntésére szolgáló folyamatot nevezik buszfoglalásnak, busz arbitrációnak (bus arbitration).

Párhuzamos kiszolgálási mód

alkalmazásakor minden eszköz önálló buszkérő és buszengedélyező vezetékkel rendelkezik. 
A beérkező igényeket a vezérlő logika sorolja, dekódolja és a legmagasabb prioritású eszköz számára engedélyezi a busz használatát. 

Soros kiszolgálási mód

alkalmazásakor az eszközök sorba vannak kötve és a lánc mentén az elhelyezkedésük szabja meg, hogy mikor kaphatják meg a sín használatát. Amelyik eszköz a legközelebb van a vezérlőhöz, annak a prioritása a legmagasabb 

Mindkét esetben a jogosultság megállapítása történhet:

centralizált módon, amely esetben egy központi prioritásvezérlő logika szabja meg a hozzáférés sorrendjét
decentralizált módon, amely esetben a priorizáló logika elosztott formában valósul meg, az egyes eszközök vezérlői által

Érdekes videó:







Nincsenek megjegyzések:

Megjegyzés küldése