• Nie Znaleziono Wyników

Wyjaśnienie. Architekturę von Neumanna można scharakteryzować krótko:

1.1. H ARDWARE – SPRZĘTOWA CZĘŚĆ KOMPUTERA

1.1.0.03. Wyjaśnienie. Architekturę von Neumanna można scharakteryzować krótko:

1. Wspólna pamięć do przechowywania zarówno rozkazów jak i danych.

2. Pamięć jednowymiarowa, złożona z kolejno ponumerowanych komórek o jednakowej wielkości.

3. Brak jawnego rozróżniania rozkazów i danych.

4. Brak jawnej specyfikacji typów danych.

5. Praca sekwencyjna - przed rozpoczęciem wykonywania kolejnego rozkazu musi zostać zakończone wykonywanie rozkazu chronologicznie poprzedniego.

6. Każdy rozkaz określa jednoznacznie adres następnego.

Rysunek 1.1.0.00. Schemat ideowy komputera o architekturze von Neumanna.

Podane warunki pozwalają przełączać system komputerowy z wykonania jednego zadania (programu) na inne bez fizycznej ingerencji w strukturę systemu, a tym samym gwarantują jego uniwersalność. System komputerowy von Neumanna nie posiada oddzielnych pamięci do przechowywania danych i instrukcji. Instrukcje jak i dane są zakodowane w postaci liczb. Bez analizy programu trudno jest określić czy dany obszar pamięci zawiera dane czy instrukcje.

Wykonywany program może się sam modyfikować traktując obszar instrukcji, jako dane, a po przetworzeniu tych instrukcji – danych – zacząć je wykonywać.6

1.1.0.04. Wyjaśnienie. Architektura von Neumana przewidywała, że komputer wyposażony jest w następujące rejestry:

6 Na wzór organizacji komputera von Neumana, opracowano abstrakcyjną Maszynę RAM (Random Access Memory) – równoważny obliczeniowo maszynie Turinga. Jest to komputer z nieograniczoną pamięcią RAM (Sheperdson &

Sturgis). Maszyna RAM realizuje programy w języku zbliżonym do popularnych imperatywnych języków programowania. Składa się z licznika rozkazów oraz pamięci, która jest tablicą rozmiaru ℵ0.

Przykładowa lista instrukcji Maszyny RAM

Kod instrukcji Kod adresów Oznaczenie Semantyka Uwagi

0 n Z(n) z[n]:=0 Licznik rozkazówzwiększ o 1

1 n S(n) z[n] := z[n]+1 Licznik rozkazówzwiększ o 1

2 π(m, n) T(m,n) z[n] := z[m] Licznik rozkazówzwiększ o 1

3 β(m, n, q) I(m, n, q) if z[m] = z[n]

then goto q Licznik rozkazów zwiększ o 1, gdy z[m]= z[n], w przeciwnym przypadku umieść w nim q

1) MBR – rejestr buforowy pamięci (Memory Buffer Register) 2) MAR – rejestr adresowy pamięci (Memory Address Register)

3) IR – rejestr rozkazów czyli wykonywanej instrukcji (Instruction Register) 4) PC – licznik programu zwany również licznikiem adresów (Program Counter)

5) AC – akumulator - rejestr wyników operacji arytmetycznych oraz logicznych (Accumulator Counter)

6) MQ – rejestr mnożenia i dzielenia (Multiplier-Quote Register).

Uwaga: w dalszym ciągu, będziemy używać tych nazw rejestrów wprowadzonych przez von Neumanna, ponieważ rejestry te, obok innych, występują we współczesnych komputerach.

Pierwszy działający komputer, zbudowany w oparciu o architekturę von Neumanna powstał jednak, nie w USA, ale w Wielkiej Brytanii, był nim EDSAC, z blisko dwa lata później dopiero uruchomiony został komputer EDVAC w USA.

Rysunek 1.1.0.10. Widok ogólny stojaków lampowych komputera EDSAC.

