Protokół Centronics wymaga ważności danych tylko podczas aktywnego (niskiego) stanu sygnału nStrobe.
Sterownik interfejsu Centronics w IBM PC
-
Widoczny w przestrzeni adresowej jako trzy kolejne lokacje bajtowe
-
port danych - dane wysyłane na drukarkę
-
port stanu drukarki (wejście)
-
bit 7 - ~Busy
-
bit 6 - ~nAck
-
bit 5 - PError
-
bit 4 - Select
-
bit 3-~nFault
-
port sterowania (wyjście)
-
bit 3 - nSelectln
-
bit 2 - Init
-
bit 1 - nAutoFd
-
bit 0 - nStrobe
Sterownik interfejsu Centronics zajmuje trzy jednobajtowe lokacje w przestrzeni adresowej procesora. Poszczególne sygnały z komputera do drukarki są wyprowadzone z poszczególnych bitów rejestru sterowania, a sygnały z drukarki do komputera wchodzą na kolejne bity portu stanu drukarki.
Współpraca z urządzeniami zewnętrznymi
-
Odczyt lub zapis danych do komórki pamięci jest możliwy w każdej chwili
-
Przesłanie danych do lub z urządzenia zewnętrznego jest możliwy wtedy, gdy urządzenie jest gotowe, np.
-
wciśnięto klawisz na klawiaturze - można odczytać kod klawisza
-
drukarka przyjęła znak do wydrukowania i jest gotowa na przyjęcie następnego znaku
-
Transmisja danych wymaga synchronizacji - uwzględnienia stanu gotowości urządzenia
-
Rozwiązania
-
aktywne oczekiwanie (polling)
-
przerwania
-
bezpośredni dostęp do pamięci (DMA- Direct Memory Access)
W porównaniu ze współpracą procesora z pamięcią transmisja danych do i z urządzeń zewnętrznych jest o tyle bardziej skomplikowana, że nie może zachodzić w dowolnym momencie, lecz jedynie wtedy, kiedy urządzenie jest gotowe do przyjęcia danej lub do udostępnienia danej komputerowi.
Do synchronizacji z urządzeniem służą sygnały synchronizacji transmisji – w przypadku drukarki są to linie Busy, nAck i nStrobe.
Istnieją trzy metody synchronizacji, o zróżnicowanych kosztach implementacji i wydajności.
Obsługa portu drukarki z aktywnym oczekiwaniem
Metoda aktywnego oczekiwania nie wymaga żadnych nakładów sprzętowych. Cała synchronizacja transmisji jest osiągana na drodze programowej, poprzez testowania stanu sygnałów gotowości i ustawianie sygnałów sterujących transmisją danych.
Przedstawiona procedura programowej obsługi drukarki zapewnia transmisję pojedynczych bajtów do drukarki. Porty sterownika drukarki są oznaczone nazwami symbolicznymi (wielkie litery) i traktowane prze kompilator jak zmienne w programie. Szczegółowy sposób ich deklaracji zależy od kompilatora. Należy zauważyć, że na poziomie języka C muszą to być obiekty klasy volatile.
Aktywne oczekiwanie
-
Nie wymaga dodatkowych nakładów po stronie sprzętu
-
Angażuje czas procesora
-
program spędza czas w pętli oczekiwania na gotowość urządzenia nie robiąc w tym czasie nic innego
-
w systemie wieloprocesowym procesor marnuje w ten sposób czas, który mógłby być wykorzystany na pracę innego procesu
-
Rozwiązanie odpowiednie wyłącznie dla prostych systemów jednoprocesowych
-
proste sterowniki urządzeń, np. oświetlenia, ogrzewania
-
(dawniej) jednoprocesowe systemy operacyjne dla komputerów osobistych (np MS-DOS)
Obsługa z wykorzystaniem przerwań
-
Przejście urządzenia w stan gotowości powoduje zgłoszenie przerwania
-
system operacyjny odnotowuje gotowość urządzenia
-
Proces zgłasza żądanie transmisji systemowi operacyjnemu
-
jeśli urządzenie jest gotowe - dana jest przesyłana
-
jeśli urządzenie jest niegotowe - proces jest usypiany
-
Procedura obsługi przerwania powoduje wznowienie wykonania procesu
Obsługa z użyciem przerwań korzysta z mechanizmu sytuacji wyjątkowych – zdarzeń obsługiwanych przez system operacyjny.
Szczegółowa realizacja tego mechanizmu w systemie operacyjnym jest dużo bardziej złożona, niż przedstawia to opisany schemat.
-
Niewielki narzut sprzętowy
-
zgłaszanie przerwania
-
arbitraż przerwań
-
Znaczna komplikacja oprogramowania
-
skomplikowana obsługa przerwań w systemie operacyjnym, operacje na procesach
-
Możliwość wykonywania innych procesów w czasie niegotowości urządzenia
-
nie obciąża procesora sprawdzaniem gotowości
-
Dobre rozwiązanie dla niezbyt szybkich urządzeń
-
do kilku tysięcy przerwań na sekundę
-
Problem:
-
przy częstym zgłaszaniu przerwań system operacyjny spędza b. dużo czasu na ich obsłudze - nieodpowiednie dla szybkich urządzeń
Główną zaletą obsługi przy użyciu przerwań jest możliwość zajęcia się przez procesor wykonywaniem innych czynności podczas oczekiwania na gotowość urządzeń, co jest niezbędne w systemach wieloprocesowych.
Jeśli urządzenie transmituje dane szybko, a co za tym idzie – często zgłasza przerwania, może się okazać, że procesor traci dużo czasu na przełączanie kontekstu wynikające z obsługi przerwań oraz na czynności systemowe wynikające ze zmian stanu urządzeń, w tym m.in. zmiany stanu procesów oczekujących na te urządzenia. Obsługa z użyciem przerwań może się w tym przypadku stać bardziej czasochłonna, niż aktywne oczekiwanie.
Bezpośredni dostęp do pamięci - realizacja
-
Transmisja danych pomiędzy urządzeniem i pamięcią operacyjną bez użycia procesora
-
Sterownik bezpośredniego dostępu do pamięci
-
rejestr adresu bufora danych w pamięci
-
ładowany adresem początku bufora przed rozpoczęciem transmisji bloku
-
inkrementowany po każdym przesłaniu
-
licznik transmitowanych danych
-
ładowany długością bloku
-
dekrementowany po każdym przesłaniu
-
na czas transmisji dostęp procesora do szyny jest blokowany
-
gdyby procesor chciał się w tym czasie odwołać do pamięci - będzie czekał
-
Implementacja
-
(dawniej) w postaci modułu obsługującego wiele urządzeń
-
wbudowany w sterownik konkretnego urządzenia - "bus mastering"
Najbardziej efektywnym i najdroższym sposobem obsługi urządzeń zewnętrznych jest bezpośredni dostęp do pamięci. Wymaga on sprzętowej realizacji specjalnego modułu – sterownika bezpośredniego dostępu do pamięci.
Bezpośredni dostęp do pamięci - działanie
-
Procesor programuje sterownik bezpośredniego dostępu do pamięci
-
Sterownik transmituje blok danych pomiędzy pamięcią i urządzeniem
-
Po zakończeniu transmisji całego bloku sterownik generuje przerwanie
-
Procedura obsługi przerwania jest uruchamiana raz na blok danych, a nie przy każdej transmisji
-
Procesor nie jest angażowany do transmisji każdej danej
Przy korzystaniu z bezpośredniego dostępu do pamięci przerwanie jest zgłaszane do procesora po przetransmitowaniu całego bloku danych. Narzut czasowy na obsługę programową transmisji jest więc bardzo mały.
Bezpośredni dostęp do pamięci - charakterystyka
-
Wymaga istotnych nakładów sprzętowych
-
przy implementacji VLSI koszty pomijalnie małe
-
Odciążenie procesora
-
transmisja praktycznie bez udziału procesora
-
Powszechnie używany dla szybkich urządzeń
-
w PC - dyski, sterowniki sieci lokalnej, sterowniki dźwiękowe i graficzne, sterowniki USB
Przy współczesnych implementacjach sterowników urządzeń w postaci układów wielkoscalonych, koszty realizacji sterownika DMA są bardzo niskie. Jest to więc preferowana metoda współpracy z szybkimi urządzeniami zewnętrznymi, stosowana szeroko również w komputerach osobistych.