PC-s sínek (PCI és AGP)

A mai alaplapok legnagyobb részét elfoglalják a bővítőkártyáknak szánt foglalatok. A mostanában gyártott alaplapokhoz alapvetően három típusú kártya használható: ISA, PCI, AGP. Mára már szinte csak két típus maradt fent ( az újabb alaplapokban már csak ez a két típus található meg): a PCI és az AGP.

Megnevezés Szélesség (bit) Sebesség (MHz) Sávszélesség (Mbájt/sec)
16 bites ISA 16 8,3 15,9
EISA 32 8,3 31,8
PCI 32 33 127,2
PCI 2.1 64 66 508,6
AGP 32 66 254,3
AGP Pro 32 66 254,3


PCI sín


PCI sín az alaplapon

A CPU fejlődését leszámítva a PC-n belül kétségtelenül az volt a legnagyobb változás, hogy az ISA (Industry Standard Architecture) sínt felváltotta a PCI (Peripheral Component Interconnect) csatlakozó. Az ISA-t már sokszor eltemették - például a PC98 specifikáció (Compaq-Intel-Microsoft) szerint tilos a használata -, de az alaplapgyártók az olcsó gépekbe szánt eszközeikről ma sem hagyják még el teljesen, bár adapterkártyát már szinte senki sem gyárt hozzá. A 16 bites ISA sín leváltása már egy évtizeddel ezelőtt napirendre került: az IBM 1987-ben jelent meg a PS/2 sorozattal, ebben a mikrocsatorna (MCA - Micro Channel Architecture) névre hallgató csatlakozó fogadta az adapterkártyákat. Az MCA műszaki szempontból nem volt rossz megoldás, de az IBM levédte, és licencdíjat akart szedni a használatáért a többi gyártótól. Azok válaszként 1989-ben kidolgozták a szabadon alkalmazható 32 bites EISA (Extended ISA) felületet, ez felülről volt kompatibilis az ISA-val, vagyis használhatóak maradtak benne az ISA adapterkártyák. Eredetileg az ISA egy 6 megahertzes órajelet továbbított az adaptereknek, ezt később 8,33 megahertzre növelték. Az órajelet felhasználhatja a periféria, de a sínen folyó adatátvitelnek nem kell ehhez az órajelhez igazodnia, vagyis az ISA aszinkron sín. Átviteli sebességének elvi maximuma 8 megabájt/másodperc, a gyakorlatban 4-6 megabájt érhető el rajta. Az EISA már szinkron sín, vagyis átvitelét az órajele ütemezi, s ez a sín szélességével együtt a maximális sebességet is meghatározza. Az ISA-kompatibilitás miatt megtartották a 8,33 megahertzet, maximális sebessége így 4 bájt X 8,33 megahertz = 33 megabájt/másodperc volt. Ára és nehézkes konfigurálása miatt fénykorában is csak a kiszolgálókban terjedt el, ma már nem használják. Az IBM hosszú ideig ragaszkodott az MCA-hoz, többször is megújította a specifikációt, de végül - látván a piac többi szereplőjének ellenállását - feladta. Az MCA utolsó változatának maximális sebessége 40 megabájt/másodperc volt. Mivel az ISA lassúsága kezdetben elsősorban a grafikus kártyáknál okozott szűk keresztmetszetet, a távol-keleti gyártók egyik szervezete, a Video Electronics Standard Association (VESA) olyan csatlakozót dolgozott ki, amely közvetlenül a processzorsínre épült az alaplapon. Innen kapta a lokális busz (VL - VESA local bus) nevet. Sebessége azonos volt az utána érkező 32 bites PCI sebességével, de csak viszonylag szűk határok között lehetett terhelni, és ami ennél is fontosabb, jellegéből adódóan processzorfüggő. Ezért a 386/486-os CPU-k eltűnésével a VESA is kihalt. Sebessége olyan új, nagyobb felbontású üzemmódokat tett lehetővé a képernyőn, amelyeket az ISA nem. A VESA-nak ezeket definiálnia kellett, és VESA-kompatibilis módok néven ma is használatosak.
A PCI sín előnyei révén jó ideje az uralkodó adaptercsatlakozó a PC-ben, sőt proceszszorfüggetlensége okán más architektúrákban (Apple, Sun) is alkalmazzák. A PCI specifikáció első változatát 1992 júniusában tette közé az Intel, ezt 1993 áprilisában követte a 2.0-s, 1995 elején a 2.1-es verzió, majd 1999 januárjában a 2.2.-es verzió. A PCI szinkron sín, első definíciója 32 bit széles és maximálisan 33 megahertzes órajelű, azaz 4x33 = 132 megabájt/szekundum sebességű illesztőfelületet rögzített. Második változata az akkoriban megjelent 64 bites külső adatsínnel rendelkező processzorokhoz, így például a Pentiumhoz igazodva már 64 bit széles sínt is alkalmaz, ennek sebessége 264 megabájt/másodperc. Végül a 2.1-es verzió legfontosabb újdonsága a 66 megahertzre növelt órajel volt, ez a 64 bites szélességgel 524 megabájtos teljesítményt érhet el másodpercenként. Hangsúlyozni kell, hogy a megadott sebességek az elméleti maximumok, a valódi értékek a körülményektől függően alakulnak, a gyakorlatban ezeknek az 50-80 százaléka érhető el. Energiatakarékos üzemmódban az órajel csökkenthető, alvó állapotban pedig meg is állítható.
Opcionálisan négy megszakításvonal szerepel a PCI specifikációjában: INTA, INTB, INTC és INTD azonosítóval; ezek a PCI sínen levő perifériák kiszolgálására használhatók, és megoszthatók. A megszakítás a számítógépes rendszerek általános vezérlőeszköze, minden architektúrában alkalmazzák. A rendszert a processzor irányítja: sorban végrehajtja az éppen futó program utasításait. Sokszor azonban félbe kell szakítania ezt, mert valamilyen külső esemény történt, például a felhasználó leütött egy billentyűt. Ezeknek a kéréseknek a fogadására a legtöbb CPU-hoz hasonlóan az Intel típusainak is két bemenetük van: az INTR (interrupt - megszakítás) és az NMI (non-maskable interrupt - nem maszkolható megszakítás). Az a legfontosabb különbség a kettő között, hogy az INTR bemeneten érkező kéréseket a programozó figyelmen kívül hagyhatja (maszkolhatja), az NMI-re azonban a processzor mindenképpen reagál. A letiltásra azért van szükség, mert minden operációs rendszerben vannak olyan kritikus programrészek, amelyeknek a végrehajtását nem tanácsos félbeszakítani. Egy ilyen programrész előtt le kell tiltani az INTR fogadását, a végrehajtása után pedig újra engedélyezni kell A PC-ben az NMI is letiltható, csak nem a CPU-ban, hanem egy külső logikai kapun keresztül. Az NMI-t a memória paritáshibájának és az ISA adapterek hibájának a jelzésére használják, valamint rendszervezérlésre; a �normál" megszakításkérések fogadására az INTR szolgál.
Mivel sokféle periféria kérhet megszakítást, de a CPU-nak csak egy ilyen bemenete van, megszakítás-vezérlőt kell alkalmazni. Ez egyrészt több perifériától fogadhat megszakításkérést, másrészt azonosítja, hogy melyikről van szó, hiszen a különböző perifériák kiszolgálásához más-más programot kell futtatni a processzoron. Annak idején az eredeti PC-ben és XT-ben az Intel 8259A típusú megszakítás-vezérlőjét használták; arra 8 periféria csatlakozhat egyszerre. Az AT-be már két ilyen áramkört építettek, így a megszakítások száma 15-re nőtt. Mi történik akkor, ha ennél többre van szükség? A 15 megszakításból néhányat eleve elfoglalnak a rendszer elemei - például a valaha önálló segédprocesszorként működő, ma a processzorba beépített lebegőpontos egység -, és már az eredeti AT-ben is meglevő perifériák, mint a hajlékonylemez, a merevlemez és soros, párhuzamos kapuk. A konfigurációból hiányzó perifériák megszakításai felhasználhatók, de az új perifériáknak - CD-ROM, hálózati kártya, hangkártya stb. - szabadon kiosztható megszakítások száma korlátozott.
Egy megszakításra akár még két periféria is ráköthető, vagyis a megszakítás megosztható. A megosztott megszakításról érkező kérésre az első perifériát kiszolgáló rutin indul el, és megkérdezi a hozzá tartozó eszközt, hogy ő kérte-e a megszakítást. Ha igen, akkor kiszolgálja, ha nem, akkor elindítja a második perifériát kezelő eszközmeghajtót, s az kezeli a saját perifériáját. Sajnos a hagyományos, 8259A által kezelt megszakítások fizikai kialakítása nem teszi lehetővé a megosztást; ha két periféria egyszerre kér megszakítást, vagy a két kérés között csak rövid idő telik el, akkor a 8259A ezt hibás működésnek érzékeli. Sok esetben a megszakítások szűkössége miatt használják a SCSI csatolót, mert arra egyszerre hét periféria - merevlemez, CD-ROM, lapolvasó stb. - köthető rá, és csak egy megszakításra van szüksége. Hasonló haszonnal jár az USB csatoló is.
Az Intel a többprocesszoros rendszerek támogatására a 90 és 100 megahertzes Pentiumoktól kezdve - a Celeron kivételével - külön megszakítás-vezérlőt (APIC - Advanced Programable Interrupt Controller) is épít processzoraiba, és lapkakészleteinek nagy része (HX, TX, LX stb.) tartalmaz egy ezzel együttműködő újabb megszakítás-vezérlőt, a 82039-et, de ez a perifériák által használható megszakításokat nem érinti.
Egy PCI eszköz, ha a funkciójához megszakításra van szüksége, akkor az INTA-t használja. Amennyiben két funkciót - például két soros kapu - lát el, akkor az első az INTA, a második az INTB megszakítás, és így tovább. Nem követelmény, hogy a PCI perifériák valamennyi INTA vonala a PCI INTA bemenetére csatlakozzék, mivel akkor ez lenne a legterheltebb vonal, szinte minden PCI eszköznek lévén INTA megszakítása. A PCI specifikáció semmiféle útmutatást nem ad a négy PCI megszakítás megosztására nézve, lehet hardveresen �beégetett" vagy programból konfigurálható. Sok esetben például a BIOS Setupban beállítható, hogy az alaplapon levő két IDE kapu melyik PCI megszakítást használja. A PCI periféria nem tudja előre, hogy melyik megszakításra kerül a négy közül, ezt a BIOS állítja be a gép bekapcsolása után - nem úgy, mint az ISA perifériákon: ott az adapterkártyán, átkötésekkel van beállítva, hogy az adapter melyik megszakítást használja. A BIOS osztja ki az allokálható megszakításokat - felmérvén a gépben levő PCI és ISA perifériákat -; a PCI megszakításokat csak akkor osztja ki, ha szükséges. A perifériának az a következő feladata, hogy a felhasznált (legfeljebb négy) PCI megszakítást hozzárendelje a szabad IRQ vonalakhoz. Elvileg csak a szabad IRQ megszakításokat használhatja, hiszen ezek nem oszthatók meg. Sajnos azonban, mivel nem - vagy nem jól - ismer fel minden ISA eszközt, időnként mégis megosztja a már használt IRQ-kat is, ezért ezek az eszközök nem fognak működni.
Ennek elkerülésére a BIOS Setupban az ISA eszközök által eleve elfoglalt megszakításokat a �Legacy ISA" beállítással kivehetjük a BIOS választékából. A �PCI/ISA Plug & play" beállítás azt jelzi, hogy ez a megszakítás kiadható vagy egy ISA eszköznek (ha felismerte) vagy a négy PCI megszakítás valamelyikének. A kiosztás után a PCI eszköz egy regiszterébe a BIOS kiírja, hogy melyik megszakítást kapta meg, az operációs rendszer pedig - a perifériát lekérdezve - ennek megfelelően állíthatja be az eszközmeghajtóját. Tapasztalat szerint a felhasználó - esetleg hibás - megszakítás-beállításait a BIOS nem bírálja felül. Csak a perifériacím-ütközésre figyel, ha tehát, mondjuk, a PCI és az ISA sínen is van COM1 soros port, akkor figyelmeztetést küld az ütközésről, és ha nem reagálunk, akkor a PCI sínre csatlakozót engedélyezi, az ISA-t pedig letiltja - mivel a PCI sínen lévő perifériákat �tapogatja le" először. A BIOS a megszakítás-ütközés megszüntetését az operációs rendszerre bízza: vele oldatja fel azt a helyzetet például, hogy a COM1 (ISA) és a COM3 (PCI) is az IRQ3-at akarja használni. A Windows 95/Windows 98 pedig annak adja a megszakítást, és azt használja, amelyiket előbb találja meg; az iménti példában ez a COM1 lesz az ISA sínen.
A személyi számítógépekben általában 5 voltos, 33 megahertzes PCI sínt használnak, a kevés számú kivétel közé tartozik például a Silicon Graphics nemrég piacra hozott PC-je: az 3,3 voltos PCI adaptereket fogad. Az ajánlás 2.1-es verziója már a 66 megahertzes változatot is definiálja; az 64 biten elvileg már 8bájt X 66 megahertz = 528 megabájt/másodperces maximális sebességet érhet el. Az alaplap érzékeli, hogy 33 vagy 66 megahertzes-e az adapterkártya, és e szerint választja ki az órajelet. A két adaptertípus együtt is használható, ilyenkor azonban a 66 megahertzesek is a 33 megahertzes közös órajelet kapják. A leírásban szereplő órajel csak a maximum, az adaptereknek működniük kell a 0-33, illetve a 0-66 megahertzes tartományban, mert ez szükséges az energiatakarékos üzemmódhoz és az alvó állapothoz. Nagyfrekvenciás jelek továbbításakor - többek között - a visszaverődés és az áthallás okoz nehézségeket. Az elektromágneses hullám visszaverődik a vezeték szabad végéről - mint a vízhullám a medence faláról -, és interferál a beérkező jelekkel. Ennek elkerülésére egy ellenállással (vagy impedanciával) zárják le a kábel végét, mint például a hagyományos koaxkábeles Ethernet hálózatot vagy a SCSI sínt. Az ellenállás azonban növeli az energiafogyasztást. A PCI-t úgy tervezték, hogy ne kelljen lezárni, sőt ahhoz, hogy a csatlakozón a feszültség elérje a névleges 3,3 vagy 5 voltot, nem is szabad lezárni, különben a sín nem működik. Az egymáshoz közeli vezetékeken haladó nagyfrekvenciás jelek feszültséget indukálnak a szomszédos vezetékekben, a vezeték hosszával arányos nagyságút: ez az áthallás. Ezért nem lehet akármilyen hosszú IDE kábelt, nyomtatókábelt stb. használni. Az alaplapon levő PCI sín vezetékei még elég rövidek, de egy nagyobb rendszerben, ha a szekrény hátoldalán kell az egyik dobozból a PCI sínt átvezetni a másikba, akkor az áthallás már bajt okozhat. A PCI erre két megoldást kínál. Az egyik szerint nem egyszerre adja ki a jeleket a vezetékeken, hanem az első órajel alatt csak mondjuk az 1-es, a 3-as, az 5-ös stb. kábelekre, a másodikban pedig a többi - a 2-es, 4-es stb. - vezetékekre. A második megoldás minden kábelen egyszerre továbbítja a jeleket, de fokozatosan kapcsolja rájuk a feszültséget: az első órajel alatt mondjuk csak 2,5 voltot és a másodikban az 5 voltot, mivel az indukció arányos a feszültségváltozással. Sajnos mindkét módszer tönkreteszi a PCI egyik legnagyobb előnyét, a sebességét, ezért a gyakorlatban ritkán alkalmazzák őket.
Egy átvitel az irányától függően lehet adatkérés (olvasás) vagy adatküldés (írás). Azon a csatlakozón, amelyhez memória és/vagy egyidejűleg több eszköz is kapcsolódik, továbbítani kell a címzettet kiválasztó információt is, vagyis az adat címét. Méghozzá az adat előtt, hogy íráskor a céleszköz felkészülhessen a fogadására, olvasáskor pedig a küldőnek legyen ideje �előkeresni". Hagyományos átvitelnél a címet minden egyes adat előtt továbbítják a sínen. Az adatok továbbításuk közben a legtöbb esetben nem tetszőlegesen, hanem valamilyen logikai sorrendben követik egymást, ezt a csomagátvitellel (burst átvitel) lehet kihasználni. Csak az első átvitel, az úgynevezett címfázis továbbítja a legelső adat címét és az átvitel típusát, ezt sorban, további címközlés nélkül követik az adatokat átvivő adatfázisok. A második, harmadik stb. adat címét automatikusan generálja a másik, íráskor a fogadó, olvasáskor a küldő oldal. Egy fázis hossza egy órajel, azaz 33 megahertzes órajelnél 30 nanoszekundum, 66 megahertznél pedig 15 nanoszekundum. A terminológiai egyszerűsítés céljából a PCI leírása kezdeményezőnek (initiator) nevezi az aktív, az átvitelt vezérlő oldalt, illetve célnak (target) a passzív, a kérésre reagáló oldalt. A csomagátvitellel sok idő takarítható meg: az Intel-kompatibilis processzorok a 486-os óta csomagátvitellel is tudnak kommunikálni a memóriával vagy a külső gyorsítótárral. A PCI, ha lehetséges, minden egyes tranzakciót csomagátvitellel hajt végre. Abban az esetben, ha a másik oldal erre nem képes, akkor az első adat továbbítása, az első adatfázis után jelzi ezt a kezdeményezőnek, s az leállítja a tranzakciót. Majd a második adattal újraindítja, ezt a túloldal ismét leállítja stb. - ily módon a hagyományos átvitel is megoldható a PCI-on. Mindkét oldal csökkentheti a sebességet azzal, hogy az adatfázisok közé szünetet, várakozó fázisokat iktat be. Míg az említett processzorok esetében egy csomagátvitel maximum 4 adatfázisból állhat - azaz 4x8 = 32 bájt lehet egy csomagban -, a PCI esetén nincs ilyen beépített korlátozás, csak az adott körülmények befolyásolják a csomag hosszát, így tehát akár több kilobájt is átvihető egyetlen menetben.
A sín csatlakozói nemcsak a szinkron vagy aszinkron működésben különböznek egymástól, hanem abban is, hogy a cím- és az adatbitek közös vezetéken haladnak - multiplexeltek -, vagy külön vonal tartozik mindegyikhez. A külön adat- és címsín nyilván gyorsabb működést tesz lehetővé, de növeli a költségeket, a csatlakozónak és az adapterkártyáknak is több hely kell. A PCI 32 címvezetéke és a 32, illetve a 64 bites változat 64 adatvonala önmagában, a kísérőjelek nélkül is szép mennyiség. Összehasonlításként a 16 adat- és 24 címbitet hordozó ISA csatlakozó összesen 98 vezetéket tartalmaz, még ha a legtöbb adapter nem is használja mindegyiket. Csomagátvitelnél csak az első címet kell kiadni, a címsín az adatfázisok alatt kihasználatlan, ezért a multiplexelt felépítést választották a PCI tervezői. Az AD (Address-Data) vonalak az első fázisban a címet, a következőkben pedig az adatokat továbbítják. A következő ábra a legfontosabb PCI jeleket mutatja. Ezek egy része a 64 bites változathoz szükséges, más részük opcionális.