1.1.0.11. Wyjaśnienie. EDSAC (akronim od Electronic Delay Storage Automatic Calculator) – komputer oparty na architekturze von Neumanna, skonstruowany przez zespół Maurice'a Wilkesa z University of Cambridge Mathematical Laboratory, na którym pierwszy program uruchomiono 6 maja 1949 r. EDSAC był pierwszym komputerem wykorzystywanym w praktyce – wykonywano na nim badania uniwersyteckie. Długość instrukcji EDSAC wynosiła 17 bitów, czyli tzw. słowo krótkie, zaś długość słowa arytmetycznego wynosiła 34 bity, czyli tzw. słowo długie. 17 bitowa instrukcja dzieliła się na trzy grupy bitów: (1) kod operacji 5 bitów, (2) wskaźnik adresu argumentu (słowo krótkie to wartość 0 albo słowo długie wartość 1);

(3) kod adresu o długości 11 bitów (adres słowa długiego jest zawsze liczbą parzystą) lub argumentem bezpośrednim. Wykorzystywano w nim pamięć na rtęciowych liniach opóźniających (pamięć dynamiczną) - o pojemności 1024 słowa 17 bitowe (czyli 512 słowa 34 bitowe) i elektronowe lampy próżniowe dla układów logicznych. Jak widać, jeden z bitów adresowych nie był wykorzystany dla adresacji pamięci, ponieważ wystarczyło do celów adresacji użycie 10 bitów7. W 1953 r. David Wheeler, wykorzystał ten wolny bit 17 bitowej instrukcji zaprojektował rejestr indeksowy, jako rozszerzenie oryginalnej konstrukcji EDSAC (instrukcje, których część adresowa miała być powiększona o zawartość rejestru indeksowego, miała na tym bicie wartość 1, pozostałe instrukcje, których adres nie był sumowany z zawartością rejestru indeksowego, miała na tym bicie wartość 0). Była to jedna z pierwszych i bardzo istotna innowacja dotycząca architektury komputerów.

Komórki pamięci są numerowane kolejnymi liczbami naturalnymi i mogą zawierać, tak jak licznik rozkazów, dowolną liczbę naturalną. W czasie obliczeń prawie wszystkie komórki pamięci zawierają liczbę 0. Oznaczenie z[x] oznacza zawartość komórki o numerze x. Uwaga: Instrukcje typu 0, 1, 2 nazywamy arytmetycznymi, a typu 3 warunkowymi.

7The Preparation of Programs for an Electronic Digital Computer by Maurice Wilkes, David Wheeler, and Stanley Gill;

(original 1951); reprinted with new introduction by Martin Campbell-Kelly; 198 pp.; illus; biblio; bios; index; ISBN 0-262-23118-2. Available through Charles Babbage Institute

1.1.0.21. Wyjaśnienie. EDVAC - Electronic Discrete Variable Automatic Computer. Maszyna zbudowana według pomysłu von Neumanna w kwietniu 1952 w Moore School of Engineering przy Uniwersytecie Pensylwanii na potrzeby armii USA. Stworzyli ją John Mauchly i J. Presper Eckert. Zainstalowana w Ballistic Research Laboratories w Aberdeen (stan Maryland) w roku 1949 kosztem ok. 500.000 dolarów (przy budżecie pięciokrotnie mniejszym). EDVAC zajmowała ponad 111 metrów kwadratowych powierzchni, zawierała ok. 6000 lamp elektronowych oraz 12000 diod. Częstotliwość zegara 996,75 kHz. Pamięć operacyjna ultradźwiękowa z rtęciową rurą opóźniającą na 1000 słów; wejście/wyjście z zastosowaniem taśmy perforowanej i kart dziurkowanych systemu IBM; do kontroli sterowania używano zwykłego oscyloskopu; w roku 1953 dodano do maszyny pamięć zewnętrzną w postaci bębna magnetycznego.

Zapotrzebowanie na moc 56 kilowatów. EDVAC osiągnął użyteczność obliczeniową już w roku 1951, pracował do grudnia roku 1962.

Piśmiennictwo: Wikopedia. W.2.4., W.2.19., Wilkes M. W.4.1.

1.1.1.KOMPUTERY WEKTOROWY I SUPER-SKALARNY

Współczesny komputer składa się z części tzw. sprzętowej (hardware), oraz oprogramowania systemowego, zwanego częścią miękką (software) – patrz rys. 1.1.1.00. W wyniku rozwoju architektury von Neumanna, powstało kilka typowych architektur współczesnych komputerów.

1.1.1.01. Wyjaśnienie. Przez komputer super-skalarny rozumiemy komputer o najpowszechniej dziś występującej architekturze, będący daleko posuniętym rozwinięciem architektury von Neumanna, w którym nie zawsze jest spełniony warunek sekwencyjnego działania, oraz komputer taki wyposażony jest siedem poniżej wymienionych grup funkcjonalności:

