BUSZ-ok A számítógépek rendkívül fontos része a busz. A belsõ adat és utasításforgalom vagy teljes egészében, vagy jelentõs részében ezen keresztül játszódik le. Kialakításában lehet adott mikroprocesszortípusra orientált, vagy (sokszor valamely szabvány ajánlás alapján kialakítva) univerzális jellegû. A busz adatforgalmát vezérlõ, irányító egységeket masternek, az adatátvitelben passzív szerepet játszót slavenek nevezik. Egy buszon több master és slave egység lehet, de egyidõben csak egy master lehet aktív. Az IBM PC változatokban alkalmazott buszok alapvetõen a kialakított adat és címvonalak számában kûlönböznek. A vezérlõ vonalak nagy része közös, megengedve a korábban kifejlesztett illesztõ kártyák felhasználását. A buszok egységesek a feszültségszinteket, meghajtási típusait és minimális meghajtóképességet, terhelhetõséget tekintve. A buszokon szabványos TTL szinteket alkalmaznak. Az IBM PC-k buszrendszerei
A körülbelül 1984-ben bemutatott ISA busz (AT bõvítõbusz) busz jelentõsen kibõvítette a lehetõségeket. Az I80286 típusú processzor megkövetelte a megcímezhetõ memória tartomány 16 Mbyte-ra való növelését, és a 16 bites adatátvitel megvalósítását is. Ezen kívül a buszt már külsõ egység is vezérelheti. A busz bõvítését úgy oldották meg, hogy a PC-hez vagy XT-hez kifejlesztett kártyák az AT változatban továbbra is használhatóak maradjanak. Az alaplapon a 62 pólusú csatlakozó mellett egy új 34 pólusút is elhelyeztek. A kibõvített adat-, címés vezérlõ vonalakat erre a csatlakozóra vezették ki. Sajnos az AT bõvítõbuszról sem adott ki idõzítéseket is tartalmazó specifikációt az IBM. Ezt a feladatot a bõvített változatának, az EISA busz kialakításánál végezték el innen ered az Industry Standard Application (ISA) busz elnevezés. AT alaplap ISA busszal Általános jellemzõk Az AT változatokban alkalmazott ISA busz több új lehetõséget nyújt. 16 Mbyte memória megcímzését, 16 bites adatátvitelt is megvalósíthatunk rajta. A byte-os adatátvíteli ciklusok az XT busz átviteléhez hasonlóan történik. A busz 8 Mhz-es ütemjel-frekvenciájával 5 Mbyte/s-os elméleti adatforgalmat enged meg. Ezt az értéket azonban csak szélsõséges esetekben lehet elérni, hiszen a CPU-nak többek között számolnia is kell, perifériákat, például merevlemezt vagy nyomtatót kell vezérelnie. Lehetõség nyílik a buszciklusok lerövidítésére. Több megszakításkérés vezetékeket, és 4 byte-os, 3 szavas szervezésû DMA csatornákat találhatunk a buszon.
A busz használata Az ISA buszra több master egység is csatlakozhat. A busz vezérlési jogát úgy lehet átvenni, hogy DMA csatornát kaszkádosításra használunk fel, és a kérésvezetékét aktivizáljuk. A DMA vezérlõ a csatornához tartozó elfogadás vezetéken jelzi, hogy átvehetõ a vezérlési jog. Az aktív masternek gondoskodnia kell a dinamikus memóriák frissítéséröl is. (Rövid idejü kérésekkel, amelyek ideje nem haladja meg a 15 s-ot az alaplap továbbra is képes a frissítés elvégzére). Felépítés AT alaplapokon általában 6 darab 16 bites és 2 darab 8 bites kártyahelyet alakitanak ki, de az olcsóbbakon kevesebb csatlakozót találunk. A könyv méretü, laptop vagy notebook számítógépekben egyáltalán nem vagy egy 16 bites kártyahelyet alakítanak ki. Hátrányok, hiányosságok A 80386-os CPU fejlesztésekor viszont már megmutatkoztak az ISA architektúra hiányosságai. A processzor sokkal gyorsabban tudta feldolgozni az adatokat, mint ahogy az adatbusz szállítani tudta azokat. Az ebbõl származó sebességveszteség részleges kompenzálására az Intel bevezette a cache technológiát. Az adatok egy kis különösen gyors, a CPU chipben elhelyezkedö puffer áramkörben a teljes processzor sebességgel és a teljes rekordszélesség kihasználásával lehetett dolgozni. Az ISA nyilvánvaló hiányossága ellenére az Intel PC-k területén ma is ez az architektúra dominál. Ennek nemcsak a logikai IC-k és az alaplapok viszonylag alacsony elõállítási költsége az oka, hanem mindenekelõtt az ISA busz aljzatokhoz készült, szinte korlátlan számú bõvítõkártya.
A PCI kifejlesztése A VESA local busz sikerétõl megrettenve az Intel úgy döntõtt, hogy saját buszrendszert dolgoz ki a gyors processzoraihoz, hogy a 486 és Pentium típusú processzor teljesen új PC architektúrában bontakozhasson ki. 1992 júliusában összeült a Special Interest Group (SIG) és “kitalálta" az új Intel PCI buszt. A SIG körébe tartozik több mint 160 gyártó közûlük a legnagyobbak: Compaq, IBM, DEC, DEIL, NEC, Siemens és a Toshiba. A PCI-SIG három fõ célt tûzött ki maga elé: Általános jellemzõk A PCI busz 32 illetve 64 bites adatátvitelt valósít meg 33 Mhz-es órajellel, így az elérhetõ átviteli sebesség 133 illetve 266 Mbyte/s. A PCI busz adatszélessége dinamikus. Ez annyit jelent, hogy a következõ verziók felûlrõl kompatibilisek lesznek az összes régebbi kártyával. A PCI busz szabványa
A képmegjelenítés és a buszok A legelterjedtebb ISA buszon keresztûl is lehet elfogadható képet elõállítani. Nem reménytelen a helyzet, de nagy memóriaméretek esetén már kezdõdnek a problémák. A Windows nélküli ISA buszos kártyák általában az olcsóbb bár lassabb kategóriába tartoznak. Az EISA busz és az igazi 32 bites kártyáknál a memóriából az adatok eljuttatása sokkal gyorsabb, mint az ISA buszos gépeknél. A VLB 32 bites adatátvitelre tervezett belsõ busz, korlátozott kártyaszámmal. A sebességnövekedés az ISA buszhoz képest legalább 25%-os. A növekedés mértéke természetesen attól függ, hogy mennyi adatmozgatást igényel egy képmódosítás. Bizonyos feladatokat a Windows-gyorsítók átvállalnak, ott a tempónövekedés nem a VLB-nak köszönhetõ. A PCI busz már 64 bites adatátvitelt is támogat. Itt a buszt leginkább egy Pentiummal lehet kihasználni, különben hiába van PCI buszrendszer az alaplapon. A következõ táblázat egy busz-VGA kártya összehasonlító táblázat, amely a német Inside OS/2 címû folyóirat 1994/3. számában jelent meg. A méréseket ATI Graphics UltraPro kártyák különbözõ buszinterfészes változataival, OS/2 alatt végezték.
A mérési adatok másodpercben (s) értendõek.
(Irodalom: CHIP 1994/5/31)
CACHE-ek A gyorsító (cache)-tárak tartalmának karbantartási módszerei A gyorsító (cache)-tárak csak abban az esetben tudnak teljesítménynövelő hatást kifejteni, ha tartalmuk és a memória tartalma egyezik és megfelel a valóságnak. Az adatok esetében ez gondot jelenthet. Betöltés: • az aktuális igény felmerülésekor keresi ki a memóriából a kért byte-ot tartalmazó blokkot. A processzor azonnal megkapja a keresett byte-ot. • feltételezzük, hogy a blokk betöltése maga után vonja a következő blokk betöltését is. Ezért az n-edik blokk használatakor automatikus előkészítéssel töltődik az n+1-dik blokk is. • szelektív előkészítést alkalmazó módszernél az írható adatok a memóriában tárolódnak és a cache-be csak olyan adatok kerülnek, melyeknél nincs szükség átírásra. Aktualizálás: a cache-tár tartalmának módosítása után a memóriában is aktualizálni kell a tartalmat, hogy a program az aktuális értékkel dolgozzon. • azonnali átíráskor a módosított byte azonnal beírásra kerül a memóriába. Ha a módosított byte-hoz tartozó blokk a cache-ben van, ennek tartalma is aktualizálódik. • visszaírási, visszamásolási eljáráskor ha az adott byte-hoz tartozó blokk a cache-ben van, a főtárat csak a blokk cseréjekor aktualizálja. Ha a blokk nincs a cache-ben, a blokkot beolvasás után aktualizálja. Helyettesítési eljárások: A cache-tárak hatékonyságát az biztosítja, ha kevésszer kell a tartalmukat cserélni. Erre a legkevésbé használt blokkok cseréjének stratégiáját alkalmazzák. Ez megvalósítható számláló regiszterek, léptető regiszterek használatával, valamint megelőzési mátrix alapján.
Tipikus számítógéparchitektúrák és azok jellemzői. SISD
: egyetlen utasításfolyam és egyetlen adatfolyam feldolgozása. Ezek a gépek egy vezérlő egységgel és egy aritmetikai egységgel rendelkeznek, egy időben egy utasítást hajt végre. ( Neumann-elvű számítógépek. ) SIMD : egyetlen utasításfolyam, többszörös adatfolyam feldolgozása. Egyetlen vezérlő egységgel és több aritmetikai egységgel rendelkeznek és egyidőben egy és ugyanazt az utasítást hajtja végre több adaton. MISD : több utasításfolyam alapján egy adatfolyam feldolgozása. Ilyen gépek tulajdonképpen nincsenek, bizonyos esetekben ide sorolják az un. pipeline feldolgozást alkalmazó számítógépeket. MIMD : több utasításfolyam, több adatfolyam feldolgozása
Milyen legyen egy egyszerű CPU regiszterkészlete ? Miért ? • Utasításszámláló regiszter(PC=Program Counter, vagy IP=Instruction Pointer), amely a soronkövetkező utasítás memóriabeli címét tartalmazza mindig. Az utasításszámláló regiszter kezdő értékét, azaz a program első utasításának tárbeli helyét, kívülről (pl. az operációs rendszeren keresztül) kapja, a program indítása előtt. Amennyiben a program utasításai szigorú egymásutánban követik egymást a tárolóban, akkor a PC tartalma mindig a következő utasítás tárbeli címét adja meg; ha a programban elágazás következik be, akkor a vezérlő egység új értékkel, az elágazási utasításban lévő címmel tölti fel a PC-t. • Utasításregiszter(IR=Instruction Register) a vezérlő egység fontos része, amely a tárból kikeresett, "lehívott" utasítást fogadja be arra az időre, amíg a vezérlő egység az utasítás műveleti jelrésze(opcode) alapján meghatározza az elvégzendő műveletet és ennek alapján elindítja a végrehajtást vezérlő mikroprogramot. • Állapotregiszter(ek), vezérlő regiszter(ek) (status register, flag register, control register), amelyek egy, vagy több regiszteren belül tárolnak vezérlő és ellenőrző jeleket. A műveletek végrehajtásának eredménye alapján bekövetkező állapot jellemzőit tükrözi vissza a regiszter egy-egy helyiértéke, bitje. Ilyen jellemző pl. az eredmény nulla volta(zero flag), a keletkezett számérték túl nagy értéke(overflow flag), átvitel keletkezése(carry flag), stb. Az állapotregiszternek lehetnek olyan bitjei, amelyek valamilyen vezérlési előírást tárolnak, mint pl. valamely részegység használatának engedélyezése, vagy letiltása, memória lapozás engedélyezése, megszakításkérés kiszolgálásának letiltása, stb. Ha a különböző funkciójú bitek száma nagy, akkor önálló vezérlő regiszter(control register), állapotjelző regiszter(status, vagy flag register) használata a szokásos. • Veremmutató regiszter(SP=Stack Pointer), amely egy speciális tároló, a veremtároló legfelső elemét jelöli ki. A veremtároló általában a főmemóriában van kialakítva, annak egy lefoglalt területét használja. Adatokat csak a verem tetejére lehet tenni és csak onnét lehet levenni is. Ezt a tárolókezelési módot nevezik LIFO(Last-In-Firt-Out) módszernek. A veremmutató (stack pointer) mindig arra a tárolóhelyre mutat, annak a tárolóhelynek a címét tartalmazza, ahová a következő adatot elhelyezni(push), vagy ahonnét a következő adatot leveszi(pop) a processzor.
• Bázis(cím)regiszter(base register) az operandusok címzéséhez felhasznált regiszter, amely nem általános használatú, azaz nem minden processzornál található meg, vagy más néven használatos. A báziscím egy alapcím, amelyhez viszonyítva adhatjuk meg az utasításban az operandus helyét. • Indexregiszter(ek) (index register) szintén az operandusok címzését segítik elő, különösen adatsorozatok feldolgozásnál használhatók előnyösen. Ugyancsak nem minden processzornál van külön erre a célra szolgáló regiszter. • Pufferregiszter(ek) (Buffer Register), amelyek a processzor belső adat- és címsínjét választják el a külső sínrendszertől. Nem minden processzornál találhatók meg.
Mire szolgálnak a cache-tárak ? Milyen elv szerint történik az adatok visszakeresése a cache-tárból ? A cache-táraknak fontos szerepe van az adatforgalom gyorsítása és egyenletessé tétele szempontjából. A cache-tárak utasítások és adatok átmeneti tárolására egyaránt kialakíthatók. Cache-tárak típusai: Teljesen asszociatív(fully associative) cache A teljesen asszociatív tárban a beolvasott blokk bárhová elhelyezhető, bármelyik sorba kerülhet. Az elhelyezés sorát a helyettesítési algoritmus határozza meg. A teljesen asszociatív cache-tár előnye a rugalmasság a betöltésnél, de a visszakereséséhez ugyanannyi összehasonlító áramkör kell, mint ahány sora a cache-tárnak van és ez költséges. Emiatt az ilyen cache-táraknál, általában, 64 sornál többet nem alkalmaznak. A cache-tárban minden blokkhoz(esetleg minden byte-hoz) használnak egy érvényességi jelzőbitet(V = Valid bit), amely arról ad információt, hogy az adott sor blokkja ténylegesen az adott blokkot tartalmazza-e; A másik jelzőbit a módosítási jelzőbit(D = dirty bit), amely arról informál, hogy történt-e módosítás a blokk valamelyik byte-ja esetében. Közvetlen leképzésű(direct mapping) cache A közvetlen leképzésű cache-tárnál egy-egy blokk csak meghatározott helyre kerülhet. A blokkok helyét a cache-ben a blokksorszám(28bit) alsó 8 bitje, mint sorindex (line index) határozza meg. Tehát ebben a megoldásban a blokk csak abba a sorba kerülhet, amelyet a sorindex meghatároz. Amikor a processzor egy adatot keres a cache-ben, akkor a memóriabeli címből előállított sorindex alapján kijelöli a keresett sort, majd a felső 20 bitet(lapsorszámot) összehasonlítja a cache-beli lapsorszámmal. Ez így egyetlen összehasonlítást eredményez. A közvetlen leképzésű cache-tár előnye a gyors visszakeresés, ugyanakkor igen nagy hátránya a kötött blokkhelyek miatti merevsége. Csoport asszociatív(set associative) cache A csoport asszociatív cache-tár átmenet a teljesen asszociatív és a közvetlen leképzésű cache-tár között. A cache nagyobb, n sorból álló csoportokra van osztva, amelyek önmagukban, mint teljesen asszociatív tárolók működnek, azaz a csoporton belüli n hely bármelyikére kerülhet a blokk. Az elhelyezését a választott helyettesítési algoritmus határozza meg. A csoportasszociatív cache esetében, amikor a processzor egy adatot keres a cache-ben, akkor a memóriabeli címből képzett csoportindex alapján kijelöli az indexnek a megfelelő csoportot, majd a memóriacím felső 22 bitjét(lapsorszámot) összehasonítja a cache-beli lapsorszámokkal. Ez az összehasonlítás a csoport összes sorában egyidőben történik, azaz a cachehez egy olyan áramkör tartozik, amely jelen esetben 4 párhuzamos, összehasonító áramkört tartalmaz. A csoport asszociatív cache rugalmasabb, mint a közvetlen leképzésű tároló és ugyanakkor kis számú összehasonlító áramkör kell hozzá és viszonylag gyors. Szektor leképzésű(sector mapping) cache A csoport asszociatív cache-tárhoz hasonló, köztes megoldást képző és ma a mikroprocesszorokban ritkábban használt megoldás a szektor leképzésű cache-tár. Ennél a változatnál a processzor a csoport helyét jelöli ki asszociatív módon és azon belül a blokk helye, a lapon belüli elhelyezkedésének megfelelően kötött. Tehát az előző megoldás fordítottja a szektor leképzésű cache-tár. A visszakeresés módja az un. tartalom szerinti, ami azt jelenti, hogy a vizsgált adatnak a cache-ben tárolt adattal való egyezőségét vizsgálja a processzor a kiolvasáskor. Ez a vizsgálat a cache tárak esetében a keresett adat címének az összehasonlítását jelenti a cache-ben tárolt címekkel, vagy azok egy részével.
Melyik vezérlési mód adja a gyorsabb utasításfeldolgozást, a huzalozott vagy a mikroprogramozott? Az elemi műveletek végrehajtása a számítógép felépítésétől függően történhet: • Huzalozott (hardver) módon; amikor az utasítás feldolgozását jelentő elemi tevékenységek sorrendjének vezérlését bonyolult sorrendi áramkörökkel oldják meg (programozható logika (PLA)), amely a szükséges sorrendben és időzítéssel adja ki az egyes kapuk működtetésére szolgáló vezérlő jeleket. • Mikroprogramozott (szoftver) módon; amikor az elemi tevékenységek sorrendjét egy (többnyire ROM tárban) tárolt program, a mikroprogram utasításai vezérlik. A mikroutasítások két részből állnak: a különböző kapukat engedélyező vezérlőbitekből és a következő mikroutasítás címéből. A makroszintű, gépi kódú utasítás műveleti jelrésze adja meg a műveletvezérlő mikroprogram kezdőcímét, amelynek a mikroutasításait sorra véve történik az utasítás feldolgozása. Tehát azt lehet mondani, hogy a mikroprogram vezérelt műveletvégrehajtás számítógép a számítógépben. Az elvekből látható, hogy a huzalozott módon megvalósított utasítás feldolgozás a gyorsabb, viszont rugalmatlan, a feldolgozási metódus megváltoztatása csak áramköri elemek cseréjével lehetséges, míg a mikroprogramozott utasítás feldolgozás lassabb, de a mikroprogramtár változtatásával lehetőség van az utasításfeldolgozás folyamatának megváltoztatására.
FPGA-k (kivonat) A programozható cellatömb áramkörök, az FPGA-k, az utóbbi évtized alatt széles körben elterjedtek. Elterjedésüket nagy kapacitásuknak, gyorsaságuknak, egyszerű használatuknak köszönhetik. A Xilinx készítette az első kereskedelmi FPGA-t. Ebben a dolgozatban az FPGA-król elsősorban az XC3000 családról és alkalmazásairól van szó. Kétféle módon adjuk meg egy Xilinx chip esetén a tervek megvalósíthatóságának határait. Egy elvi megfontolásokon alapuló és egy tesztáramkörös vizsgálatokon alapuló határt állapítottunk meg. A tervek komplexitásának leírásához a logikai blokkok, a be/kimeneti blokkok és a hálók számát használtuk. Az eredmények felhasználhatók nagyobb feladatok kisebbekre való particionálásához. Az FPGA-k nagy sebességét kihasználva nagy sebességű programozható logikai vezérlőt készítettünk. A vezérlő egy logikai és egy I/O kártyából áll. A logikai kártyán egy LCA áramkört használtunk. Az I/O kártyán univerzális I/O blokkokat alakítottunk ki. A vezérlő lábai az aktuális alkalmazástól függően bemenetek vagy kimenetek is lehetnek. A Celluláris Neurális Áramkörök, a CNN egy analóg processzor tömb, ami felépítéséből és működéséből kifolyólag képfeldolgozásra alkalmas. A szilíciumon megvalósított áramkörök a szuper számítógépek teljesítményét nyújtják. A CNN paradigma egy érdekes alkalmazása egy robot optikai nyomkövetése. A mozgó robot útját vezérlő jelek sorozatával jelöljük ki. A jel vízszintes vetületét a vízszintes összefüggő komponens detektor (CCD) CNN áramkör segítségével határozzuk meg. Az első 16x16 felbontású chip-pel és egy SCARA robottal egy ilyen rendszert valósítottunk meg. A 32x32-es felbontású chipek jobb felbontása további robot funkciók megvalósítását teszi lehetővé.