A PCI sín legfontosabb jelei

A C/BE (Command/Byte Enable) vezetékeken a kezdeményező a címfázis alatt a művelet típusára utaló parancsot, az adattovábbító fázisok alatt pedig a bájtkiválasztó jeleket adja ki. A 32 bites PCI a négy C/BE vonalon 16-féle parancsot tud kiadni, a 2.1-es változat ebből 14-et használ, kettő más célra van fenntartva. A parancsok három nagy csoportot alkotnak, úgymint: memóriára vonatkozó, perifériának szóló és speciális parancsok. Utóbbiak közé tartozik például az üzenetküldés: ez értesíti a PCI eszközöket, hogy a rendszer energiatakarékos, alvó állapotba került (processor halt), vagy hiba miatt leállt (processor shutdown). A parancsok egy része - például a gyorsítótár és a főmemória közötti adatátvitelt támogató - a PC-ben nem használatos, mert ott a főmemória, illetve a gyorsítótár nem a PCI sínre csatlakozik. A 32 bit széles PCI a memóriára vonatkozó parancsokkal mindig 4 egymást követő bájtot visz át, a kiadott startcímnek oszthatónak kell lennie 4-gyel. Például szükségünk van a 101-es memóriacímen lévő adatbájtra. A kezdeményező által kiadott startcím ekkor 100 lesz, mert ez a hozzá legközelebb eső, néggyel osztható cím. A memóriamodul - ha képes rá, azaz 32 bites - a PCI sínen a 100, 101, 102 és 103 címen lévő bájtokat egyszerre küldi el. Közülük csak a másodikra, a 101 címűre van szükség, ezért a C/BE vonalon kiadott kóddal a kezdeményező az érkező 32 bitből csak a 8 és 15 közöttieket �engedi be". Ezért hívják bájtengedélyezésnek a C/BE adattovábbító fázisok alatti funkcióját. Segítségével a küldött vagy érkező 4 bájtból tetszőlegesen válogathatunk. Például kérhetjük minden másodikat, vagy kihagyhatunk egyet. A bájtválogatás a csomagban egymást követő adatfázisokban változhat. Ha az előzőekben említett csomag folytatódik, a második fázisban a 104, 105, 106 és 107 címen lévő bájtok érkeznek. Tetszőlegesen válogathatunk közülük, függetlenül attól, hogy az előző fázisban melyiket választottuk. Íráskor ugyanez a módszer, csak az adat iránya fordított: a processzortól halad a memória felé. Előnye ennek a megoldásnak, hogy a PCI-n akkor is használható a csomagátvitel, ha nem szomszédos adatokat akarunk elérni.
A PCI sebességeként emlegetett 132 megabájt/másodperc csak elméleti érték. Tételezzük fel, hogy minden átvitel csomagban történik, és minden csomag három adatfázisból áll, azaz 3x4 = 12 bájtot továbbít. Egy csomag hossza ebben az esetben olvasáskor 6, íráskor pedig 5 órajel. Számolnunk kell a csomagok között egyfázisnyi szünetet is, mert nem csak egy periféria használja a PCI sínt. Olvasás közben az AD vonalak iránya megváltozik, a címet a processzor, az adatokat pedig a memória teszi rá a sínre, az ütközés elkerülésére be kell iktatni egy plusz órajelet. Egy csomag hossza így 33 megahertzes órajelnél íráskor 5x30 = 150 nanoszekundum, olvasáskor 6x30 = 180 nanoszekundum. Az írás sebességére ekkor 76,3, az olvasáséra pedig 63,5 megabájtot kapunk másodpercenként.
A perifériák általánosságban nem tudnak csomag átvitellel kommunikálni. Négy olyan eszköz van közöttük, amelyik rendelkezik saját memóriával, és így elvileg alkalmas a csomagátvitelre a PCI sínen: a képernyővezérlő, a hálózati adapterkártya, a merevlemez, valamint a hangkártyák egy része. Gondot okoz azonban, hogy az Intel processzorok csak a memóriához forduláskor dolgoznak csomagátvitellel, a perifériakezelő utasítások (IN és OUT) a hagyományos módon működnek. Ezért ezek az említett eszközök csak akkor használhatják ki a PCI sebességét, ha nem perifériaként kezeli őket a processzor. Két lehetőség van ennek elkerülésére: az egyik, hogy saját vezérlőjük hozzáférhet a főmemóriához, a másik, hogy az új típusú, 32 bites DMA vezérlő továbbítja számukra az adatokat. A PCI lehetővé teszi a központi processzortól független adattovábbítást, akár az adapter és a főmemória, akár két PCI adapterkártya között.
Ellentétben az ISA-val, a PCI sín forgalmát tehát nemcsak a CPU vagy a DMA vezérlő, hanem az adapterek vezérlői is irányíthatják, és előfordul, hogy egyszerre ketten is szeretnék használni. Ezért az alaplapon szükség van egy hozzáférés-kiosztóra (arbiter), ez utalja ki a használat jogát a jelentkezőknek. Minden PCI vezérlőnek van egy igénylő (REQ) kimeneti és egy nyugtázó (GNT) bemeneti vonala. Amikor használni akarja a sínt, a REQ vonalon jelzi ezt a kiosztónak, s az a GNT vonalon értesíti, ha ő lesz a következő. Ezt a gyorsabb váltás érdekében még az előző síntulajdonos adatátvitele alatt megteheti, ennek a befejezését az újnak meg kell várnia. A PCI-leírás nem szabja meg - a platformfüggetlenség miatt nem is tehetné -, hogy több egyidejű jelentkező esetében mi alapján dönt a hozzáférés-kiosztó. Ennek egyetlen feltétele van csupán: az, hogy a módszer mentes legyen a �halálhuroktól" (deadlock), azaz nem fordulhat elő az az eset, hogy az eszközök kölcsönösen egymásra várnak. Egy csomagban az egymást követő adatfázisok száma nem korlátozott, sőt, a hosszabb csomagok nagyobb átlagsebességet jelentenek. Többvezérlős környezetben azonban meg kell akadályozni, hogy az éppen aktuális vezérlő �ráüljön" a sínre, és emiatt adatok vesszenek el, mert például a hálózati kártya nem jut szóhoz a képernyővezérlő miatt. Ezért mindegyik PCI vezérlőben van egy időzítő annak meghatározására, hogy meddig használhatja a sínt a vezérlő. Az időtartam lehet fixen beépített vagy a rendszer indulásakor szoftverből beállítható. Valahányszor a vezérlő megkapja a sínt, az időzítő elkezdi a visszaszámlálást, és ha az idő letelt, a vezérlőnek a következő adatfázis befejezése után vissza kell adnia a sínt a kiosztónak. Ez alól csak akkor van kivétel, ha a sínkiosztó még nem vette vissza tőle a nyugtázó (GNT) jelet, ami azt jelenti, hogy más még nem jelentkezett a sínért.
Az átvitel közben esetleg fellépő hibák detektálására paritás-ellenőrzést végez a PCI. Az adatot továbbító oldal kiszámítja az AD és a C/BE vonalak paritását, és ennek megfelelő bitet küld el a paritásvonalon (PAR). A fogadó oldal a vett adatból szintén kiszámítja a paritást, és összehasonlítja a PAR vonalon érkezővel. Amennyiben a kettő nem egyezik, ezt a paritáshiba-vonalon (PERR) jelzi a rendszernek. Íráskor - mivel a vezérlő kezeli mind az AD, mind a C/BE vonalakat - a paritásbitet a címmel vagy az adattal egy időben tudja továbbítani. Olvasáskor a céleszköz csak az AD sínt használja, a C/BE a vezérlő kezében marad, ezért a cél csak kicsit késve tudja kiszámolni a közös paritást. Így a PAR vonalon küldött bit olvasáskor mindig az aktuálist megelőző fázisra vonatkozik. A paritáshiba kezelésének módja már nem része a PCI-leírásnak - ha az átvitel megismétlése nem segít, akkor feltehetően hardverproblémáról van szó.
Az alaplapon elhelyezkedő PCI csatlakozók lehetnek 5 és 3,3 voltosak, 32, illetve 64 bitesek. A specifikáció az energiatakarékos 3,3 voltos csatlakozók, illetve adapterkártyák használatát ajánlja. Ezek is megkapják a PC tápegysége által előállított négyféle feszültséget (3,3 volt, 5, +12 és -12 volt), de a csatlakozók vonalai 3,3 volttal dolgoznak. A 32 bites kártyák használhatóak a 64 bites foglalatokban, és fordítva. Ügyelni csak a feszültség egyezésére kell, de a kártyák és az aljzatok olyan kialakításúak, hogy megakadályozzák a helytelen csatlakozó-kártya párosítást. Az alaplap érzékeli a kártya jelenlétét, és a teljesítményigényét (25, 15 és 7,5 watt) is jelezheti.
A tavaly januárban kiadott 2.2-es specifikáció számos újdonságot tartalmaz. Legfontosabbak közé tartozik a Hot-Plug specifikáció, amely lehetővé teszi a Hot Replace funkciót, vagyis egy meghibásodott PCI eszköz kicserélését, a Hot Upgrade funkciót, vagyis egy működő eszköz újabbal való kicserélését, valamint a Hot Expansiont, vagyis egy eddig még nem használt eszköz rendszerbe illesztését - mindez a számítógép, illetve az operációs rendszer leállítása nélkül. Másik lényeges újdonság a PCI Power Management, amely biztosítja az ACPI (Advanced Configuration and Power Interface) kompatibilitást. Az ACPI segítségével a a PCI eszközök beilleszthetők a számítógép energiatakarékossági műveleteibe, így ki lehet kapcsolni a nem használt eszközöket.