1. Układ obsługi przerwań z licznikami czasu (tzw. czasomierz) i stosem 2. Adresacja z użyciem rejestrów indeksacji

3. System wielopoziomowy pamięci, w tym pamięci masowe i funkcjonalność pamięci wirtualnej

4. Magistrale i układ DMA

5. Sterowanie mikroprogramowe 6. Arytmetyka FPU

7. Potok i instrukcja „do-nothing”.

Kompilatory oraz interpretatory programów, np. języka C

Systemy i programy aplikacyjne wykonywane

przez VM Maszyna Wirtualna - VM System operacyjny wraz z interfejsem sieciowym

np. Unix/Linux; MS Windows; Apple OS.

Lista rozkazów określająca architekturę komputera

System pamięci Procesor Magistrale Układy We/Wy Układy cyfrowe realizacji modułów funkcjonalnych

Obwody scalone

Układy kombinacyjne, układy sekwencyjne oraz specjalizowane układy pamięci

Bramki i układy pamięciow

Rysunek 1.1.1.00. Podział architektury komputera super-skalarnego na części:

softwarową (miękką), i sprzętową (twardą).

1.1.1.02. Wyjaśnienie. Komputer super-skalarny składa się z modułów, współpracujących pomiędzy sobą za pośrednictwem magistrali. Są to następujące moduły:

1. Procesor, obecnie na ogół wielordzeniowy8;

2. Pamięć RAM (Random Access Memory), zwana również pamięcią operacyjną;

3. Modułów interfejsowych (np. SCSI, USB)9, umożliwiających podłączenie urządzeń zewnętrznych oraz sieci komputerowej;

4. Modułu komunikacji z operatorem (np. monitora i klawiatury).

1.1.1.03. Wyjaśnienie. Procesor składa się z następujących modułów funkcjonalnych, współpracujących pomiędzy sobą za pośrednictwem magistrali. Są to następujące moduły:

1. Jednostki arytmetyczno-logicznej ALU (na ogół 64 albo 32 bitowej), realizującej operacje arytmetyczne binarne stałoprzecinkowe oraz dziesiętne;

2. Zespołu rejestrów;

3. Pamięć operacyjna;

4. Pamięci podręcznej (obecnie z reguły trzypoziomowej)- zwanej również pamięcią asocjacyjną, bufora pomiędzy pamięcią RAM a rejestrami. Pamięć skojarzeniowa, na każdym z trzech poziomów, dzieli się na część przeznaczoną do przechowywania fragmentów programów i na część przeznaczoną do przechowywania danych,

5. Jednostka arytmetyki zmiennopozycyjnej FPU;

6. Wewnętrznej magistrali systemowej – umożliwiającej z jednej strony przesyłanie instrukcji i danych wewnątrz procesora, jak również;

7. Układ sterowania – zarówno procesorem, jak również całym komputerem super-skalarnym.

1.1.1.11. Wyjaśnienie. Przetwarzanie potokowe (patrz podrozdział 1.1.8). Podstawową techniką pozwalającą przyspieszyć przetwarzanie jest zastosowanie potoku wykonawczego.

Podział wykonania pojedynczej instrukcji na etapy pozwala przyspieszyć taktowania procesora oraz zwiększyć efektywność wykorzystania logiki procesora.

1.1.1.12. Wyjaśnienie. Pamięć podręczna procesora (CPU cache) - jest pamięcią typu SRAM (pamięć RAM statyczna) o krótkim czasie dostępu. Zlokalizowana jest często bezpośrednio w jądrze procesora. Zastosowanie wielopoziomowej hierarchii pamięci podręcznej pozwala, korzystając z zasady lokalności przestrzennej i czasowej na zapewnienie złudzenia posiadania szybkiej i pojemnej pamięci głównej, a więc zmniejsza średni czas dostępu do pamięci głównej.

Współcześnie stosuje się 2 i 3-poziomowe pamięci podręczne. Najważniejszymi parametrami funkcjonalnymi pamięci podręcznych są: pojemność i czas dostępu. Pod względem budowy można wyróżnić 3 podstawowe typy organizacji pamięci: - pamięć całkowicie skojarzeniowa (fully associative) - pamięć z odwzorowaniem bezpośrednim (direct-mapped) - pamięć wielodrożna (set-associative).

