A processzor részvételével zajló I/O rendszer Flashcards
Fejlődése
kép60
• a processzor vezérelte a perifériákat
• az I/O modul vezérelte a perifériákat: wait for flag
• az I/O modul vezérli a perifériákat: megszakításos üzemmódban
• DMA -> közvetlen memória hozzáférés
• Csatorna: I/O célú utasításokat dolgoz fel, közben a központi operatív tárat használja
• I/O processzor: I/O célú utasításokat dolgoz fel, saját operatív tárral rendelkezik
kép61
I/O fajtái
CPU részvételével: programozott I/O
• Az I/O műveleteket a CPU által irányítottan történik
• Az I/O műveletekhez CPU utasítás tartozik
• Előnye: megvalósítás egyszerű
• Hátránya: terheli a CPU-t
CPU nélkül: plusz vezérlő egység kerül a rendszerbe, olyan képesség, hogy adatblokkokat tudjon vinni -> vezérlő tudjon:
• memória címeket generálni
• képes legyen a rendszerbuszon adatátvitelre
• képes legyen buszfoglalásra
• buszmester funkció
A programozott I/O, a különálló I/O címtér és az I/O port
Fogalma: minden egyes I/O művelethez a processzor egy-egy utasítást hajt végre.
kép62
• ugyanazon a címsínen keresztül haladnak a memóriacímek és az I/O címek is (rendszersín)
• létezik egy M/I/O vezérlővezeték, mely megmondja, hogy az adott időpillanatban memória- vagy I/O-cím van a címsínen
• mivel két különálló címtérről van szó, ugyanaz a cím szerepelhet memóriacímként és I/O címként is
• azon regisztereket, amelyeken keresztül a processzor a perifériákkal kommunikálhat, I/O portnak nevezzük
• az I/O port fizikailag a vezérlőkártyában helyezkedik el
I/O port regiszterei
• parancs (command) regiszter: ebbe írja bele a processzor a kívánságait
• adatregiszterek:
o bemeneti regiszter: ebből olvassa a processzor a perifériáról kapott adatokat
o kimeneti regiszter
• állapot (status) regiszter: innen olvassa a processzor a periféria üzeneteit
A mai gyakorlat: egy-egy közös regiszterben valósítják meg:
• parancs- és állapotregisztert
• a két adatregisztert (be- és kimeneti)
Napjaink további regiszterei az I/O porton belül:
• az eszköz jelenlétet jelző regiszter
• az eszköz tulajdonságait tartalmazó regiszter (plug&play)
• lehet több regiszterkészlet is
A különálló I/O címtér megvalósítása (AC-n keresztül szállítjuk az adatot, lassú)
kép63
• következmény:
o a memória műveletekre load/store utasítások
o az I/O műveletekre, pedig speciális I/O utasítások szolgálnak. pl.: Intel esetén:
In X: a processzor olvassa be az X című I/O port adatregiszterét az AC-ba
Out X: a processzor írja be az AC tartalmát az X című I/O port adatregiszterébe
• értékelés:
o előny: egyszerű, olcsó a megvalósítása
o hátrány: a processzor részt vesz a kommunikációban és az AC szűk keresztmetszetet jelent nagy tömegű I/O számára
Ezt az eljárást minden mai architektúra alkalmazza (pl.: billentyűzet, soros és párhuzamos port)
A memóriában leképezett I/O címtér
kép64
• jellemzője:
o a megosztás: a processzor memóriakezelő utasítással (load/store) éri el azt a közös memóriaterületet, amit a periféria is kezelhet
o a perifériának hozzá kell férni a rendszersínhez -> igen gyors átviteli sebesség
• értékelése:
o igen gyors (különálló címtérnél sokkal gyorsabb)
o továbbra is a processzornak kell utasításokat végrehajtani az I/O során
o Minden mai architektúrában megtalálható
• Példa: a PC környezetben képernyő (video) kezelés így műkdik
• Megvalósítás: kép65
Feltétlen átvitel
Feltétlen átvitel esetén a vevő mindig vételre kész állapotban van, és nem ellenőrizzük az átvitel sikerességét. A szinkronizálás hiánya az adó és a vevő között kihat az átvitel biztonságára is. Például LED-ek működtetésénél használjuk ezt az átvitelt.
Feltételes átvitel
• lekérdezéses vagy „wait for flag”
o az első lépés során a processzor beírja kívánságait az I/O port parancsregiszterébe
o a processzor kiolvassa az I/O vezérlő állapotregiszterének tartalmát
o amennyiben nem „ready”, akkor vissza a 2. pontba
o amennyiben „ready”, akkor a processzor kiolvassa az I/O vezérlő adatregiszterének tartalmát, és azt eljuttatja az AC-ba
Mivel a processzor és a periféria sebessége között igen nagy különbség lehet, és a 2. és 3. pont olvasási ciklusa akár több milliószor feleslegesen fut -> pazarolja a processzor időt
• megszakításos átvitel
o a processzor beírja kívánságát az I/O parancsregiszterébe és elkezd mást csinálni
o az I/O egység gondoskodik arról, hogy a kívánt perifériáról a kívánt adat beírásra kerüljön az I/O port adatregiszterébe, és ekkor az állapotregiszter „ready” bitjét beállítja, továbbá megszakításjelzést küld a processzor felé
o a processzor a következő utasítás-töréspontban észleli a megszakítás tényét és forrását:
kiolvassa a megszakító I/O port állapotregiszterének tartalmát
mivel ott a „ready” bit be van állítva, ennek megfelelő megszakítás feldolgozó programot indít el; ez kiolvassa az I/O port adatregiszterét és tartalmát átviszi az AC-ba
I/O csatorna
- Ez a DMA koncepció kiterjesztése a lassabb perifériák irányában
- A csatorna I/O utasításokat kér le a processzorral közös memóriából, majd azokat végrehajtja (nincs saját operatív tára)
- A csatorna által vezérelt műveleteket továbbra is a processzor kezdeményezi
- Ebben a koncepcióban is léteznek a perifériák irányítására hivatott I/O egységek vagy vezérlőkártyák, s a csatorna ezek munkáját hangolja össze -> a processzor helyébe lép ilyen tekintetben (magát az átvitelt annak kezdete után a csatorna végzi)
I/O fajtái
- szelektor csatorna
* multiplexer csatorna
Szelektor csatorna
• A gyorsabb perifériákat fogja össze és
• közülük egyidejűleg csupán egy lehet aktív
kép66
Multiplexer csatorna (byte/blokk multiplexer)
• lassabb perifériákat csatlakoztat
• közülük egyszerre több is aktív lehet
kép67
Két fajtája
- byte multiplexer: Az átvitelt a lehető legnagyobb sebesség biztosítását tűzi ki célul pl.: 3 db egység kommunikál egyszerre, melyek adatelemei: A1A2 A3A4 B1B2B3B4 C1C2C3C4 az eredő adatfolyam lehet pl.: A1B1C1A2C2A3B2C3…
- blokk multiplexer: A byte multiplexerhez hasonlóan blokkszinten végzi a munkáját