background image

Działanie komputera

Wyższa Szkoła Biznesu
Architektura  i  organizacja 
komputerów
Wykład 3, sem. II Informatyka 
stosowana

background image

2

Sposoby opisu systemu 

komputerowego

Na  najwyższym  poziomie  organizacji  komputer  składa  się  z 

procesorapamię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ą.

background image

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.

background image

4

Program sprzętowy 

(ang. hardwired program)

Uwarunkowania 

leżące 

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.

background image

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 

logicznych 

ogólnym 

przeznaczeniu. Urządzenie będzie realizowało różne operacje 
na  danych,  niezależnie  od  doprowadzonych  sygnałów 
sterujących. 

oryginalnym 

przypadku 

urządzenia 

zaprojektowanego  do  wykonywania  konkretnego  zadania 
system przyjmuje dane i dostarcza wyniki.

background image

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

background image

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 

generuje 

sygnały 

sterujące. W celu odróżnienia tej 

nowej  metody  programowania 

sekwencja  kodów  lub  rozkazów 

nazywana 

jest 

oprogramowaniem 

(ang. 

software).

background image

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.

background image

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.

background image

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ą.

background image

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.

background image

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.

background image

13

Cykl rozkazu

Pobieranie 

rozkazu 

jest 

powszechną 

operacją, dotyczy każdego rozkazu i polega 

na 

odczytaniu 

rozkazu 

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.

background image

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.

background image

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.

background image

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) 

background image

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ń.

background image

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).

background image

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.

background image

20

Wykres stanów cyklu 

rozkazu

background image

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.

background image

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.

background image

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.

background image

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 

celu 

zasygnalizowania 

normalnego 

zakończenia 

operacji 

lub 

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.

background image

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.

background image

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.

background image

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.

background image

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.

background image

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.

background image

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ą *

background image

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.

background image

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.

background image

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ń. 

background image

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.

background image

Porównanie 

efektywnośc

i programu 

bez 

przerwań i z 

przerwania

mi

background image

36

Graf stanów cyklu rozkazu 

z przerwaniami

background image

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ę.

background image

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.

background image

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.

background image

40

Sekwencyjne 

przetwarzanie przerwań

background image

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 

niższym 

priorytecie (rys.).

background image

42

Przykład sekwencji 

czasowej wielu przerwań

background image

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.

background image

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 

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).

background image

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.

background image

46

Połączenia pamięci

Moduł 

pamięci 

składa

się 

zwykle 

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.

background image

47

Połączenia modułów 

wejścia/wyjścia

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.

background image

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.

background image

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.

background image

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.

background image

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).

background image

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 !!!


Document Outline