DMA (ang. Direct Memory Access - bezpośredni dostęp do pamięci) - technika, w której inne układy (np. kontroler dysku twardego, karta dźwiękowa, itd.) mogą korzystać z pamięci operacyjnej RAM lub (czasami) portów we-wy pomijając przy tym procesor główny - CPU. Wymaga to współpracy ze strony procesora, który musi zaprogramować kontroler DMA do wykonania odpowiedniego transferu, a następnie na czas przesyłania danych zwolnić magistralę systemową (przejść w stan wysokiej impedancji). Sam transfer jest już zadaniem wyłącznie kontrolera DMA. Realizacja cykli DMA może przez urządzenie być zrzucona na specjalny układ (np. w komputerach PC) lub być realizowana samodzielnie przez urządzenie.
DMA ma za zadanie odciążyć procesor główny od samego przesyłania danych z miejsca na miejsce (np. z urządzenia wejściowego do pamięci), procesor może w tym czasie zająć się 'produktywnym' działaniem, wykonując kod programu pobrany uprzednio z pamięci RAM do pamięci cache operujący na danych w tejże pamięci zgromadzonych. Specjalizowane układy wspomagające DMA (np. te spotykane w PC) potrafią też kopiować obszary pamięci dużo szybciej niż uczyniłby to programowo procesor główny.
Istnieje specjalna procedura DMA, "Scatter-Gather" (dosł.: rozrzuć-zbierz), pozwalająca przenosić dane do wielu obszarów pamięci w pojedynczym transferze. Pod względem skutków jest to równoważne połączeniu łańcuchowemu kilku transferów, jednak jest wyraźnie szybsze.
PROCESOR stanowi główny element komputera, jest odpowiedzialny za przetwarzanie informacji.
Układy sterujące odpowiadają za dostarczenie arytmometrowi danych do obliczeń z pamięci operacyjnej, oraz przekazywanie wyników obliczeń z powrotem do pamięci oraz właściwą kolejność przetwarzania
W arytmometrze odbywają się wszystkie obliczenia realizowane przez komputer.
W rejestrach procesora przechowuje się adresy wybranych miejsc pamięci operacyjnej oraz dane i wyniki obliczeń
Mikrokomputer jest to system mikroprocesorowy, na który składają się mikroprocesor, pamięć i układy wejścia-wyjścia. Wszystkie elementy systemu są połączone za pomocą trzech magistrali: adresowej, danych i sterującej.
Mikroprocesor to układ cyfrowy wykonany jako układ scalony o wielkim stopniu scalenia, zdolny do wykonywania operacji cyfrowych według dostarczonych mu instrukcji. Stanowi on jednostkę centralną mikrokomputera. Na mikroprocesor składają się zespoły rejestrów jednostki centralnej, układ sterowania (CU) z rejestrem rozkazów i dekoderem rozkazów, jednostka arytmetyczno-logiczna (ALU). Zespoły te są połączone ze sobą wewnętrzną magistralą danych. Podstawowym parametrem stosowanym do klasyfikacji mikroprocesorów jest długość słowa, na którym wykonywane są operacje (8, 16, 32, 64-bitowe). Przykład 8-bitowe: Zilog Z80, Intel 8080, Motorola 6800. Przykład 16-bitowe: Intel 8086, Zilog Z8000, Motorola 68000.
Mikrokontroler to całkowicie autonomiczny system mikroprocesorowy, który z reguły nie potrzebuje współpracować z układami zewnętrznymi. Używany jest głównie do sterowania urządzeniami elektronicznymi. Przykład: Intel 8051, Amtel AVR, Microchip Technology PIC.
Współpraca jc z urządzeniami peryferyjnymi i zewnętrznymi jest realizowana na dwa
sposoby:
· przez programowe testowanie (odpytywanie, przeglądanie) stanu urządzeń (polling),
· w systemie przerwań.
Metoda z przeglądaniem programowym polega na okresowym sprawdzaniu zawartości rejestru kontrolno-sterującego lub odpowiednich bitów (flag przerwań) związanych z każdym urządzeniem peryferyjnym i na podstawie tego określenie, czy urządzenie wymaga obsługi, czy też nie. Obsługa priorytetowa (kolejność obsługi) jest tu realizowana przez ustalenie odpowiedniej kolejności testowania urządzeń. Urządzenie o największym priorytecie jest testowane w każdym cyklu sprawdzania jako pierwsze, natomiast urządzenie o najmniejszym priorytecie jako ostatnie. Wadą takiego rozwiązania jest długi czas oczekiwania urządzeń na obsługę, ponieważ jc musi w każdym cyklu sprawdzić wszystkie urządzenia, nawet jeśli nie wymagają one obsługi.
Znacznie bardziej efektywny jest system (układ) przerwań. Umożliwia on
natychmiastowe, czasowe wstrzymanie aktualnie wykonywanej sekwencji programu użytkownika (rys. 2.25) i przejście do innej sekwencji programu związanej z obsługą określonego zdarzenia (przerwania), zaistniałego w urządzeniach peryferyjnych. Generalnie, schemat obsługi przerwania jest następujący:
· urządzenie peryferyjne wykrywa wystąpienie określonego zdarzenia wymagającego
reakcji mk,
· urządzenie peryferyjne zgłasza jc, za pośrednictwem układu przerwań, żądanie
przerwania,
· jc przerywa aktualnie wykonywaną sekwencję programu i zachowuje w specjalnym
obszarze pamięci - stosie (stack), wszystkie dane związane z aktualnie wykonywanym programem,
· jc przechodzi do wykonywania programu napisanego specjalnie przez użytkownika do obsługi danego zdarzenia,
· po wykonaniu tego programu jc odtwarza ze stosu dane związane z przerwanym
programem i kontynuuje wykonanie przerwanego programu.
Możemy wyróżnić następujące źródła przerwań:
· przerwanie zewnętrzne (wywołane sygnałem o odpowiednim zboczu: narastającym lub
opadającym lub poziomiem (najczęściej niskim) na dedykowanym pinie),
· przerwanie od urządzeń wewnętrznych (np. portów, liczników, komparatorów,
przetworników A/C),
· przerwanie programowe (ustawienie odpowiedniego bitu, wykonanie rozkazu np. TRAP
w mk ST72215G lub INTR w mk COP880).
Ponadto, przerwania mogą być maskowalne, tzn. można je zablokować zerując przypisane
im bity maskujące lub niemaskowalne (najczęściej jest nim przerwanie programowe).
Można wyróżnić następujące systemy przerwań:
· system przerwań z programowym przeglądaniem urządzeń,
· system przerwań z automatyczną detekcją źródła przerwania - system przerwań
wektoryzowany.
System operacyjny jest warstwą oprogramowania operującą bezpośrednio na sprzęcie, której celem jest zarządzanie zasobami systemu komputerowego i
stworzenie użytkownikowi środowiska łatwiejszego do zrozumienia i wykorzystania.
Zasada działania systemu
operacyjnego
-Odwołania do jądra systemu przez system przerwań lub specjalne instrukcje (przerwanie programowe)
- Dualny tryb pracy — tryb użytkownika (ang. user mode) i tryb systemowy (ang. system mode)
- Wyróżnienie instrukcji uprzywilejowanych,
wykonywanych tylko w trybie systemowym
-Sprzętowa ochrona pamięci
- Uprzywilejowanie instrukcji wejścia-wyjścia
-Przerwanie zegarowe
Klasyfikacja rejestrów procesora
- Rejestry ogólnego przeznaczenia (ang. general purpose registers) — mogą przechowywać dowolne wartości (np.
tymczasowe wyniki), a ich zawartość nie ma bezpośredniego wpływu na sposób przetwarzania lub wybór danych
- Rejestry specjalnego przeznaczenia (ang. special purpose registers) — rejestry, które pełnią szczególną rolę w czasie
wykonywania programu (np. licznik rozkazów, wskaźnik stosu)
- Rejestry ogólnego przeznaczenia ze specyficzną funkcjonalnością — mogą na ogół przechowywać dowolne
wartości, ale spełniają szczególną funkcję w czasie wykonywania niektórych instrukcji (np. licznik pętli, rejestr
bazowy)
Typowe rejestry procesora
- Akumulator — przechowuje operand lub wynik operacji arytmetycznej
- Licznik rozkazów — zawiera adres następnej instrukcji do wykonania
- Rejestr flagowy — zawiera bity, które są ustawiane w celu zasygnalizowania specyficznego stanu przetwarzania (np.przeniesienie, przepełnienie, bit znaku, bit przerwania itp.)
Tryby adresowania
- natychmiastowy — operand znajduję się w pamięci wraz z kodem rozkazu (stanowi składową samego rozkazu)
- bezpośredni — operand znajduję się w pamięci pod adresem wskazanym bezpośrednio w rozkazie
- rejestrowy — operand znajduje się w jednym z rejestrów procesora, wskazanym odpowiednio w rozkazie
- pośredni — operand znajduje się w pamięci pod adresem przechowywanym w miejscu wskazanym w rozkazie.
- rejestrowy pośredni — operand znajduję się w pamięci pod adresem przechowywanym w jednym z rejestrów, wskazanym w rozkazie
-indeksowy — operand znajduję się w pamięci pod adresem przesuniętym o pewną wartość podaną w rozkazie w stosunku do adresu przechowywanego w jednym z rejestrów, również wskazanym w kodzie rozkazu (adres operandu jest sumą zawartości rejestru oraz
przesunięcia)
- bazowy indeksowy — adres operandu powstaje przez zsumowanie zawartości dwóch rejestrów — bazowego i indeksowego — oraz wartości przesunięci podanego w kodzie rozkazu