Działanie komputera
Wyższa Szkoła Biznesu
Studia zaoczne, sem. II
Architektura i organizacja
komputerów
Wykład 3
2
Sposoby opisu systemu
komputerowego
Na najwyższym poziomie organizacji komputer składa się z
procesora, pamięci i urządzeń wejścia-wyjścia, przy czym
każdy z tych modułów może występować pojedynczo lub w
większej ilości.
Zespoły te są połączone w sposób umożliwiający realizowanie
podstawowej funkcji komputera, jaką jest wykonywanie
programów.
Wobec tego - pozostając na tym najwyższym poziomie -
możemy opisać system komputerowy przez:
1.
przedstawienie zewnętrznego zachowania każdego modułu,
to znaczy danych i sygnałów kontrolnych, które wymienia on
z innymi modułami, oraz
2.
podanie struktury połączeń i sterowania wymaganego do
zarządzania tą strukturą.
3
Architektura von
Neumanna
Jak wykazaliśmy w poprzednim wykładzie, w praktycznie
wszystkich
współczesnych
projektach
komputerów
wykorzystuje się koncepcje opracowane przez Johna von
Neumanna. Projekty tego typu są określane jako
architektura von Neumanna; są w nich wykorzystywane
trzy kluczowe koncepcje:
dane i rozkazy są przechowywane w tej samej pamięci
umożliwiającej zapis i odczyt;
zawartość tej pamięci może być adresowana przez wskazanie
miejsca, bez względu na rodzaj zawartych tam danych;
wykonywanie rozkazów następuje w sposób szeregowy (z
wyjątkiem określonych, szczególnych przypadków), rozkaz po
rozkazie.
4
Program sprzętowy
(ang. hardwired program)
Uwarunkowania
leżące
u
podstaw
tych
koncepcji
przedyskutowaliśmy na poprzednim wykładzie, jednak warto
je tutaj podsumować:
Istnieje pewien niewielki zestaw podstawowych elementów
logicznych, które mogą być łączone na różne sposoby w celu
przechowywania danych binarnych oraz wykonywania
operacji arytmetycznych i logicznych na tych danych.
Jeśli istnieje określony rodzaj obliczenia, które ma być
przeprowadzone, to można zbudować specyficzną dla tego
obliczenia konfigurację elementów logicznych. Możemy
widzieć proces łączenia tych elementów w żądaną
konfigurację jako formę programowania.
Wynikający stąd „program” ma postać sprzętu i jest
nazywany programem sprzętowym.
5
System przystosowany do
potrzeb użytkownika
(rozwiązanie sprzętowe)
Jeśli całe programowanie byłoby realizowane w ten sposób,
sprzęt miałby niewielki zakres zastosowań.
Rozpatrzmy tę alternatywę. Załóżmy, że budujemy zbiór
funkcji
arytmetycznych
i
logicznych
o
ogólnym
przeznaczeniu. Urządzenie będzie realizowało różne operacje
na danych, niezależnie od doprowadzonych sygnałów
sterujących.
W
oryginalnym
przypadku
urządzenia
zaprojektowanego do wykonywania konkretnego zadania
system przyjmuje dane i dostarcza wyniki.
6
Urządzenie ogólnego
przeznaczenia
(rozwiązanie programowe)
Natomiast w przypadku urządzenia o ogólnym przeznaczeniu system przyjmuje dane i sygnały
sterujące, po czym dostarcza wyniki. Zamiast więc przebudowywać urządzenie dla każdego nowego
programu, programista musi tylko dostarczyć nowy zestaw sygnałów sterujących. Jak mogą być
dostarczane sygnały sterujące? Odpowiedź jest prosta, lecz zawiera subtelności:
Cały program jest szeregiem (sekwencją) kroków.
W każdym z tych kroków jest wykonywana na danych pewna operacja arytmetyczna lub logiczna.
Dla każdego kroku jest wymagany nowy zestaw sygnałów sterujących.
Spróbujmy teraz przypisać unikalny kod każdemu z możliwych zestawów sygnałów sterujących i
dodajmy do urządzenia o ogólnym przeznaczeniu segment, który przyjmuje kod i generuje sygnały
sterujące
7
Urządzenie ogólnego
przeznaczenia
(rozwiązanie programowe)
Programowanie
jest
teraz
znacznie
łatwiejsze.
Zamiast
zmieniać połączenia w sprzęcie,
musimy jedynie doprowadzić
nową sekwencję kodów. Każdy
kod jest w rezultacie rozkazem,
zaś
odpowiednia
część
urządzenia interpretuje każdy
rozkaz
i
generuje
sygnały
sterujące. W celu odróżnienia tej
nowej metody programowania
sekwencja kodów lub rozkazów
nazywana
jest
oprogramowaniem
(ang.
software).
8
Zespoły komputera
Na pokazanym na poprzednim slajdzie rysunku są pokazane
dwa główne składniki systemu:
– moduł interpretujący rozkazy oraz
– moduł realizujący funkcje arytmetyczne i logiczne.
Oba razem tworzą jednostkę centralną. Aby uzyskać
działający komputer, potrzeba jeszcze paru innych zespołów.
Do systemu muszą być wprowadzane dane i rozkazy. Do tego
celu potrzebujemy pewnego rodzaju modułu wejściowego.
Zawiera on podstawowe podzespoły, które przyjmują dane i
rozkazy w pewnej formie, po czym dokonują ich konwersji na
wewnętrzną postać sygnałów używaną w systemie. Potrzebne
jest też urządzenie prezentujące wyniki, będące modułem
wyjściowym. Razem są one określane jako moduły wejścia-
wyjścia.
9
Pamięć
Urządzenie wejściowe doprowadza dane i rozkazy sekwencyjnie.
Jednak program nie zawsze jest realizowany sekwencyjnie; może
zawierać skoki).
Podobnie operacje na danych mogą wymagać dostępu do więcej
niż jednego elementu w tym samym czasie, w z góry określonej
sekwencji.
Musi więc istnieć miejsce do czasowego przechowywania zarówno
rozkazów, jak i danych. Odpowiedni moduł nazywa się pamięcią
lub pamięcią główną w odróżnieniu od pamięci zewnętrznej lub
pamięci występujących w urządzeniach peryferyjnych.
Von Neumann zauważył, że ta sama pamięć może służyć zarówno
do przechowywania rozkazów, jak i danych. Dane są traktowane
jako dane, na których są przeprowadzane obliczenia. Natomiast
rozkazy są traktowane jako dane stanowiące kody do generowania
sygnałów sterujących.
10
Zespoły komputera –
struktura ogólna
Procesor wymienia dane z pamięcią. Do tego celu są
wykorzystywane dwa rejestry wewnętrzne (w stosunku
do procesora):
Rejestr adresowy pamięci (MAR), określający adres w
pamięci następnego zapisu lub odczytu, oraz rejestr
buforowy pamięci (MBR) zawierający dane, które mają
być zapisane w pamięci lub dane odczytane z pamięci.
Podobnie rejestr adresowy wejścia-wyjścia (I/OAR) określa
konkretne urządzenie wejścia-wyjścia. Rejestr buforowy
wejścia-wyjścia jest wykorzystywany do wymiany danych
między modułem wejścia-wyjścia a jednostką centralną.
11
Zespoły komputera –
struktura ogólna
Moduł pamięci składa się z zestawu miejsc
komórek, określonych przez sekwencyjnie
ponumerowane adresy. Każde z miejsc
zawiera liczbę binarną, która może być
zinterpretowana albo jako rozkaz, albo jako
dane.
Moduł wejścia-wyjścia przenosi dane z
urządzeń zewnętrznych do procesora i
pamięci oraz w kierunku przeciwnym.
Zawiera wewnętrzne bufory do czasowego
przechowywania danych do momentu, aż
będą one mogły być wysłane.
12
Przetwarzanie rozkazów
Podstawowym zadaniem komputera jest wykonywanie programu.
Program przeznaczony do wykonania składa się z zestawu
rozkazów przechowywanych w pamięci. Jednostka centralna
realizuje pracę, wykonując rozkazy wyszczególnione w programie.
Aby lepiej zrozumieć to zadanie oraz sposób współdziałania
zespołów komputera podczas realizacji programu, musimy bardziej
szczegółowo przeanalizować proces wykonywania programu.
Najprostsze jest rozpatrywanie przetwarzania rozkazów w dwóch
krokach: procesor odczytuje (pobiera) rozkaz z pamięci, a
następnie wykonuje go. Realizacja programu polega na
powtarzaniu procesu pobierania i wykonywania rozkazu.
Oczywiście, wykonywanie rozkazu może zawierać pewną liczbę
kroków.
13
Cykl rozkazu
Pobieranie
rozkazu
jest
powszechną
operacją, dotyczy każdego rozkazu i polega
na
odczytaniu
rozkazu
z
pamięci.
Natomiast wykonywanie rozkazu może
zawierać kilka operacji i zależy od natury
rozkazu.
Przetwarzanie wymagane dla pojedynczego
rozkazu jest nazywane cyklem rozkazu.
Dwa sygnalizowane wcześniej etapy są
określane jako cykl pobierania i cykl
wykonywania.
Wykonywanie
programu
jest
wstrzymywane
tylko
po
wyłączeniu
maszyny, po wystąpieniu pewnego rodzaju
nieodwracalnego błędu lub jeśli wystąpi w
programie rozkaz zatrzymania komputera.
14
Kolejność wykonywania
rozkazów
Na początku każdego cyklu rozkazu procesor pobiera rozkaz z
pamięci. W typowym procesorze do śledzenia, który rozkaz ma
być pobrany, służy rejestr zwany licznikiem programu (PC).
Jeśli procesor nie otrzyma innego polecenia, to powoduje
inkrementację (elementarny przyrost stanu) licznika PC po
każdym pobraniu rozkazu i wykonuje następny rozkaz w ciągu
(to znaczy rozkaz zlokalizowany w pamięci pod najbliższym
adresem o kolejnym wyższym numerze).
Rozpatrzmy na przykład komputer, w którym każdy rozkaz
zajmuje jedno 16-bitowe słowo w pamięci. Załóżmy, że licznik
programu jest ustawiony na pozycji 300. Procesor pobierze
rozkaz z pozycji 300. W następnych cyklach rozkazy będą
pobierane z miejsc 301, 302, 303 itd. Jak już wyjaśniliśmy,
sekwencja ta może być zmieniana.
15
Rejestr rozkazów
Pobrany
rozkaz
jest
następnie
ładowany do rejestru w procesorze
zwanego rejestrem rozkazu (IR).
Rozkaz ten ma formę kodu binarnego
określającego działanie, które ma
podjąć procesor. Procesor interpretuje
rozkaz i przeprowadza wymagane
działanie.
16
Działania wykonywane
przez procesor
Ogólnie działania te można podzielić na cztery
kategorie:
Procesor-pamięć. Dane mogą być przenoszone z
procesora do pamięci lub z pamięci do procesora.
Procesor-wejście-wyjście.
Dane
mogą
być
przenoszone z otoczenia lub do niego, przez
przenoszenie ich między procesorem a modułem
wejścia-wyjścia.
Przetwarzanie danych. Procesor może wykonywać
pewne operacje arytmetyczne lub logiczne na danych.
Sterowanie. Rozkaz może określać, że sekwencja
wykonywania ma być zmieniona (np. rozkaz skoku)
17
Działania wykonywane
przez procesor
Na przykład: procesor może pobrać rozkaz z
pozycji 149, z którego wynika, że następny
rozkaz ma być pobrany z pozycji 182.
Procesor
zapamięta
ten
fakt
przez
ustawienie licznika programu na 182. Dzięki
temu w następnym cyklu pobrania rozkaz
zostanie pobrany z pozycji 182, a nie 150.
• Oczywiście wykonywanie rozkazów może
zawierać kombinacje tych działań.
18
Stany cyklu rozkazu
Dla danego cyklu rozkazu pewne stany mogą być zerowe (mogą
nie występować), inne zaś mogą występować częściej niż raz.
Obliczanie
adresu
rozkazu
(iac).
Określenie
adresu
następnego rozkazu przeznaczonego do wykonania. Zwykle
polega to na dodaniu ustalonej liczby do adresu poprzedniego
rozkazu. Jeśli na przykład każdy rozkaz zawiera 16 bitów, a
organizacja pamięci przewiduje słowa 16-bitowe, to dodaje się 1
do poprzedniego adresu. Jeśli w pamięci przewidziano
bezpośrednie adresowanie 8-bitowych bajtów, to dodaje się 2 do
poprzedniego adresu.
Pobieranie rozkazu (if). Wczytanie rozkazu z pamięci do
procesora.
Dekodowanie operacji rozkazu (iod). Analizowanie rozkazu w
celu określenia rodzaju operacji, która ma być przeprowadzona,
oraz argumentu (argumentów).
19
Stany cyklu rozkazu
Obliczanie adresu argumentu (oac). Określanie
adresu argumentu, jeśli operacja odnosi się do
argumentu znajdującego się w pamięci lub
dostępnego przez wejście-wyjście.
Pobieranie argumentu (of). Pobranie argumentu
z pamięci lub z wejścia-wyjścia.
Operacja na danych (do). Przeprowadzenie
operacji wskazanej w rozkazie.
Przechowanie argumentu (os). Zapisanie wyniku
w pamięci lub skierowanie go do wejścia-wyjścia.
20
Wykres stanów cyklu
rozkazu
21
Wykres stanów cyklu
rozkazu
Stany w górnej części rys. określają wymianę
między procesorem a pamięcią lub modułem
wejścia-wyjścia.
Stany z dolnej części rysunku zawierają tylko
wewnętrzne operacje procesora.
Stan oac występuje dwukrotnie, ponieważ rozkaz
może zawierać odczyt, zapis lub jedno i drugie.
Jednak operacja wykonywana w tym stanie jest w
zasadzie taka sama w obu przypadkach, potrzebny
jest zatem tylko identyfikator jednostanowy.
22
Wykres stanów cyklu
rozkazu
Zauważmy także, że wykres umożliwia wprowadzanie
wielu argumentów i uzyskiwanie wielu wyników,
ponieważ wymagają tego pewne rozkazy w niektórych
maszynach. Na przykład w PDP-11 wynikiem rozkazu
ADD A,B jest następująca sekwencja stanów: iac, if,
iod, oac, of, oac, of, do, oac, os.
Wreszcie, w niektórych maszynach pojedynczy rozkaz
może
określać
operację
na
wektorze
(jednowymiarowej tablicy) liczb lub na szeregu
(jednowymiarowej tablicy) znaków. Jak widać na rys.
wymaga to powtarzalnych operacji pobrania i (lub)
przechowywania.
23
Przerwania
Praktycznie
we
wszystkich
komputerach
przewidziano mechanizm, za pomocą którego
inne moduły (wejście-wyjście, pamięć) mogą
przerwać normalne przetwarzanie danych
przez procesor.
Przerwania były pierwotnie przewidywane jako
sposób
poprawiania
efektywności
przetwarzania. Na przykład wiele urządzeń
zewnętrznych jest o wiele wolniejszych od
procesora.
24
Klasy przerwań
Program
owe
Generowane
przez
warunek
będący
wynikiem wykonywania rozkazu, taki jak
przepełnienie arytmetyczne, dzielenie przez
zero, próba wykonania niedozwolonego
rozkazu oraz odniesienie do przestrzeni
pamięci zarezerwowanej dla użytkownika.
Zegarow
e
Generowane
przez
wewnętrzny
zegar
procesora; umożliwia wykonanie pewnych
funkcji przez system operacyjny.
Wejścia-
wyjścia
Generowane przez sterownik wejścia-wyjścia
w
celu
zasygnalizowania
normalnego
zakończenia
operacji
lub
w
celu
zasygnalizowania różnych warunków błędu.
Uszkodz
enie
sprzętu
Generowane przez uszkodzenie, takie jak
defekt zasilania lub błąd parzystości
pamięci.
25
Działanie bez
wykorzystania przerwań
Załóżmy, że procesor przenosi dane do drukarki,
stosując schemat cyklu rozkazu przedstawiony
poprzednio na rys.
Po
każdej
operacji
zapisu
procesor
musi
pozostawać bezczynny, aż drukarka za nim nadąży.
Długość tej pauzy może wynosić setki lub nawet
tysiące cykli rozkazu, które nie angażują pamięci.
Jest to oczywiście bardzo rozrzutne wykorzystanie
procesora. Za pomocą przerwań procesor może być
zaangażowany w wykonywanie innych rozkazów,
podczas gdy ma miejsce operacja wejścia-wyjścia.
26
Przerwania
Na rysunku widać ten właśnie stan w
odniesieniu
do
zastosowania
przedstawionego na poprzednim slajdzie.
Program użytkowy przewiduje szereg
wezwań „zapisz” (write) na przemian z
przetwarzaniem.
Segmenty kodów 1, 2 i 3 odnoszą się do
sekwencji rozkazów, które nie angażują
wejścia-wyjścia.
Wezwania „zapisz” są informacją dla
programu wejścia-wyjścia, że system jest
dostępny, więc może on przeprowadzić
aktualną operację wejścia-wyjścia.
27
Program wejścia-wyjścia
składa się z trzech sekcji
Sekwencji rozkazów, oznaczonej na rysunku jako 4, mającej
na celu przygotowanie do aktualnej operacji wejścia-wyjścia.
Może ona zawierać kopiowanie danych do specjalnego
bufora oraz przygotowywanie parametrów dla rozkazu.
Aktualnego rozkazu wejścia-wyjścia. Jeśli nie wykorzystuje
się przerwań, to wydanie tego rozkazu powoduje, że program
musi czekać, aż urządzenie wejścia-wyjścia zrealizuje
wymaganą funkcję. Oczekiwanie to może polegać na
prostym, powtarzającym się testowaniu w celu stwierdzenia,
czy operacja wejścia-wyjścia jest zakończona.
Sekwencji rozkazów oznaczonej na rysunku jako 5, mającej
na celu zamknięcie operacji. Może ona zawierać przekazanie
znacznika wskazującego sukces lub niepowodzenie operacji.
28
Gdy brak przerwań
program wejścia – wyjścia
długo czeka
Ponieważ operacja wejścia-wyjścia
może zająć stosunkowo długi czas,
program
wejścia-wyjścia
jest
zawieszany do czasu zakończenia
operacji.
W wyniku tego program użytkowy jest
zatrzymywany na wezwaniu „zapisz”
przez dość długi czas.
29
Zatem skorzystajmy z
przerwań
Przy wykorzystaniu przerwań procesor może być
angażowany w wykonywanie innych rozkazów w
czasie, gdy jest realizowana operacja wejścia-
wyjścia.
Rozważmy przebieg sterowania przedstawiony na
rys. Jak poprzednio, program użytkowy osiąga
punkt, w którym wysyła wywołanie systemowe w
postaci wezwania „zapisz”. Program wejścia-
wyjścia, który jest wywoływany w tym momencie,
składa się tylko z kodu przygotowania i aktualnego
rozkazu wejścia-wyjścia.
Po wykonaniu tych kilku instrukcji sterowanie
wraca do programu użytkowego.
Tymczasem urządzenie zewnętrzne zajmuje się
pobieraniem danych z pamięci komputera i
drukowaniem ich. Ta operacja wejścia-wyjścia jest
przeprowadzana współbieżnie w stosunku do
rozkazów zawartych w programie użytkowym.
30
Jak to działa ?
Gdy urządzenie zewnętrzne staje się gotowe do
obsługi, to znaczy gdy jest gotowe do przyjmowania
następnych danych z procesora, moduł wejścia-wyjścia
związany z tym urządzeniem wysyła sygnał żądania
przerwania do procesora.
Procesor odpowiada, zawieszając działanie bieżącego
programu i wykonując skok do programu obsługującego
to urządzenie zewnętrzne, nazywanego programem
obsługi przerwania (ang. interrupt handler).
Po obsłużeniu urządzenia następuje powrót do
programu bieżącego. Punkty, w których następują takie
przerwania, oznaczono gwiazdkami na rys. za pomocą *
31
Dla programu użytkownika
nic się nie zmiena
Z punktu widzenia programu użytkowego przerwanie jest
właśnie przerwaniem normalnej sekwencji pracy.
Gdy przetwarzanie przerwania jest zakończone, następuje
powrót do normalnej sekwencji (rys.).
Program użytkowy nie musi więc zawierać jakiegoś specjalnego
kodu w związku z przerwaniami; procesor i system operacyjny
są odpowiedzialne za zawieszenie programu użytkowego, a
następnie powodują powrót do tego samego punktu.
32
Cykl rozkazu z
przerwaniami
Aby
dostosować
się
do
przerwań, do cyklu rozkazu
jest
dodawany
cykl
przerwania
w sposób
pokazany na rys. Podczas
cyklu przerwania procesor
sprawdza, czy nie nastąpiły
jakieś
przerwania,
czego
świadectwem
byłaby
obecność sygnału przerwania.
Jeśli
przerwania
nie
są
realizowane,
procesor
przechodzi do cyklu pobrania i
pobiera następny rozkaz z
bieżącego programu.
33
Gdy nastąpi przerwanie...
Jeśli natomiast następuje przerwanie, procesor
wykonuje następujące czynności:
1. Zawiesza wykonywanie bieżącego programu i
zachowuje jego kontekst. Polega to na zapisaniu
adresu następnego rozkazu przewidywanego do
wykonania (tj. bieżącej zawartości licznika programu),
a także innych danych związanych z bieżącym
działaniem procesora.
2. Ustawia licznik programu na początkowy adres
programu obsługi przerwań.
Procesor przechodzi następnie do cyklu pobrania i
pobiera pierwszy rozkaz z programu obsługi przerwań.
34
Program obsługi
przerwania
Program ten jest na ogół częścią systemu
operacyjnego.
Zwykle program obsługi określa naturę przerwania,
po czym podejmuje niezbędne działania. W
wykorzystywanym przez nas przykładzie program
określa, który moduł wejścia-wyjścia wygenerował
przerwanie, po czym może przeskoczyć do
programu, który przekaże więcej danych temu
modułowi.
Po zakończeniu programu obsługi przerwania
procesor może wznowić wykonywanie programu
użytkowego w punkcie jego przerwania.
Porównanie
efektywnośc
i programu
bez
przerwań i z
przerwania
mi
36
Graf stanów cyklu rozkazu
z przerwaniami
37
Przerwania wielokrotne
W dotychczasowej dyskusji rozważaliśmy występowanie
tylko pojedynczego przerwania.
Załóżmy jednak, że mogą wystąpić przerwania wielokrotne.
Program może, na przykład, otrzymywać dane z łącza
komunikacyjnego a także sygnały dotyczące drukowania.
Drukarka będzie generowała przerwanie każdorazowo po
zakończeniu
operacji
drukowania.
Sterownik
łącza
komunikacyjnego wygeneruje przerwanie każdorazowo po
przybyciu jednostki danych. Jednostka ta może być
pojedynczym znakiem lub blokiem, zależnie od przyjętych
reguł komunikacji. W każdym przypadku możliwe jest, że
przerwanie wywołane przez ten sterownik nastąpi w czasie,
w którym jest przetwarzane przerwanie spowodowane przez
drukarkę.
38
Rozwiązania problemu
przerwań wielokrotnych
Problem wielokrotnych przerwań może być rozwiązany na dwa
sposoby. Pierwszy to uniemożliwienie przerwań, jeśli
jakiekolwiek przerwanie jest właśnie przetwarzane.
Przerwanie zablokowane (ang. disabled interrupt) oznacza
po prostu, że procesor zignoruje sygnał żądania przerwania.
Jeśli żądanie przerwania nastąpi w tym właśnie czasie, na ogół
pozostaje ono zawieszone i zostanie wykryte przez procesor,
jeśli uzyska on zezwolenie na przerwanie.
Jeżeli jest więc wykonywany program użytkowy i następuje
przerwanie,
to
natychmiast
uniemożliwiane
są
inne
przerwania. Kiedy program obsługi przerwań kończy działanie,
przerwania stają się dozwolone jeszcze przed wznowieniem
programu użytkowego, a procesor sprawdza, czy wystąpiły
dodatkowe przerwania.
39
Sekwencyjne
przetwarzanie przerwań
Rozwiązanie to jest przyjemne i proste, jeśli
przerwania są realizowane w porządku ściśle
sekwencyjnym (rys. na następnym slajdzie).
Ujemną stroną powyższego podejścia jest to, że nie
bierze się pod uwagę względnej ważności przerwań
oraz zadań, które krytycznie zależą od czasu.
Jeśli na przykład przybywają dane z łącza
komunikacyjnego, to może być konieczne ich szybkie
przyjęcie w celu umożliwienia doprowadzenia
następnych danych. Jeśli pierwsza porcja danych nie
byłaby przetworzona przed przybyciem następnej,
dane mogłyby zostać utracone.
40
Sekwencyjne
przetwarzanie przerwań
41
Przetwarzanie
zagnieżdżonych przerwań
Drugie podejście polega na określeniu priorytetów
przerwań. Pozwala się na to, że przerwanie o
wyższym
priorytecie
powoduje
przerwanie
programu
obsługi
przerwania
o
niższym
priorytecie (rys.).
42
Przykład sekwencji
czasowej wielu przerwań
43
Działanie urządzeń
wejścia/wyjścia
Moduł wejścia-wyjścia może wymieniać dane
bezpośrednio z procesorem.
Podobnie jak procesor może inicjować odczyt
lub zapis w pamięci, określając adres
specyficznej lokacji.
Procesor
może
też
odczytywać
dane
pochodzące z modułu wejścia-wyjścia lub je
w nim zapisywać. W tym ostatnim przypadku
procesor identyfikuje urządzenie, którym
steruje określony moduł wejścia-wyjścia.
44
DMA
W pewnych przypadkach pożądane jest umożliwienie
bezpośredniej wymiany danych między wejściem-
wyjściem a pamięcią. W takim przypadku procesor
przekazuje
modułowi
wejścia-wyjścia
prawo
do
odczytywania lub zapisywania rozkazów w pamięci,
dzięki czemu przesyłanie danych między wejściem-
wyjściem
a
pamięcią
może
następować
bez
angażowania procesora.
Podczas takiego przesyłania moduł wejścia-wyjścia
odczytuje lub zapisuje rozkazy w pamięci, uwalniając
procesor od odpowiedzialności za tę wymianę.
Operacja taka jest znana jako bezpośredni dostęp do
pamięci (ang. direct memory access - DMA).
45
Struktury połączeń
Komputer jest zestawem zespołów lub modułów
trzech podstawowych typów (procesor, pamięć,
wejście-wyjście),
które
komunikują
się
wzajemnie. W rezultacie komputer jest siecią
obejmującą podstawowe moduły. Muszą więc
istnieć ścieżki łączące moduły.
Zbiór ścieżek łączących moduły jest nazywany
strukturą połączeń. Budowa tej struktury
zależy od wymiany, która musi zachodzić
między modułami.
46
Połączenia pamięci
Moduł
pamięci
składa
się
zwykle
z
N
słów
o jednakowej długości.
Każde
słowo
ma
przypisany
jednoznaczny
adres numeryczny (0, 1, ..., N -1).
Słowo może być odczytane z pamięci lub do niej
zapisane. Rodzaj operacji jest wskazywany przez
sygnały sterujące „czytaj” lub „zapisz”. Lokacja,
której dotyczy operacja, jest wskazywana przez
adres.
47
Połączenia modułów
wejścia/wyjścia
Z
zewnętrznego
(w
stosunku
do
systemu
komputerowego
punktu
widzenia,
moduł
wejścia
-wyjścia
jest
funkcjonalnie
podobny
do
pamięci.
Istnieją
dwie operacje: zapisu i odczytu.
Ponadto moduł wejścia-wyjścia może sterować więcej niż
jednym urządzeniem zewnętrznym. Możemy określić każdy z
interfejsów z urządzeniem zewnętrznym jako port i nadać
każdemu z nich jednoznaczny adres (np. 0, 1,..., M- 1).
Istnieją poza tym zewnętrzne ścieżki danych służące do
wprowadzania i wyprowadzania danych z urządzenia
zewnętrznego. Wreszcie moduł wejścia-wyjścia może
wysyłać sygnały przerwania do procesora.
48
Połączenia procesora
Procesor wczytuje rozkazy i dane,
wysyła dane po przetworzeniu
i posługuje się sygnałami sterującymi
do sterowania całą pracą systemu.
Otrzymuje
też
sygnały
przerwania.
49
Dane podlegające
wymianie w systemie
komputerowym
Powyższa lista określa dane podlegające
wymianie. Struktura połączeń musi umożliwiać
przesyłanie danych:
Z pamięci do procesora. Procesor odczytuje z
pamięci rozkazy lub jednostki danych.
Z procesora do pamięci. Procesor zapisuje
jednostki danych w pamięci.
Z urządzeń wejścia-wyjścia do procesora.
Procesor odczytuje dane z urządzenia wejścia-
wyjścia za pośrednictwem modułu wejścia-
wyjścia.
50
Dane podlegające
wymianie w systemie
komputerowym
Powyższa lista określa dane podlegające
wymianie. Struktura połączeń musi umożliwiać
przesyłanie danych:
Z pamięci do procesora. Procesor odczytuje z
pamięci rozkazy lub jednostki danych.
Z procesora do pamięci. Procesor zapisuje
jednostki danych w pamięci.
Z urządzeń wejścia-wyjścia do procesora.
Procesor odczytuje dane z urządzenia wejścia-
wyjścia za pośrednictwem modułu wejścia-
wyjścia.
51
Dane wymieniane w
systemie komputerowym
Z procesora do wejścia-wyjścia. Procesor
wysyła dane do urządzenia wejścia-wyjścia.
• Z urządzeń wejścia-wyjścia do pamięci lub
na odwrót. W tych dwóch przypadkach
zezwala się modułowi wejścia-wyjścia na
bezpośrednią wymianę danych z pamięcią,
bez
pośrednictwa
procesora,
przy
wykorzystaniu bezpośredniego dostępu do
pamięci (DMA).
52
Magistrale
W przeszłości wypróbowano wiele
struktur
połączeń.
Zdecydowanie
najpowszechniejsze
są
struktury
magistralowe i wielomagistralowe.
Ale o magistralach będzie już na
następnym wykładzie !!!