A PCI szabvánnyal kapcsolatos linkek:

http://www.pcisig.com/
http://www.picmg.com
http://www.pci.org/
http://www.linuxdoc.org/HOWTO/PCI-HOWTO.html
http://www.microsoft.com/hwdev/PCI/
http://www.asus.com.tw/Products/Techref/Multimedia/agp_feature.html

 

 

AGP sín


AGP sín az alaplapon


Az Intel 1996-ban adta ki az AGP (Accelerated Graphics Port) első specifikációját, és egy évvel később, 1997 májusában jelentette be az első AGP-t támogató lapkakészletét, a 440LX-et. Ahhoz, hogy lássuk, hogyan gyorsítja az AGP a háromdimenziós ábrázolások megjelenítését, át kell tekintenünk ezeknek az előállítási módját és az AGP nélküli működést. A térbeli testek perspektivikus (valamely térbeli pontból látható) képét két lépésben állítja elő a számítógép. Először az ábrázoló geometria szabályai szerint kiszámítja a testváz perspektivikus képét, rendszerint elemi háromszögekre bontva a bonyolult alakzatokat. Ehhez nagy mennyiségű lebegőpontos, vagyis törtekkel végzett műveletre van szükség: ki kell számítani az átfedéseket, a takarásokat is. A látható részek vázát azután beborítja a megfelelő felülettel, textúrával. A textúrákat bitképek formájában készen kapja a rendszer, de a körülményeknek - megvilágításnak, nézőpontnak - megfelelően sokszor még át kell alakítania, transzformálnia kell őket, több textúrát - például szilárd felületet és vizet - kell kombinálnia; mindezt a munkát a 3D megjelenítőkártya grafikus vezérlőprocesszora végzi el.
A kész textúrákat szintén a grafikus CPU teszi fel a testvázra - ha van grafikus CPU a konfigurációban; ha nincs, akkor ezt is a CPU csinálja -, s ezzel előáll a végleges kép. Ez a kép azonban a virtuális helyszínen való mozgással folyamatosan változik, újra kell számolni a testvázakat és a textúrákat, a folyamatos megjelenítéshez tehát nagy lebegőpontos teljesítményű CPU és 3D megjelenítőkártya szükséges. Az Intel processzorok a cég szerint a Pentium II-vel érték el az ehhez szükséges lebegőpontos sebességet, és ezzel nem a CPU, hanem a CPU és a videokártyát összekapcsoló PCI sín a legfőbb akadály a sebességnövelés útjában.
Az általában 1 és 128 kilobájt közötti méretű bitmintákat a processzor a merevlemezről a PCI sínen át beolvassa a rendszermemóriába. Innen veszi elő őket a grafikus vezérlő, és szintén a PCI sínen átviszi a videokártyán levő saját memóriájába. Ennek csak egy részét foglalja el a pillanatnyi képernyőtartalom, a többi a képelőkészítéshez szükséges adatokat, közöttük a textúrákat tárolja. A grafikus vezérlő itt transzformálja őket, s viszi fel a testvázra. Ennek a megoldásnak azonban több hátránya is van: - a textúrákat két helyen is tárolja: a rendszermemóriában és a megjelenítő memóriában; - a megjelenítő memória mérete korlátozza a használható textúrák számát, illetve méretét, s ezzel a kép finomságát; - a PCI sín terheltsége közvetlenül befolyásolja a kép minőségét: ha a textúrák nem érkeznek időben, akkor akadozik a megjelenítés. Az AGP sínnek az az egyik jó tulajdonsága, hogy a PCI-nál négyszer gyorsabban, legfeljebb 528 megabájt/másodperc sebességgel kommunikál a rendszermemóriával, és ezzel a PCI forgalmát is csökkenti. De van más, legalább ilyen fontos erénye is: ennek a sebességnek a jóvoltából a rendszermemóriában foglalhat le helyet a textúráknak, és a grafikus vezérlő közvetlenül innen veheti őket, s nem kell előbb a megjelenítő memóriába vinnie őket. A rendszermemória erre a célra lefoglalt részét AGP memóriának nevezik. Az AGP memória lényegében a videokártyán lévő megjelenítő memória kiterjesztése. A megjelenítő memória egy részét a processzor ugyanúgy látja, mint a rendszermemóriát, az ezekre a címekre vonatkozó kéréseit a lapkakészlet címdekóderei irányítják a PCI vagy az AGP sínen át a videokártyára. A CPU fizikailag csak a lassúbb elérésből veheti észre a különbséget. A CPU-nak a videomemóriának küldött és az AGP tartományra eső címeit azonban nem a videokártyára irányítja a lapkakészletbe integrált memóriahozzáférés-vezérlő, hanem a rendszermemória felé. A baj az, hogy az AGP memória mérete dinamikusan változik az igények szerint a szabad rendszermemória méretétől függően, s mivel a rendszermemóriát a rendszer is használja, azért az erre a célra lefoglalt terület általában fizikailag nem függő. Ahhoz, hogy a processzor és a grafikus vezérlő is összefüggő területnek lássa az AGP memóriát, a lapkakészlet átfordítja a rá vonatkozó címeket, és így folytonosnak mutatja a fizikailag széttagolt területet. A címfordítást a lapkakészletbe integrált GART (Graphics Address Remapping Table) nevű táblázat teszi lehetővé: ezt úgy töltik fel, hogy egy adott bájtot ugyanazon a címen lásson a grafikus vezérlő és a processzor. Az Intel 1998 májusában adta ki az AGP specifikációjának második verzióját. Az AGP a 32 bites, 66 megahertzes PCI sín továbbfejlesztése. Új jelekkel és üzemmódokkal egészíti ki azt, de az eredeti PCI jeleket és funkciókat változatlanul hagyja. A jelkiosztásnak érdekes vonása, hogy az AGP csatlakozón szerepelnek az USB soros átviteli vonalai (USB+ és USB-), az USB hubként is működő monitorok számára. Így az USB csatlakozó lehet az AGP videokártyán, vagy mehet közvetlenül a videojelkábelen, mert ott van még két szabad érintkező.
Ami a protokollt illeti, a PCI és az AGP átvitel között az a legfontosabb különbség, hogy az AGP tranzakciók átlapolódnak, azaz például az adatkérés (olvasás) kiadása után nem kell megvárni, hogy a memória előkeresse a kért információt, hanem nyomban indítható a következő kérés. Az AGP vezérlő és a memóriavezérlő is várakozási sorokba (queue) rendezi a hozzá érkezett kéréseket, valamint a küldendő/fogadott adatokat. A kérések sora két részre oszlik: a sürgősekre, azaz a magas prioritásúakéra és az alacsony prioritásúakéra. Ebből az is következik, hogy a tranzakciók végrehajtása nem feltétlen követi az indítási sorrendet. Egy tranzakciótípuson belül azonban már a kiadási sorrend számít. Tehát egy AGP rendszermemória-írás előbb befejeződhet, mint egy olvasás, még ha az olvasáskérés érkezett is előbb, de az írások és az olvasások külön-külön már az indítási sorrendet követik. A memóriavezérlőnek más sorrendben is kiolvashatja a kért adatokat, de a kérési sorrendben kell elküldenie őket az AGP vezérlőnek. A lapkakészlet vezérlője külön sorba teszi a processzortól az AGP vezérlőhöz érkezett kéréseket - ezek PCI átvitellel jutnak el a vezérlőhöz -, de ezek a kérések nem lapolódhatnak át: új tranzakció csak az előző befejeződése után indítható. A videokártyán levő AGP vezérlő AGP és PCI átvitellel is elérheti a rendszermemóriát, pontosabban az itt levő AGP memóriát; a processzor a lapkakészleten át csak PCI átvitellel fordulhat az AGP vezérlőhöz és az adapterkártyán lévő megjelenítő memóriához. Ez alól egyetlen kivétel van, az opcionális gyors írás (FW - Fast Write): ilyenkor a processzor PCI művelettel - tehát nem átlapolhatóan -, de az AGP sebességével írhat a megjelenítő memóriájába. Az AGP sín forgalma így átlapolódott AGP és normál PCI átvitelek keveréke, a kétféle átvitel azonban teljesen független egymástól, csupán ugyanazokon a vezetékeken zajlik. Az AGP sínt viszont csak egyetlen vezérlő használhatja, ezért nevezik portnak vagy kapunak is. A PCI átvitelben a cím az átvitel első fázisában - a címfázisban -, ugyanazokon a vezetékeken halad, mint később az adatok az egymás utáni adatfázisokban. Az AGP egy nyolcbites önálló címsínnel, az SBA-val (Side Band Address) egészíti ki a PCI-t. Ezen egy 32 bites cím csak 4 átviteli ciklusban továbbítható, de ha a cím első 24 bitje azonos az előzőleg továbbított cím első 24 bitjével, akkor csak az új cím eltérő 8 bitjét kell átvinni. Az AGP háromféle átviteli sebességgel dolgozhat: egyszeressel, kétszeressel és négyszeressel. Egyszeres sebességen egy órajel alatt négy bájtot visz át, legnagyobb sebessége ekkor megegyezik a szintén 66 megahertzes PCI sín sebességével, tehát 266 megabájt/másodperc (4 bájt X 66 megahertz). Effektív átbocsátóképessége azonban az átlapolódó AGP átvitelek révén már ekkor is nagyobb a PCI-énál. A kétszeres sebességet úgy érik el, hogy az órajel felfutó és lefutó élén is továbbítódik egy adag, azaz négy bájt, a legnagyobb sebesség ilyenformán 528 megabájt (2 X 4 bájt X 66 megahertz). Végül négyszeres sebességen egy órajel alatt négy adag, azaz 4 X 4 bájt megy át, a legnagyobb sebesség több mint 1 gigabájt/másodperc, pontosabban 1056 megabájt/másodperc. Ehhez az órajelen kívül két külön időzítőjel is szükséges; ezeknek kétszer akkora a frekvenciájuk, mint az órajelé. A négyszeres sebesség a leírás szerint opcionális, nem kötelező. A PCI átvitelek sebessége a PCI specifikációnak megfelelően egyszeres, kivéve a már említett gyors írást: ezzel az írásmóddal kétszeres. Aki a szokásos irodai környezetben használja a személyi számítógépét, az AGP nem hoz érzékelhető teljesítménynövekedést. Az Intel ezzel a sínnel a DVD-s házimozi alkalmazásoknál akart sebességnövekedést elérni.