1.1.1.13. Wyjaśnienie. Cache czyli pamięć podręczna. Zastosowanie złożonej hierarchii pamięci podręcznych procesora (cache) pozwala na zmniejszenie średniego czasu dostępu do pamięci i znaczne przyspieszenie przetwarzania.

8Rdzeń (core)– używane obecnie określenie na jeden zestaw rejestrów i układów wykonania operacji arytmetyczno-logicznych składających się łącznie na odpowiednik jednostkowego procesora. Procesor wielordzeniowy to processor zdolny do wykonania tzw. potoku operacji arytmetyczno-logicznych.

9Interfejs (interface) – układ pośredniczący – dopaowujący sygnały, czyli umożliwiające współpracę dwóch urządzeń np. procesora i drukarki.

1.1.1.15. Wyjaśnienie. L-1 cache. Zlokalizowana we wnętrzu procesora pamięć podręczna pierwszego poziomu przyspiesza dostęp do bloków pamięci wyższego poziomu, który stanowi zależnie od konstrukcji RAM. Z uwagi na ograniczenia rozmiarów i mocy procesora L-1 zawsze ma stosunkowo mała pojemność. Umieszczona jest blisko głównego jądra procesora i umożliwia szybką komunikację z procesorem. Typowe pamięci L-1 współczesnych procesorów są 2-drożne, posiadają rozdzieloną pamięć danych i kodu, a długość linii wynosi 64 bajty.

Rysunek 1.1.1.10. Poglądowy - uproszczony schemat procesora

1.1.1.16. Wyjaśnienie. L-2 cache. Pamięć drugiego poziomu, o rozmiarze od 64KB do 12MB, jest 2, 4 lub 8-drożna, o długości linii od 64 do 128 B, i jest wykorzystywana jako bufor pomiędzy stosunkowo wolną pamięcią RAM a jądrem procesora i pamięcią cache L1. Obecność pamięci drugiego poziomu powoduje duży wzrost wydajności w wielu aplikacjach - dzieje się tak, ponieważ dane poddawane obróbce muszą być pobierane z pamięci RAM, która ma opóźnienia rzędu kilkudziesięciu-kilkuset nanosekund. Dzisiejsze procesory są wyposażone w złożone układy przewidywania, jakie dane będą potrzebne - dane te są pobierane z wyprzedzeniem do pamięci cache, która ma opóźnienia rzędu kilku do kilkunastu nanosekund, co znacznie skraca czas oczekiwania procesora na dane do obliczeń.

1.1.1.17. Wyjaśnienie. L-3 cache. Pamięć podręczna procesora trzeciego poziomu jest wykorzystywana, kiedy pamięć L-2 jest niewystarczająca aby pomieścić potrzebne dane.

Najczęściej spotykana jest w procesorach dedykowanych do zastosowań serwerowych.

Obecność cache trzeciego poziomu pozwala na znaczącą poprawę wydajności w stosunku do procesorów o konstrukcji pamięci cache dwupoziomowej w wielu aplikacjach i programach. Jest

"ratunkiem" przed sięgnięciem po dane do powolnej pamięci RAM, aczkolwiek gdy w pamięci L-3 brakuje miejsca komputer szuka "pomocy" w powolnej pamięci RAM. W systemach z wieloma procesorami lub rdzeniami, pamięć cache trzeciego poziomu najczęściej jest współdzielona przez wszystkie rdzenie i ma od kilku do kilkunastu megabajtów (co jest niewielką ilością w porównaniu do pamięci RAM której rozmiar w nowszych komputerach oscyluje w granicach kilku - kilkunastu gigabajtów). Jej wysoka wydajność wynika z droższych i lepszych komponentów, oraz bliższego fizycznego ulokowania przy procesorze.

1.1.1.21. Wyjaśnienie. Prognoza rozgałęzień. Instrukcje skoków powodują wystąpienie konfliktów sterowania co owocuje wstrzymaniem przetwarzania i spowolnieniem wykonania programu. Sposobem na złagodzenie tego efektu jest zastosowanie prognozowania rozgałęzień umożliwiającej spekulacyjne wykonanie kodu za instrukcją skoku. Niestety, w przypadku błędnej prognozy, koszt opróżnienia potoku i wznowienia przetwarzania w odpowiednim punkcie może być znaczny (kilka do kilkunastu cykli procesora).

