13. Procesor
Procesor jest jednostką centralną. Zajmuje się przetwarzaniem informacji
i dlatego czasami nazywany jest „sercem” albo „mózgiem” komputera. Zawiera on układ arytmetyczno-logiczny przeznaczony do wykonywania operacji arytmetycznych (np. dodawania) oraz logicznych (porównywania liczb) i układ sterowania zawiadujący pracą procesora i innych elementów komputera. Ma on także układy służące do pamiętania i przetwarzania informacji tzw. rejestry.
Każdy procesor ma co najmniej dwa rejestry. Pierwszy zwany „licznikiem rozkazów” (ang. Program Counter), służy do pobierania z pamięci kolejnych instrukcji programu. Drugi - „akumulator” - jest używany do przechowywania danej, na której obecnie jest wykonywana operacja lub wyniku operacji. Współczesne mikroprocesory mają kilkanaście różnych rejestrów. Procesor może wykonywać kilkadziesiąt, a nawet kilkaset ustalonych operacji. Operacje te są bardzo proste, dlatego każde zadanie musi być najpierw podzielone na elementarne instrukcje. Ciąg takich operacji nosi nazwę programu w języku maszynowym lub programu binarnego, a same operacje nazywa się rozkazami maszynowymi.
13.1. Mikroprocesor
Mikroprocesor jest skomplikowanym automatem, który może wykonywać kilkaset czynności - tzn. rozkazów maszynowych. Każdy rozkaz ma własny kod, liczbę zapisywaną w jednym lub kilku bajtach. Procesor pobiera z pamięci kolejne bajty, traktując je jako rozkazy lub dane i wykonuje zaprogramowane operacje. Mikroprocesor pracuje w takt impulsów zegarowych. Zegarem nazwano układ , który wytwarza sygnał w formie impulsów prostokątnych.
Rys.13.1. Impuls zegarowy
Od częstotliwości sygnału zegarowego zależy szybkość pracy procesora, na ogół im większa częstotliwość, tym szybsza praca. Wszystkie mikroprocesory zawierają podobne elementy:
układ sterowania i synchronizacji, który kontroluje pracę procesora i wytwarza sygnały potrzebne do sterowania niektórymi elementami komputera,
arytmometr, czyli układ który wykonuje operacje arytmetyczne i logiczne,
rejestry, tj. układy pamięci,
wewnętrzne szyny łączące elementy procesora.
Podstawowymi rejestrami, które znajdują się w każdym mikroprocesorze są:
licznik rozkazów, który zawiera adres następnego rozkazu do wykonania,
rejestr rozkazów, który zawiera kod aktualnie wykonywanego rozkazu,
akumulator, jest to rejestr używany w czasie wykonywania rozkazów arytmetycznych, logicznych, wejście/wyjście i innych,
rejestr znaczników, który zawiera dodatkowe informacje o wyniku operacji arytmetyczno-logicznych.
Procesor zawiera jeszcze kilka lub kilkanaście rejestrów używanych w czasie wykonywania niektórych rozkazów, np. wskaźnik stosu, służący do adresowania pamięci.
Rys. 13.2. Schemat budowy mikroprocesora
13.2. Zasada działania mikroprocesora
Procesor pobiera z pamięci kod rozkazu wskazywanego przez licznik rozkazów i umieszcza go w rejestrze rozkazów. Układ sterowania dekoduje go, i na jego podstawie steruje pracą rejestrów układu arytmetyczno-logicznego oraz wewnętrznych szyn. Wykonanie instrukcji jest podzielone na kilka faz. Pierwszą fazą jest pobranie z pamięci kodu. Następnie, jeśli dany rozkaz tego wymaga, pobiera z pamięci lub rejestrów dane tzw. argumenty. Wreszcie wykonuje operację i wynik umieszcza w jednym z rejestrów procesora lub w pamięci. Zawartość licznika rozkazów jest zwiększana, mikroprocesor pobiera z pamięci następny rozkaz programu.
Przerwanie opisanej procedury powoduje sygnał podany z urządzenia zewnętrznego albo procesora. Przerwa (ang. interupt) on wtedy wykonanie programu. Zapamiętana zostaje zawartość licznika rozkazów i rozpoczyna się wykonywanie programu obsługi przerwania. Adres tego programu jest przesyłany przez specjalny układ przerwań. Takie przerwania są wykorzystywane do współpracy z urządzeniami wejścia/wyjścia. Przerwanie może być także spowodowane wykonaniem specjalnego rozkazu maszynowego (przerwanie programowe). Adres programu obsługi przerwania jest wtedy ustalony. Przerwania programowe służą zwykle do wywoływania programów systemu operacyjnego. Po zakończeniu obsługi przerwania wznawiane jest wykonywanie przerwanego programu.
Wszystkie operacje wykonywane przez procesor synchronizowane są impulsami przychodzącymi z zegara. Jedna instrukcja jest wykonywana w czasie kilku taktów zegara. Gdy jego częstotliwość jest większa, procesor pracuje szybciej.
13.3. Rozkazy maszynowe
Rozkazy wykonywane przez mikroprocesory można podzielić na następujące grupy:
przesyłanie bajtu lub kilku bajtów z pamięci do rejestrów, z rejestrów do pamięci lub innych rejestrów,
przesyłanie bajtu lub ciągu bajtów między rejestrami i układami we/wy,
arytmetyczne (dodawanie, odejmowanie, niekiedy mnożenie i dzielenie - dotyczy tylko liczb całkowitych o ograniczonej długości np. 16 bitów),
przetwarzanie ciągów bajtów (tylko bardzo proste operacje np. przepisywanie lub porównywanie),
sterujące (tzn. zmieniające zawartość licznika rozkazów, np. skoki, wywołania podprogramów, przerwanie programowe),
sterujące pracą systemu komputerowego np. zatrzymanie procesora.
Mikroprocesory różnią się między sobą zbiorem (listą) rozkazów oraz organizacją rejestrów. Dlatego programy napisane w języku procesora jednego typu nie mogą być wykonywane przez inny procesor.
13.4. Mikroprocesory 8 i 16 bitowe
Pierwsze mikroprocesory przetwarzały dane 4 - bitowe. Obecnie stosuje się układy 8 -, 16 - , a nawet 32 - bitowe. W mikroprocesorach 8 - bitowych organizacja wewnętrzna (rejestry, arytmometr) oraz rozkazy są 8 - bitowe. Szyna danych jest także 8 - bitowa, lecz adresy 16 - bitowe, co ogranicza przestrzeń adresową do 64 kB.
Mikroprocesory 16 - bitowe mogą pamiętać i przetwarzać 2 - bajtowe słowa. Szyna danych jest zwykle także 16 - bitowa, choć produkuje się procesory z 8 - bitową szyną danych. Przestrzeń adresowa jest tu znacznie większa - od 1 do kilkunastu MB. Procesory 16 - bitowe przewyższają układy 8 - bitowe:
liczbą rejestrów,
liczbą i złożonością rozkazów,
przestrzenią adresową,
mocą obliczeniową (szybkością wykonywania obliczeń).
Przyspieszenie obliczeń w mikroprocesorach 16 - bitowych uzyskano dzięki 16 - bitowej organizacji, szybszym zegarom oraz równoczesnemu wykonywaniu niektórych faz rozkazów maszynowych.
Procesory 16 - bitowe mają także kilka wad w stosunku do 8 - bitowych:
do wykonania rozkazów potrzeba więcej impulsów zegarowych,
programy zajmują więcej pamięci (dłuższe kody rozkazów i adresy),
droższe i bardziej skomplikowane układy towarzyszące,
bardziej złożona konstrukcja komputera (więcej układów i łączących je linii).
Ponadto, zastosowanie procesorów synchronizowanych z bardzo szybkimi zegarami wymaga użycia znacznie droższych, szybszych pamięci oraz układów towarzyszących.