AGP Pro

A grafikus kártyák hihetetlen fejlődésének lehetünk tanui. Most már nem ritka a 2 (pl. Ati Rage Fury Maxx) vagy akár négy (pl. 3dfx Voodoo 6000) grafikus processzorral szerelt kártya, min. 32-64 Mbájt memóriával. Ezeknek a kártyáknak már jóval nagyobb az energiafogyasztása, amit esetenként az AGP busz már nem képes szolgáltatni. Bár most még nagyon ritkák az AGP Pro busszal szerelt kártyák, ennek a továbbfejlesztésnek pontosan az volt a fő célja, hogy képes legyen még nagyobb mennyiségű elektromos áramot szolgáltatni a kártyáknak. Ezért a szabvány előírja a kiegészítő csatlakozást (ha összehasonlítjuk az AGP sínnel, akkor az AGP sín mellett még egy kiegészítő sínt is találunk), a kártya mechanikai specifikációját, az I/O csatlakozókat és az alaplapon lévő elrendezést is. Az AGP Pro sín az AGP sín továbbfejlesztése és ennek következtében ezt a sínt egészítette ki mindkét irányban további csatlakozókkal. Így, ebben a sínben lehet használni a régi AGP buszos kártyákat is. A régi (AGP) és az új (AGP Pro) csatlakozók típusait láthatjuk a következő ábrán:


Az AGP szabvánnyal foglalkozó linkek:

http://www.agpforum.org/
http://www.agpforum.org/specs_specs.htm - AGP Pro leírása
http://support.intel.com/support/technologies/graphics/agp/
http://developer.intel.com/technology/agp/

http://www.microsoft.com/hwdev/agp/
http://www.ati.com/na/pages/faq/agp_faq.html