1.1.1.22. Wyjaśnienie. Potok super-skalarny. Wykorzystanie możliwości równoległego wykonania kilku instrukcji prowadzi do koncepcji potoku super-skalarnego, w którym zdublowane lub zwielokrotnione są jednostki wykonawcze. Niekolejne wykonanie instrukcji (Out-of-Order Execution) pozwala w jeszcze większym stopniu wykorzystać możliwość równoległego przetwarzania instrukcji w danym bloku podstawowym (patrz podrozdział 1.1.8).

1.1.1.23. Wyjaśnienie. Wielowątkowość i zastosowanie wielu procesorów. Budowa procesorów wielordzeniowych (Chip Multiprocessing - CMP) oraz wielowątkowych pozwala na zwiększenie ogólnej wydajności systemu poprzez umożliwienie jednoczesnego przetwarzania więcej niż jednego programu lub wątku.

Wymienionych w wyjaśnieniu 1.1.1.01 - siedem modułów funkcjonalnych komputera, umożliwia wieloprogramowe działanie komputera super-skalarnego wraz z podziałem czasu, co łącznie umożliwia zarówno przetwarzanie konwersacyjne użytkownik – komputer, jak również równoległe do konwersacji przetwarzanie wsadowe, w tle prowadzonej konwersacji.

Przykładami komputerów super-skalarnych, są wszelkie dostępne na rynku laptopy, notebooki i tablety. Dalej postaramy się przybliżyć rozumienie wymienionych wyżej funkcjonalności.

Rysunek 1.1.1.18. Poglądowy schemat architektury procesora Intel Core 2.

Przez cały okres od zbudowania pierwszych komputerów, obserwujemy gwałtowny wzrost mocy obliczeniowej komputerów.

1.1.1.31. Wyjaśnienie. „Prawo Moore'a – prawo empiryczne, wynikające z obserwacji, mówiące że ekonomicznie optymalna liczba tranzystorów w układzie scalonym zwiększa się w kolejnych latach zgodnie z trendem wykładniczym (podwaja się w niemal równych odcinkach czasu).

Autorstwo tego prawa przypisuje się Gordonowi Moore'owi, jednemu z założycieli firmy Intel, który w 1965 r. zaobserwował podwajanie się liczby tranzystorów, co ok. 12 miesięcy10. Liczba ta była następnie korygowana i obecnie przyjmuje się, że liczba tranzystorów w mikroprocesorach od wielu lat podwaja się, co ok. 24 miesiące. Na zasadzie analogii, prawo Moore'a stosuje się też do wielu innych parametrów sprzętu komputerowego, np. pojemności dysków twardych czy wielkości pamięci operacyjnej.”…

„Wg dokumentów International Technology Roadmap for Semi-conductors, uwzględniających potencjalne problemy z rozwojem i miniaturyzacją, należy oczekiwać kolejnych procesorów dostępnych (na rynku) w latach, 32nm – 2009, 22nm – 2012, 16nm – 2018, 11nm – 2022, a dalszy rozwój w ramach elektroniki stoi pod znakiem zapytania. Ostatnie 10 lat będą miały mniejszą dynamikę wzrostu niż wskazuje na to Prawo Moore'a. Wielu producentów zadeklarowało jednak, że będą w stanie wyprodukować procesory o ścieżkach ~16nm już w roku 2014.”

Piśmiennictwo: Wikipedia W.2.3., W.2.14., Stallings W. S.11.1., Wojtuszkiewicz K. W.6.1.

1.1.2.STOS I UKŁAD OBSŁUGI PRZERWAŃ

1.1.2.01. Historia. Stos został wymyślony i opracowany (patrz rys. 1.1.2.00.) przez niemieckiego naukowca informatyka Friedricha L. Baura w 1955 roku, a opatentowany w 1957. Za ten wynalazek Friedrich L. Bauer dostał w 1988 roku od IEEE nagrodę Computer Society Pioneer Award.

1.1.2.02. Podstawowe operacje. W powyższym opisie pojawiły się pewne operacje, jakie można wykonywać na stosie. Oto ich formalny zapis:

PUSH (obiekt) – czyli odłożenie obiektu na stos;

POP() – ściągnięcie obiektu ze stosu i zwrócenie jego wartości;

ISEMPTY() - sprawdzenie czy na stosie znajdują się już jakieś obiekty.

