Wykład jest przygotowany dla IV semestru kierunku Elektronika i Telekomunikacja. Studia I stopnia Dr inż. Małgorzata Langer Architektura komputerów Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie Innowacyjna dydaktyka bez ograniczeń zintegrowany rozwój Politechniki Łódzkiej zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnych Zadanie nr 30 Dostosowanie kierunku Elektronika i Telekomunikacja do potrzeb rynku pracy i gospodarki opartej na wiedzy 90-924 Łódź, ul. Żeromskiego 116, tel. 042 631 28 83 www.kapitalludzki.p.lodz.pl
URZĄDZENIA PERYFERYJNE sposób obsługi Tryb programowalnych I/O jest nie tylko wolny (procesor wciąż CZEKA), ale nie zawsze możliwy do realizacji (np. gdy urządzenie I/O musi zgłosić ALARM i wymaga natychmiastowej obsługi a dzieje się to w sposób całkowicie nieprzewidywalny) PRZEPŁYW INFORMACJI pomiędzy dowolnym I/O a procesorem składa się z następujących kroków: - wybór urządzenia i sprawdzenie jego gotowości - inicjacja transferu (jeżeli urządzenie jest gotowe) - transfer informacji - zakończenie Kroki te mogą być kontrolowane tylko przez procesor, tylko przez urządzenie, lub i przez procesor i urządzenie 2
W zależności od tego, gdzie jest kontrola Istnieją trzy tryby I/O: 1. Programowany I/O 2. Tryb przerwań I/O 3. Bezpośredni dostęp do pamięci (DMA Direct memory access) 3
Ogólny model I/O 4
Ogólny model I/O Komunikacja ASC peryferia przebiega po liniach DIL (wejście) oraz DOL (wyjście). W praktyce jest to jedna, dwukierunkowa magistrala danych Przerzutnik DATA w jednostce sterującej koordynuje działania I/O Jeżeli eli (prawie zawsze) jest więcej urządzeń I/O, każde z nich musi mieć swój numer lub adres Wykorzystuje się tu wolny operand z instrukcji RWD i WWD (pole 8 bitów) a nawet 11 bitów (bo w tych instrukcjach wolne są również pole indeksowe i pośrednie) 4 bity pozwalają na 16 urządzeń wejścia i 16 wyjścia 5
Ogólna struktura I/O Adres urządzenia niesiony jest przez magistralę danych i dekodowany przez każde urządzenie. Tylko jedno urządzenie ma zgodny adres i uczestniczy w dalszej operacji Magistrala danych jest dwukierunkowa, Magistrala sterująca niesie sygnały sterujące od CPU oraz stanu generowane przez interfejsy urządzenia (DEVICE BUSY, ERROR, ) 6
Adresy Struktura taka, jak na poprzednim slajdzie wyraźnie oddziela obszar adresów pamięci od obszaru adresów I/O (oddzielne magistrale) tryb IZOLOWANEGO I/O Może być wspólna szyna dla pamięci i urządzeń I/O i wtedy adresy I/O są częścią obszaru adresów pamięci Pamięć CPU Urządz.1 Urządz.N Wspólna magistrala systemowa I/O z mapowaną pamięcią (memory-mapped I/O) 7
Adresy uwaga Pojedyncza (fizycznie) magistrala nie zawsze świadczy o mapowaniu pamięci dla I/O. Można multipleksować adresy do I/O i pamięci na tej samej magistrali poprzez odpowiednie sygnały sterujące (logicznie odpowiada to dwóm magistralom) 8
Interfejs urządzenia Interfejs urządzenia I/O jest unikalny dla danego urządzenia. Zależy od sposobu prezentacji danych, nośnika, konstrukcji, itd. Każdy interfejs zawiera sterownik otrzymujący sygnały sterujące (rozkazy) od CPU i raportujący CPU stan urządzenia Sygnały stanu, to np.: DEVICE BUSY, DATA READY, itp. W interfejsie znajduje się dekoder adresu wybierającego urządzenie Najczęściej jest przetwornik dekodujący odczytane dane i umieszczający je w buforze (skąd zostaną pobrane jako input data) lub pobierający umieszczone w buforze dane (output data), i dekodujący je do formatu zapisu na zewnętrznym medium (np. ASCII do drukarki, 0/1 na nośnik magnetyczny) 9
Interfejs zasadnicze funkcje Główne funkcje interfejsu urządzenia I/O to: - taktowanie (timing) (urządzenie I/O posiada inną prędkość działania niż CPU) - sterowanie - konwersja danych - wykrywanie błędów - korekta błędów 10
Sekwencja operacji - READ Nie ma znaczenia które urządzenie (również CPU) rządzi przy sterowaniu magistralą. Gdy komunikują się dwa urządzenia, zawsze jedno z nich jest MASTER a drugie SLAVE Przesył danych po magistrali może być synchroniczny lub asynchroniczny; wobec CPU urządzenia peryferyjne działają najczęściej asynchronicznie MASTER aktywuje sygnał READ i umieszcza ADRES urządzenia SLAVE (z którego chce odczytać dane). Wszystkie urządzenia podłączone do magistrali dekodują adres, tylko jedno w krótkim czasie (jakim?) ma umieścić dane na magistrali. Aby powiadomić MASTER, że dane już są do pobrania, SLAVE musi przesłać ACK (acknowledge) potwierdzenie o gotowości. Po stwierdzeniu sygnału ACK, MASTER bramkuje dane do swoich wewnętrznych rejestrów 11
Sekwencja operacji - WRITE MASTER aktywuje sygnał WRITE i umieszcza ADRES urządzenia SLAVE (na którym chce zapisać dane) na liniach adresowych magistrali. Podczas gdy urządzenia dekodują adres, MASTER umieszcza dane na magistrali danych. Po pewnym czasie wybrany SLAVE bramkuje dane do swojego bufora i odpowiada sygnałem ACK (data accepted) Po wykryciu sygnału ACK, MASTER usuwa dane i sterujący sygnał WRITE z magistrali Sekwencja wydarzeń opisujących transfer nazywana jest protokołem lub handshake 12
Transfer synchroniczny Transfer asynchroniczny 13
Sterowanie tryb programowanego I/O Procesor 1. Wybiera urządzenie i sprawdza stan urządzenia 3. Jeżeli urządzenie nie jest gotowe powrót do kroku 1; jeżeli gotowe, do 4 4. Daje sygnał do urządzenia o zainicjowaniu przesyłu danych. W przypadku OUTPUT bramkuje dane na linii danych i ustawia linię sterującą wyjście 6. Przy INPUT akceptuje dane; przy OUTPUT usuwa dane z linii danych 7. Odłącza urządzenie (usuwa adres z linii adresowych) Sterownik urządzenia 2. Sygnalizuje procesorowi, że jest lub nie jest gotowe 5. Przy OUTPUT sygnalizuje procesorowi, że dane zostały przyjęte; przy INPUT gromadzi dane i sygnalizuje procesorowi, że są gotowe na liniach danych W danym momencie urządzenie może być albo w trybie OUTPUT, albo INPUT 14
Przerwania (Interrupt mode I/O) Dla poprawy efektywności (aby CPU nie czekał bezczynnie), część czynności kontrolnych przenoszone jest do urządzenia. Procesor wysyła do sterownika urządzenia rozkaz OUTPUT lub INPUT i powraca do przetwarzania następnych instrukcji Sterownik urządzenia odpowiednio zbiera dane z lub przesyła do urządzenia i PRZERYWA procesorowi w jego przetwarzaniu CPU OBSŁUGUJE PRZERWANIE, tzn. odłącza urządzenie jeżeli transfer jest zakończony Również sama inicjalizacja transferu może rozpocząć się od urządzenia przerwaniem; wtedy CPU podczas handshaking określa, czy jest to INPUT, czy OUTPUT 15
Linie danych Przesył danych może odbywać się RÓWNOLEGLE (trzeba zadbać o równoczesnym pojawianiu się bitów na wszystkich liniach skoszenie (skewing) spowodowany jest różnymi parametrami elektrycznymi w linii, np. niektóre bity muszą przejść przez więcej bramek niż inne, lub SZEREGOWO (problemy z synchronizacją ryzyko wadliwego rozróżnienia oddzielnych bitów) Połączenie może być typu SIMPLEX (jednokierunkowe) przesył zawsze w jedną stronę; (FULL) DUPLEX (dwukierunkowe) możliwe równoczesne przesyłanie danych w obu kierunkach; HALF DUPLEX - możliwe przesyłanie danych w obu kierunkach, ale w danym momencie tylko w jedną stronę 16
Dane Konwersja: na każdym medium I/O dane mogą być kodowane w różny, nawet unikalny, sposób i niezależnie od sposobu kodowania ich przez CPU. Dodatkowo mogą być przesyłane szeregowo po bicie, quasi równolegle (szeregowo po bajcie), równolegle (szeregowo po słowie) ZAWSZE WIĘC WYMAGANE SĄ DWA POZIOMY KONWERSJI (wykonywanej przez interfejsy): 1 z urządzenia peryferyjnego do łącza danych 2 z łącza danych do formatu CPU Detekcja i korekta błędów: niektóre urządzenia peryferyjne mogą być szczególnie narażone na zakłócenia; to samo dotyczy linii transmisyjnych, łączników, itd. Urządzenia i linie pracują w zmiennych warunkach pogodowych, przy zakłóceniach elektromagnetycznych, itp. 17
Bit parzystości lub nieparzystości Do każdych ośmiu przesyłanych bitów składających się na bajt, dodawany jest dziewiąty bit, taki, aby liczba jedynek w dziewięciu bitach była zawsze parzysta (even) lub nieparzysta (odd) Odbiornik danych oblicza bit parzystości z bajtu i porównuje go z dziewiątym bitem, jeżeli wykryty jest błąd, dane mogą zostać ponownie przesłane 0 1 0 0 1 1 1 0 P Bity danych Bit parzystości 18
Obsługa przerwań Przy wystąpieniu przerwania procesor musi przerwać wykonywaną czynność przetwarzania, przejść do trybu obsługi przerwania a potem (jeżeli jest to możliwe), powrócić do punktu, z którego wyszedł i wznowić przetwarzanie Najczęstsze warunki do wystąpienia przerwania: - czujnik wykrywa zanik (wahnięcie) zasilania - nadmiar lub niedomiar w arytmetyce - nielegalne dane (lub ich format), nielegalny kod instrukcji - błędy w transferze lub magazynowaniu danych - przerwania generowane programowo (zgodnie z zamiarami twórcy programu) - standardowe zakończenie przesyłu danych 19
Warunki do wznowienia przetwarzania po przerwaniu Musi zostać zapisany adres instrukcji, która miała być właśnie wykonywana Muszą zostać zapisane zawartości akumulatora i innych rejestrów Zazwyczaj procesor powinien dokończyć instrukcję właśnie wykonywaną (bo nie ma do niej punktu powrotu), zanim przejdzie do procedury obsługi przerwania (wykona skok do wcześniej załadowanego programu) Po wejściu w procedurę obsługi przerwań wystąpienie następnych przerwań czasowo musi być zakazane (przynajmniej do pełnego zapisania stanu procesora, wszystkich rejestrów, wraz z licznikiem programu i słowem stanu programu), a potem ponownie, przy wychodzeniu z procedury, przy odtwarzaniu stanu 20
Mechanizm obsługi przerwań Przy obsłudze przerwania niezbędne są następujące instrukcje: SPS (zapisz PSR w pamięci) LPS (załaduj zapisany PSR z pamięci) ENABLE (pozwalaj na występowanie przerwań) DISABLE (nie pozwalaj na przerwania) 21
Wystąpienie równoczesnych przerwań Kolejne przerwania mogą pojawiać się przy obsłudze przerwań i w zależności od priorytetu, są obsługiwane natychmiast, lub czekają Przy obsłudze zagnieżdżonych przerwań lepiej sprawdza się zapisywanie wszystkich stanów na stosie, inaczej mogą być utracone stany zapisane poprzednio w pamięci dedykowanej W przypadku przerwania I/O konieczne może być ustalenie, które urządzenie było nadawcą sygnału odbywa się to poprzez POLLING (kolejne wybieranie urządzeń peryferyjnych i czytanie ich stanu); w praktyce nie zajmuje się tym CPU, tylko dodatkowy dekoder, który w jednym takcie zegara podłączy właściwe urządzenie do CPU; innym sposobem jest odpowiedź ACK na wspólną magistralę (CPU potwierdza otrzymanie przerwania), na który to sygnał tylko jedno urządzenie odpowie przesłaniem swojego adresu - WEKTOREM (pod warunkiem, że tylko jedno chce być obsłużone ) 22
Porównanie struktury obsługi przerwań Struktura Czas odpowiedzi Złożoność Pojedyncze pierwszeństwo Polling (odpytywanie) NAJWOLNIEJSZA NAJPROSTSZA Wektorowa szybka średnia Wiele priorytetów (multipriority) Polling (odpytywanie) wolna niska Wektorowa NAJSZYBSZA NAJBARDZIEJ ZŁOŻONA Rejestr MASK używany jest do dynamicznego ustalania listy priorytetowych (lub dozwolonych) przerwań 23
DMA Direct Memory Access Tryby obsługi I/O i programowany, i przerwań, przesyłają dane za pośrednictwem rejestru (akumulatora) CPU; przy dużych ilościach przesyłanych danych spowoduje to przeciążenie procesora Tryb DMA (bezpośredniego dostępu do pamięci) zatrudnia CPU tylko na początku (inicjalizuje przesył poprzez polecenie urządzeniu DMA przesłania danych) i na końcu (przerwanie z informacją, że transfer został zakończony). W rzeczywistości sterownik DMA to procesor o ograniczonych możliwościach; musi posiadać przynajmniej - WCR rejestr licznika słów - AR rejestr adresu - bufor danych Podczas przesyłu danych w trybie DMA, CPU traci priorytet przy korzystaniu z pamięci i nie ma do niej dostępu (cycle stealing) 24
Architektura magistrali Arbitraż jeżeli do wspólnej magistrali podłączone jest więcej niż jedno urządzenie, które może pełnić funkcję MASTER (np. wiele procesorów, urządzenia DMA, itp.) trzeba zastosować technikę arbitralnego wyboru kontrolującego urządzenia Najbardziej typowe jest używanie sygnałów: - bus busy - bus request - bus grant I nadawanie dostępu zgodnie z listą priorytetów Sterownik (arbiter) przydziela czas magistrali dla wybranych poszczególnych układów, które zgłaszają zapotrzebowanie (bus request) 25
Arbitraż Przydzielony czas może być koordynowany synchronicznie (tzw. szczelina lub asynchronicznie (po zakończeniu połączenia urządzenie zwalnia linię) Może być arbitraż scentralizowany (jedno urządzenie dla wszystkich magistral w systemie), lub rozproszony (dla poszczególnych magistral) Zawsze musi być master (procesor, moduł, urządzenie), który inicjuje połączenie i podporządkowany mu slave 26
Kolejki przykładowe algorytmy obsługi FIFO First In First Out Element, który jako PIERWSZY nadszedł, PIERWSZY wychodzi LIFO Last In First Out Element, który jako OSTATNI nadszedł, PIERWSZY wychodzi PRIORITY Poszczególne elementy ustawiane są w kolejce dla uprzywilejowanych Fair Queuing Obsługa sprawiedliwie pierwszego elementu z każdej kolejki WFQ Weighted Fair Queuing Obsługa kilku kolejek o zróżnicowanych priorytetach RED Random Early Detection Gdy kolejka zapełnia się, losowo podejmowane są akcje, które utrzymają drożność (np. odrzucanie nadchodzących elementów, kierowanie ich do innych kolejek itd.) 27
Porównanie FIFO Fair Queuing 28
KONIEC CZĘŚCI SZÓSTEJ Dr inż. Małgorzata Langer Architektura komputerów Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie Innowacyjna dydaktyka bez ograniczeń zintegrowany rozwój Politechniki Łódzkiej zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnych Zadanie nr 30 Dostosowanie kierunku Elektronika i Telekomunikacja do potrzeb rynku pracy i gospodarki opartej na wiedzy 90-924 Łódź, ul. Żeromskiego 116, tel. 042 631 28 83 www.kapitalludzki.p.lodz.pl