Procesor (CPU - centralna jednostka wykonawcza) to układ scalony, którego działanie polega na wykonywaniu instrukcji programów. Nadzoruje on i synchronizuje prace wszystkich urządzen w komputerze.
Charakterystyczne cechy, które odróżniają procesory od siebie to:
Architektura (CISC lub RISC)
Liczba bitów przetwarzana w jednym takcie
Częstotliwość taktowania podawana w MHz
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 (niektóre procesory mają kilka arytmometrów).
Rejestry, tj. układy pamięci.
Wbudowana pamięć podręczna cache ,która działa podobnie do zewnętrznej pamięci RAM. Zapewnia ona, że procesor nie jest zmuszony czekać na dane potrzebne mu do pracy.
Koprocesor matematyczny, który jest zestawem instrukcji przeznaczonych do obsługi skomplikowanych operacji matematycznych.
Wewnętrzne szyny łączące elementy procesora.
Podstawowymi rejestrami, które znajdują się w każdym mikroprocesorze, są:
Licznik rozkazów - zawiera on adres następnego rozkazu do wykonania.
Rejestr rozkazów - zawiera kod aktualnie wykonywanego rozkazu.
Akumulator, jest używany w czasie wykonywania rozkazów arytmetycznych, logicznych, I/O i in. niektóre procesory mają kilka takich rejestrów.
Rejestr znaczników - zawiera dodatkowe informacje o wyniku operacji arytmetyczno-logicznych, np. "wynik równy zeru".
Schemat blokowy procesora:
OZNACZENIA:
RAM (Random Acces Memory) - pamięć operacyjna
BU (Bus Unit) - układ zarządzający magistralami
AU (Addresing Unit) - układ obliczania adresu połączony z
MMU (Memory Management Unit) układem zarządzania pamięcią
IU (Instruction Unit) - dekoder instrukcji
EU (Execution Unit) -moduł wykonawczy zawiera
ALU (Aritmetic-Logic Unit) jednostkę arytmetyczno-logiczną
FPU (Floating Point Unit) jednostkę zmiennoprzecinkową
ALU - układ ten jest często nazywany układem wykonawczym procesora, ponieważ wykonuje on większość rozkazów zlecanych procesorowi. Blok ALU jest układem, który realizuje różne funkcje w zależności od zaprogramowanej operacji, tj. rozkazu umieszczonego w programie. Argumentami tych rozkazów są słowa binarne. Rozkazy te mogą dotyczyć operacji artmetycznych (dodawanie i odejmowanie) lub logicznych (sumowanie, mnożenie itp.).
Rejestry: Zarówno jednostka artmetyczno-logiczna jak i układ sterowania musi współpracować z określonym zestawem rejestru. Zawartość pewnej części rejestru może być zmieniona w wyniku wykonania przez procesor określonej instrukcji. Rejestry takie nazywamy rejestrami dostępnymi programowo. W grupie tych rejestrów występują takie typy rejestrów, których odpowiedniki znajdują się praktycznie w każdym mikroprocesorze. Ich pojemność lub ilość może się zmieniać jednak zastosowanie i wykonywane zadania pozostają takie same.
A - akumulatory
B,C,D,E,H,L - rejestry robocze
SP - wskaźnik stosu
F - rejestr flagowy
PC - licznik rozkazów
Akumulator - jest to rejestr, który zawiera jeden z argumentów wykonywanej operacji i do którego ładowany jest wynik wykonywanej operacji.
Rejestr flagowy - zawiera dodatkowe cechy wyniku wykonywanej operacji, które potrzebne są do podjęcia decyzji o dalszym sposobie przetwarzania informacji. Cechami tymi mogą być: znak wyniku, przekroczenie zakresu, parzysta lub nieparzysta liczba jedynek. Wystąpienie określonej cechy sygnalizowane jest ustawieniem lub wyzerowaniem określonego bitu w rejestrze flagowym. Ustawione bity nazywane są znacznikami lub flagami.
Licznik rozkazów jest jednym z istotniejszych rozkazów dzięki któremu procesor potrafi pobierać kolejne rozkazy do wykonania. Licznik rozkazów - zawiera adresy komórki pamięci w której przechowywany jest kod rozkazu przeznaczony do wykonania jako następny.
Oprócz tego procesor ma kilka (kilkanaście) rejestrów używanych w czasie wykonywania niektórych rozkazów np. wskaźnik stosu służący do adresowania pamięci. Stosem nazywamy wyróżniony obszar pamięci, używany według następujących reguł:
Informacje zapisywane są na stos do kolejnych komórek przy czym żadnego adresu nie wolno pominąć
Informacje odczytuje się w kolejności odwrotnej do zapisu
Informacje odczytujemy z ostatnio uzupełnianej komórki natomiast zapisujemy do pierwszej wolnej
Stos jest wydzielonym miejscem w pamięci w którym obowiązuje zasada: ostatni wchodzi pierwszy wychodzi.
Zegar
Najbardziej charakterystycznym parametrem opisującym każdy procesor jest częstotliwość pracy zegara. Zegar pełni rolę dyrygenta koordynującego pracę elementów procesora. Wszystkie operacje są synchronizowane zegarem o określonej, stałej częstotliwości. Im częstotliwość jest większa, tym praca procesora jest wydajniejsza, gdyż może on wykonać więcej instrukcji w ciągu jednej sekundy. Nowe procesory mają coraz szybsze zegary, jednak częstotliwości taktowania nie można zwiększać w nieskończoność. Maksymalna jej wartość jest uwarunkowana zastosowaną technologią produkcji procesora. Im mniejsze szerokości ścieżek tworzących strukturę procesora, tym większa maksymalna częstotliwość taktowania. Efektem ubocznym zwiększania częstotliwości jest większe zużycie energii, wydzielanej w postaci ciepła. Częściowo można temu przeciwdziałać, stosując technologie umożliwiające zasilanie procesorów niższym napięciem.
Pamięć podręczna
Modele procesorów różnią się od siebie także ilością pamięci podręcznej (ang. cache) - wbudowanej w procesor. Taka pamięć jest niezbędna. Jest znacznie szybsza od RAM-u i usprawnia działanie procesora.
Procesory mają od kilkunastu do kilkuset kilobajtów pamięci podręcznej.
Ile bitów?
Bardzo często spotykamy się z określeniem - procesor 32-bitowy. Ma ono związek z maksymalnym rozmiarem danych, na których procesor potrafi wykonać elementarne operacje arytmetyczno--logiczne, i rozmiarem rejestrów ogólnego przeznaczenia. Rejestry te to specjalne struktury w procesorze, które służą do przechowywania tymczasowych wyników. Rozmiar rejestru określa się w bitach. W bitach określa się także szerokość magistrali systemowej, za pośrednictwem której procesor porozumiewa się z otoczeniem. To nią przesyłane są dane z i do pamięci RAM, jak i pozostałych urządzeń. Magistralę tworzy szyna danych i szyna adresowa. Od szerokości szyny adresowej zależy możliwość adresowania maksymalnego rozmiaru pamięci RAM.
RISC, CISC, MMX
Opisują one pewne cechy procesora związane z jego budową i możliwościami. Procesory możemy podzieli na dwa typy CISC (ang. Complex Instruction Set Computer - komputer o rozbudowanym zestawie rozkazów) i RISC (ang. Reduced Instruction Set Computer - komputer o zredukowanym zestawie rozkazów). Klasyczny CISC potrafi interpretować setki odmiennych rozkazów, które mogą mieć różny rozmiar. Rozkazy procesora CISC są zazwyczaj dłuższe niż RISC-a potrzeba więcej bitów, aby rozróżnić poszczególne komendy, których jest więcej. Procesor typu RISC charakteryzuje się zminimalizowanym zbiorem rozkazów i zazwyczaj stałą długością instrukcji. Zaletą procesorów typu RISC jest prostsza budowa i większa prędkość działania. Łatwiej jest również wyposażyć je w możliwość równoległego wykonywania kilku rozkazów. Wadą jest mały zbiór instrukcji. Często jednemu, złożonemu rozkazowi procesora typu CISC odpowiada kilka instrukcji procesora typu RISC. Nowsze procesory z rodziny x86 są tylko zewnętrznie typu CISC. Tak naprawdę w środku znajduje się procesor RISC. Dzięki temu zachowując zalety procesora CISC w prosty sposób zwiększono wydajność współczesnych procesorów. Wraz z nadejściem Pentium MMX w świecie procesorów pojawiło się znacznie więcej skrótów MMX, SSE, 3D Now! Oznaczają, że producent nauczy dany procesor rozpoznawać dodatkowe instrukcje. Ma to na celu zwiększenie jego wydajności w specyficznych zastosowaniach i nosi ogólną nazw SIMD (ang. single-instruction, multiple-data technology - technologia przetwarzania wielu danych za pomoc pojedynczej instrukcji).
Jak działa procesor?
Jako przykład posłuży flagowy model Intela Pentium 4.
Zastosowano w nim architekturę NetBurst. Oznacza to, że przetwarzanie instrukcji następuje w trzech etapach. Początkowo instrukcja jest pobierana i rozkładana na tak zwane mikrooperacje. Ostatnią fazą przetwarzania jest uporządkowanie kolejności wyników mikrooperacji. Następnie każda instrukcja jest pobierana i dekodowana poprzez jednostkę Fetach/Decode na jedną lub więcej mikrooperacji. Mikrooperacje są przechowywane w Execution Trace Cache. Mikrooperacje wykonywane są przez jednostki wykonawcze. Jednocześnie może być przetworzonych kilka mikrooperacji, przez co procesor pracuje znacznie szybciej. Procesor stara się wykorzystywać swoje zasoby możliwie efektywnie i czasami zaburza kolejno wykonania mikrooperacji. Może się zdarzyć, że wynik operacji, która występuje w programie później, zostanie obliczony wcześniej ni wynik poprzedniej operacji. Dlatego wyniki muszą zostać uporządkowane przez jednostkę Retirement. Gdyby nie zostały uporządkowane, wynik działania programu byłby niezgodny z tym, co chciał osiągnąć programista. Niemal każdy program w dużej części składa się z fragmentów, które muszą by wielokrotnie wykonane. Dlatego ostatnio wykonane instrukcje s przechowywane w postaci ciągu mikrooperacji Execution Trace Cache. Dzięki temu istnieje duże prawdopodobieństwo, że wykonanie jeszcze raz tej samej instrukcji nie będzie wymagało ponownego jej pobrania i zdekodowania. Podobna sytuacja występuje w wypadku danych. Najczęściej wykorzystywane dane są tymczasowo pamiętane w pamięci podręcznej.
Co jest w środku Pentium 4?
System Bus (magistrala systemowa) - kanał komunikacyjny pomiędzy pamięcią i urządzeniami wejścia/wyjścia a procesorem. Szyna danych ma rozmiar 64 bitów (8 bajtów), szyna adresowa 36 bitów, przestrzeń adresowa 236 = 64 GB. Magistrala jest synchronizowana częstotliwością 100 MHz.
Bus Unit - blok odpowiedzialny za poprawną współpracę wewnętrznych mechanizmów procesora z szyną systemową.
L2 Cache + L2 Control Unit - pamięć podręczna drugiego poziomu wraz z jednostką zarządzającą , rozmiar zależnie od wersji procesora 256 lub 512 kB.
Fetach/Decode - jednostka pobierania i dekodowania instrukcji. Jej zadaniem jest pobieranie instrukcji i dekodowanie ich na tak zwane mikrooperacje (μops).
Execution Trace Ciche - bufor śledzenia wykonywania rozkazów, odpowiednik pamięci podręcznej pierwszego poziomu.
Microcode ROM - pamięć mikrokoku niemodyfikowalna pamięć zapisana na etapie produkcji układu, zawiera tłumaczenie bardziej skomplikowanych instrukcji na μops.
L1 Cache - pamięć podręczna pierwszego poziomu o rozmiarze 8 kB.
Execution - moduł wykonawczy, interpretuje mikrooperacje. Składa się z kilku jednostek wykonawczych, które jednocześnie mogą wykonywa kilka μops.
Retirement - moduł przywracający prawidłową kolejność wyników mikrooperacji.
BTB (Branch Target Buffet)/ Branch Prediction - jednostka przewidywania skoków.
Branch History Update - uaktualnienie historii skoków.