Rysunek 1.1.2.00. Schemat ideowy stosu.

Stos jest naturalnym zapisem wyrażeń arytmetycznych i logicznych stosowanym przy obliczaniu wyrażeń zapisanych za pomocą tzw. odwrotnej notacji polskiej (RPN). Należy podkreślić, że notacja polska (PN) została wprowadzona przez wielkiego polskiego logika Jana Łukasiewicza,

10 Gordon E. Moore: Cramming more components onto integrated circuits, Electronics Magazine 38 (8), 19 kwietnia 1965.

między innymi twórcy trójwartościowego rachunku zdań, co obszernie będziemy omawiać w podrozdziale 2.4.1.

1.1.2.10. Wyjaśnienie. Jak widać z powyższego, stos jest uporządkowanym zestawem elementów, z których tylko do jednego można mieć dostęp w określonej chwili. Punkt dostępu nazywany jest wierzchołkiem stosu. Liczba elementów w stosie, czyli długość stosu, jest zmienna. Elementy mogą być dodawane lub odejmowane tylko do wierzchołka stosu. Stos działa według zasady „Last In – First Out (w skrócie LIFO)”, czyli ostatnio wpisany do stosu element, jest pierwszym do odczytania ze stosu. Operacja PUSH dodaje nowy element do stosu, zaś operacja POP usuwa element z wierzchołka stosu.

1.1.2.11. Wyjaśnienie. Operacje jednoargumentowe (np. logiczne NOT), są wykonywane na elemencie znajdującym się na wierzchołku stosu i zmieniają element wierzchołkowy stosu na wynik. Operacje dwuargumentowe wykonywane są na dwu wierzchołkowych elementach stosu i powodują usunięcie dwu kolejnych elementów z wierzchołka stosu wpisując na wierzchołku stosu wynik operacji.

1.1.2.12. Wyjaśnienie. Dla poprawnej implementacji funkcjonalności stosu koniecznym jest wyposażenie procesora w trzy dodatkowe rejestry (patrz rys. 1.1.2.20.) zawierające:

Wskaźnik stosu, który zawiera adres wierzchołka stosu. Jeśli element jest dodawany lub usuwany ze stosu, wskaźnik jest odpowiednio inkrementowany lub dekrementowany, aby w dalszym ciągu pokazywał wierzchołek stosu;

Podstawa stosu, która zawiera adres najniższej lokacji w zarezerwowanym bloku pamięci.

Jeśli dokonywana jest próba operacji POP, gdy stos jest pusty, zgłaszany jest błąd;

Granica stosu, która zawiera adres drugiego końca zarezerwowanego bloku pamięci. Jeśli dokonywana jest próba operacji PUSH, gdy stos jest pełny, zgłaszany jest błąd.

Rysunek 1.1.2.20. Schemat ideowy stosu zastosowanego w komputerach.

Kolejne innowacje lat pięćdziesiątych, ubiegłego stulecia, dotyczyły zwiększenia współbieżności pracy komponentów komputera - takich jak jednostka arytmetyczno – logiczna oraz wejście i wyjście. W wyniku opracowano dwie metody:

Odpytywania stanu urządzeń wejścia i wyjścia przez programową jednostkę sterowania;

System zgłaszania i obsługi zgłoszonych przerwań przez programową jednostkę sterowania wraz ze wspomaganiem tej obsługi odpowiednim programem.

Pamięć RAM

Mechanizm przerwań został wprowadzony w latach pięćdziesiątych XX wieku, dla poprawienia efektywności przetwarzania. Szybkość procesora była już w pierwszych komputerach wielokrotnie wyższa niż szybkość urządzeń wejścia wyjścia. Przykładowo komputer bez mechanizmu przerwań, po zainicjowania operacji drukowania, musiał czekać na zakończenie operacji drukowania, żeby rozpocząć wykonywanie następnej instrukcji. W wyniku procesor komputera głównie oczekiwał na wykonanie instrukcji wejścia/wyjścia. Przy wykorzystaniu przerwań, procesor jedynie zainicjuje operację wejścia lub wyjścia, po czym przechodzi do wykonania następnej instrukcji programu. W tej sytuacji, procesor nie może zainicjować wykonywania następnej operacji wejścia lub wyjścia, zanim nie otrzyma zwrotnej informacji o zakończeniu wcześniej instrukcji wejścia lub wyjścia.

Outline

Powiązane dokumenty