Istnieją trzy podstawowe sposoby realizacji operacji wejścia-wyjścia (ang. input-output - IO):

Urządzenia wejścia-wyjścia są zwykle połączone z systemem poprzez moduły wejścia-wyjścia. Oczywiście każde urządzenie posiada unikatowy identyfikator i adres, który wystawia procesor chcąc odwołać się do urządzenia. Fakt, że procesor wystawia adres urządzenia zmusza moduły wejścia-wyjścia do jego identyfikacji.

Jeżeli procesor, pamięć główna i moduły wejścia-wyjścia używają wspólnej magistrali możliwe są dwa tryby adresowania [1]:
  1. Odwzorowany w pamięci - ta sama przestrzeń adresowa przeznaczona jest dla komórek pamięci i urządzeń I/O. Procesor wykonuje takie same instrukcje maszynowe niezależnie od tego, czy odwołuje się do pamięci, czy do urządzeń I/O. Tak więc, na magistrali potrzebna jest tylko jedna linia zapisu i jedna linia odczytu.

  2. Izolowane wejście-wyjście - przestrzeń adresowa jest podzielona - inną pulę adresów mają urządzenia I/O, a inną komórki pamięci. Tak więc, część linii magistrali wykorzystywana jest do odczytu/zapisu komórek pamięci, a część do adresowania modułów I/O, dzięki czemu możliwe jest wykorzystanie całej przestrzeni adresowej zarówno przez pamięć jak i urządzenia I/O.

Wadą programowanego wejścia-wyjścia był długi czas oczekiwania przez procesor na gotowość wybranego modułu I/O. Dlatego też wykorzystuje się wejście-wyjście sterowane przerwaniami, którego działanie można przedstawić następująco [1]:

  1. Procesor wydaje modułowi rozkaz wejścia-wyjścia, po czym przechodzi do wykonywania "ciekawszych" zadań (np. do obliczania całki Fouriera).
  2. Kiedy moduł I/O jest gotowy do wymiany danych z procesorem (czyli np. wczytał już dane z urządzenia peryferyjnego), wysyła żądanie obsługi przerwania i czeka aż procesor będzie gotowy do wymiany danych.
  3. Gdy następuje przerwanie od modułu I/O procesor zachowuje kontekst bieżącego programu (np. obliczania całki Fouriera) tj. min. zawartość licznika programu i rejestrów procesora i zgłasza chęć transmisji.
  4. Moduł I/O wystawia dane na magistralę, po czym jest gotowy do kolejnej operacji wejścia-wyjścia.
  5. Procesor transmituje dane, a następnie odnawia kontekst programu (np. całki Fouriera) i wznawia jego działanie.

Wejście-wyjście sterowane przerwaniami jest wydajniejsze niż programowane, jednakże i w tym rozwiązaniu traci się dużo czasu procesora, który musi nadzorować każde słowo transmisji pomiędzy pamięcią a modułami I/O.

Metoda bezpośredniego dostępu do pamięci DMA (ang. Direct Memory Access) stosowana jest zawsze tam, gdzie muszą być przenoszone duże ilości danych przy minimalnym obciążeniu procesora.

Metoda ta wymaga zainstalowania dodatkowego modułu DMA na magistrali systemowej. Moduł ten potrafi przejmować od procesora sterowanie systemem. Dochodzi to tego, gdy procesor chce odczytać/zapisać dane. Wydaje wtedy rozkaz modułowi DMA, wysyłając następujące informacje [1]:

Procesor powraca do wykonywania swoich zadań (np. programu użytkowego), zaś moduł DMA zajmuje się transmisją danych pomiędzy modułem I/O a pamięcią z pominięciem procesora. Gdy moduł DMA zakończy przesył danych, wysyła sygnał przerwania do procesora. Procesor jest więc używany tylko na początku i końcu transmisji.

Jak już wspomnieliśmy moduł DMA przejmuje działanie procesora w komunikacji pomiędzy pamięcią a modułami I/O. Dlatego też konieczny jest dostęp do magistrali. I tu pojawiają się dwie opcje:

  1. moduł DMA używa magistrali tylko wówczas, gdy nie potrzebuje jej procesor;
  2. moduł DMA wymusza czasowe zawieszenie operacji procesora;

Ta ostatnia metoda jest bardziej popularna i określa się ją mianem wykradania cyklu ze względu na fakt, że moduł DMA zajmuje cykl magistrali [1].

Pamiętajmy, że "wykradanie cyklu" nie jest równoważne przerwaniu - procesor zatrzymuje się na jeden cykl magistrali bez zachowywania kontekstu. Oczywiście "wykradanie cyklu" sprawia, że procesor pracuje nieco wolniej, ale dla dużych bloków danych metoda DMA jest daleko bardziej efektywna niż opisane wcześniej programowane wejście-wyjście i wejście-wyjście sterowane przerwaniami.

NASTĘPNA