Procesor

Procesor (ang. processor), także CPU (ang. Central Processing Unit) - urządzenie cyfrowe sekwencyjne, które pobiera dane z pamięci, interpretuje je i wykonuje jako rozkazy. Wykonuje on ciąg prostych operacji (rozkazów) wybranych ze zbioru operacji podstawowych określonych zazwyczaj przez producenta procesora jako lista rozkazów procesora.
Lista rozkazów procesora (ang. instruction set) - zestaw podstawowych instrukcji, jakie dany procesor potrafi wykonać.
Producenci procesorów podają zazwyczaj szczegółowe informacje dotyczące każdego z rozkazów:
- działania jakie dana instrukcja wykonuje: co dokładnie robi (algorytm), jak wpływa na stan procesora (zawartość rejestrów, modyfikacja rejestru flag itp.), jakie może spowodować błędy, itp.;
- sposób kodowania rozkazu, tj. jego binarna postać rozpoznawana przez układ elektroniczny;
- proponowane mnemoniki udostępniane przez asemblery.
Lista rozkazów jest niezbędna dla programistów wykorzystujących procesor bezpośrednio, zwykle z poziomu asemblera, a także twórców kompilatorów, debuggerów i innych narzędzi operujących na poziomie kodu maszynowego.
Nie wszystkie rozkazy rozpoznawane przez dany procesor muszą zostać udokumentowane.
Niektóre rozkazy wymienione na liście nie muszą odpowiadać rzeczywistym instrukcjom wykonywanym przez układ elektroniczny. Np. w procesorach Itanium nie istnieje rozkaz umożliwiający przesłanie zawartości pomiędzy rejestrami, jednak to działanie można zrealizować za pomocą dodawania i producent zaleca, aby w asemblerach udostępniać taki pseudorozkaz.

Procesory (zwane mikroprocesorami) wykonywane są zwykle jako układy scalone zamknięte w hermetycznej obudowie, często posiadającej złocone wyprowadzenia (stosowane ze względu na odporność na utlenianie). Ich sercem jest monokryształ krzemu, na który naniesiono techniką fotolitografii szereg warstw półprzewodnikowych, tworzących, w zależności od zastosowania, sieć od kilku tysięcy do kilkuset milionów tranzystorów. Połączenia wykonane są z metalu (aluminium, miedź).

Jedną z podstawowych cech procesora jest długość (liczba bitów) słowa, na którym wykonywane są podstawowe operacje obliczeniowe. Jeśli słowo ma 64 bity, mówimy, że procesor jest 64-bitowy.

Innym ważnym parametrem określającym procesor jest szybkość, z jaką wykonuje on rozkazy. Przy danej architekturze procesora, szybkość ta w znacznym stopniu zależy od czasu trwania pojedynczego taktu.

Budowa

W funkcjonalnej strukturze procesora można wyróżnić takie elementy, jak:

Zespół rejestrów do przechowywania danych i wyników

Rejestry, ze względu na zastosowanie, można podzielić m.in. na:
rejestry danych - do przechowywania danych całkowitoliczbowych, np. argumentów i wyników obliczeń,
rejestry adresowe - do przechowywania adresów i uzyskiwania dostępu do pamięci, wśród nich wyróżnić można rejestry segmentowe,
rejestry ogólnego zastosowania (ang. general purpose), będące połączeniem dwóch powyższych typów, czyli mogące przechowywać zarówno dane, jak i adresy,
rejestry zmiennoprzecinkowe - do przechowywania i wykonywania obliczeń na liczbach zmiennoprzecinkowych, z reguły znajdujące się w oddzielnym bloku funkcjonalnym procesora, zwanym koprocesorem (FPU),
rejestry stałych - przechowujące stałe, jedynie do odczytu,
rejestry wektorowe - przechowujące dane do jednoczesnego przetwarzania wielu danych przez instrukcje typu SIMD,
rejestry specjalne - określające stan wykonania, wśród nich wymienić można rejestr wskaźnika instrukcji, wskaźnik stosu, rejestr flag procesora,
rejestry instrukcji - do przechowywania obecnie przetwarzanej instrukcji

Jednostkę arytmetyczną (arytmometr) do wykonywania operacji obliczeniowych na danych,

Arytmometr - dawna nazwa mechanicznej maszyny liczącej, poprzedniczki kalkulatora. Arytmometr najczęściej przeznaczony był do wykonywania dodawania lub odejmowania, natomiast mnożenie i dzielenie można było dokonywać przez wielokrotne dodawanie lub odejmowanie. Napędzany był ręcznie (korbką lub dźwignią) lub elektrycznie. W końcowej fazie rozwoju arytmometry dokonywały już automatycznego pierwiastkowania. Innym kierunkiem rozwoju arytmometrów były maszyny do księgowania i fakturowania, będące połączeniem urządzeń liczących z maszyną do pisania. Był to wynalazek Charles'a Xaviera Thomasa.
Nazwa arytmometr określa także jednostkę obliczeniową procesora - układ funkcjonalny wykonujący proste działania matematyczne, najczęściej w systemie binarnym.
Arytmometr jest także częścią składową procesora komputera, zwana także jednostką arytmetyczno-logiczną, w której wykonywane są operacje arytmetyczne (dodawanie, odejmowanie, dzielenie, mnożenie) oraz logiczne na liczbach pobieranych z pamięci operacyjnej. Podstawowymi elementami arytmometru są: sumator, który wykonuje operację dodawania oraz pozostałe operacje arytmetyczne przez sprowadzanie ich do dodawań i prostych operacji pomocniczych, takich jak przesunięcie liczby, przekształcenie z systemu zwykłego w system negacji lub uzupełnień; rejestry, w których przechowuje się liczby na czas wykonywania operacji oraz wyniki obliczeń; układ sterowania, który kieruje pracą sumatora i rejestrów, wymianą danych między rejestrami i innymi urządzeniami procesora.
W komputerach o dużej szybkości obliczeń stosuje się odrębne układy do wykonywania poszczególnych operacji arytmetycznych. W przypadku przedstawiania liczb ze zmiennym przecinkiem operacje arytmetyczne wykonuje się na drodze programowej, za pomocą makrorozkazów, bądź też arytmometr jest wyposażony w specjalnie do tego celu przeznaczone układy.

Układ sterujący przebiegiem wykonywania programu,

Inne układy, w które producent wyposaża procesor w celu usprawnienia jego pracy.


BU - odpowiada za współpracę procesora z pamięcią;
U - dekoder odtwarzający rozkazy do wykonania przez procesor, czekające w kolejce. Układ ten zazwyczaj wspomagany jest przez pamięć ROM, w której zawarty jest słownik tłumaczący przyjmowane kody rozkazowe na sekwencje operacji;
ROM - pamięć wspomagająca dekoder IU;
EU- układ wykonawczy, do którego są przekazywane rozkodowane instrukcje;
ALU- jednostka wykonująca operacje na liczbach stałoprzecinkowych;
CU - blok sterujący jednostkę ALU;
FPU - jednostka wykonująca operacje na liczbach zmiennoprzecinkowych;
AU - jednostka adresowa, która obsługuje m.in. pobieranie argumentów rozkazów;
MMU - moduł zarządzania realizujący dostęp do pamięci fizycznej żądanej przez CPU.

Rozkazy procesora

Do typowych rozkazów wykonywanych przez procesor należą:
kopiowanie danych
- z pamięci do rejestru
- z rejestru do pamięci
- z pamięci do pamięci (niektóre procesory)
(podział ze względu na sposób adresowania danych) działania arytmetyczne
- dodawanie
- odejmowanie
- porównywanie dwóch liczb
- odawanie i odejmowanie jedności
- zmiana znaku liczby
działania na bitach
- iloczyn logiczny - AND
-suma logiczna - OR
-suma modulo 2 (różnica symetryczna) - XOR
- negacja - NOT
- przesunięcie bitów w lewo lub prawo
skoki
- bezwarunkowe
- warunkowe

Instrukcje procesora identyfikowane są na podstawie binarnego kodu maszynowego, jednak dany kod nie musi oznaczać wykonywania tych samych operacji przez procesor do tego samego (lub innego) zadania.
W tym celu, w procesorach niedostępnych masowo można spotkać możliwość programowania rozkazów CPU, czyli mikroprogramowania. Rozwiązanie takie daje pełniejszą kontrolę nad procesorem oraz możliwość np. zwiększenia wydajności procesora w pewnych zastosowaniach itp., w znacznie większym stopniu niż w przypadku np. dostępnych powszechnie procesorów, w których kody maszynowe są na stałe przypisane do listy wykonywanych mikroinstrukcji.

Wielordzeniowość i procesory pomocnicze


Nehalem aka Core i7 - ogólny zarys budowy Na początek przypomnijmy czym się charakteryzuje architektura Intel Nehalem względem Core 2. Procesory Core i7 9xx bazujące na rdzeniu Bloomfield to całkowicie rewolucyjne podejście do kwestii budowy procesora w obozie Intela. W pewnym sensie można odnieść wrażenie, że inżynierowie projektowali procesor od kompletnych podstaw. W czym rzecz? Procesor został podzielony na dwa podstawowe logiczne elementy (będące jednak pojedynczym fragmentem krzemu): część "Core" oraz "unCore" (zwana też potocznie mostkiem północnym lub mostkiem NB). W skład tej pierwszej wchodzą rdzenie wyposażone w pamięć podręczną pierwszego oraz drugiego poziomu (cache L1 oraz L2) osobne dla każdego z nich. "unCore" to z kolei wszystko pozostałe, czyli współdzielona przez wszystkie rdzenie pamięć podręczna trzeciego poziomu (cache L3) o pojemności 8MB, kontroler pamięci RAM, kontroler szyny QPI, mechanizmy zarządzające energią itp. Doskonale obrazuje to poniższy schemat:


Taka budowa zapewnia pewną modułowość. Z punktu widzenia producenta nie ma bowiem przeciwwskazań, by wypuścić procesor np. 6-rdzeniowy, którego w zasadzie nie trzeba projektować, a wystarczy się ograniczyć do lekkich modyfikacji istniejącego już projektu. Można też sprzedawać procesory z zablokowanym rdzeniem (bądź rdzeniami), jak to czyni AMD w przypadku Phenomów I jak i II. Zresztą, aż trudno jest tutaj nie dostrzec analogicznych rozwiązań w Core i7 względem Phenoma :) Warto w tym miejscu przypomnieć, że część "Core" jest taktowana częstotliwością procesora, czyli np. 2666 MHz w przypadku Core i7 920, zaś "unCore" ma inną częstotliwość: 3200 MHz dla procesorów z serii ExtremeEdition oraz 2133 MHz dla pozostałych. Ale nie jest to też takie oczywiste.

Cache L3
Pamięć podręczna trzeciego poziomu nie pierwszy raz gości w procesorach Intela. Była już w Pentium 4 Extreme Edition, ale był to jednorazowy "wyskok" w przypadku jednostek "biurkowych". Core i7 posiada jej 8 MB i jest to (podobnie jak w przypadku Phenoma) jedyna pamięć podręczna współdzielona dla wszystkich rdzeni - w odróżnieniu od Core 2, gdzie cache L2 był "wspólną" pamięcią. Cache L3, podobnie jak w przypadku Phenomów taktowany jest częstotliwością "unCore" / "mostka NB". Stąd też wynika całkiem spora różnica w wydajności między podstawowymi modelami Core i7 (2133 MHz dla NB), a wersjami Extreme Edition (3200 MHz dla NB).

HyperThreading
Po kilku latach wraca do łask. Dla przypomnienia: HyperThreading to technologia współbieżnej wielowątkowości. Umożliwia uruchomienie równoległych dwóch procesów, które mogą działać na jednym fizycznym rdzeniu. Oczywiście konieczne jest ich pewne przesunięcie względem siebie - korzystają bowiem z tych samych jednostek obliczeniowych. Niemniej dzięki HT w czasie gdy jeden wątek np. pobiera dane z pamięci, drugi może być akurat na etapie wykonywania obliczeń. Intel twierdzi, że HT z Core i7 działa nieporównywalnie lepiej niż to znane z Pentium 4. I po testach można potwierdzić te słowa, gdyż sytuacje w których jest wolniej (z włączonym HT) są niebywale rzadkie, a jednocześnie wzrost wydajności w wielu aplikacjach jest wręcz potężny.

Turbo
Tryb Turbo opiera się na założeniu, że w czasie typowego użytkowania komputera, nie da się wygenerować pełnego obciążenia prądowego procesora, a więc nie uzyskuje się zwykle maksymalnego TDP, jakie zakłada producent. Jest to całkowicie normalne, gdyż tylko specjalnymi aplikacjami jesteśmy w stanie równocześnie w maksymalnym stopniu obciążyć rdzenie procesora, jak jego pamięć podręczną, kontroler pamięci czy szynę zewnętrzną. Idea jest bardzo prosta: dopóki procesor nie osiągnie zakładanego TDP, może pracować z wyższymi częstotliwościami. W przypadku Bloomfielda tryb Turbo działał różnie w zależności od tego jak obciążony był aktualnie procesor. Gdy wykorzystywaliśmy wszystkie rdzenie, to mnożnik podnosił się o tzw. jeden "bin", czyli o jeden mnożnik, a więc o 133 MHz przy domyślnym taktowaniu. W przypadku gdy obciążony był jeden lub dwa rdzenie, to procesor przyspieszał o dwa "biny", a więc o 266 MHz. Tym samym Core i7 920 pracował w rzeczywistości z taktowaniem 2800 MHz lub 2933 MHz w zależności z jakiej aplikacji korzystaliśmy. Rozwiązanie jest w 100% sprzętowe, przez co działa niezależnie od systemu operacyjnego i jest przezroczyste dla wszystkich aplikacji. Domyślnie jest włączone, przez co nie trzeba mieć żadnej wiedzy by go włączyć.


Architektura procesora

CISC - Obliczenia z rozbudowanym zestawem instrukcji (z j.ang Complex Instruction Set Computing)- Rodzaj architektury procesora. Według architektury CISC były tworzone pierwsze procesory, które wyposażano w pełny zestaw instrukcji mający im zapewnić wykonanie każdego polecenia użytkownika (a konkretnie programu). Z czasem okazało się jednak, że w 80 procentach wypadków było wykorzystywanych tylko 20 procent dostępnych instrukcji, a pozostałe tylko sporadycznie. Wszystkie procesory montowane w pecetach, np. Pentium czy K6, bazują na architekturze typu CISC.

RISC - Obliczenia z zredukowanym zestawem instrukcji (Reduced Instruction Set Computing)- Rodzaj architektury procesora. W tej architekturze są produkowane najnowocześniejsze i najlepsze procesory np. Alpha, Power PC, AMD 29000 Zredukowana liczba rozkazów do niezbędnego minimum. Ich liczba wynosi kilkadziesiąt, podczas gdy w procesorach CISC sięga setek. Upraszcza to znacznie dekoder rozkazów. Ograniczenie komunikacji pomiędzy pamięcią, a procesorem. Przede wszystkim do przesyłania danych pomiędzy pamięcią, a rejestrami służą dedykowane instrukcje, które zwykle nazywają się load (załaduj z pamięci), oraz store (zapisz do pamięci); pozostałe instrukcje mogą operować wyłącznie na rejestrach. Zwiększenie liczby rejestrów (np. 32, 192, 256, podczas gdy np. w architekturze x86 jest zaledwie 8 rejestrów), co również ma wpływ na zmniejszenie liczby odwołań do pamięci. Dzięki przetwarzaniu potokowemu (ang. pipelining) wszystkie rozkazy wykonują się w jednym cyklu maszynowym, co pozwala na znaczne uproszczenie bloku wykonawczego, a zastosowanie superskalarności także na zrównoleglenie wykonywania rozkazów. Dodatkowo czas reakcji na przerwania jest krótszy

źródła:http://www.utk.netau.net/sprzet/procesor.html
http://pl.wikipedia.org/wiki/Procesor
http://portal.pcmod.pl/intel-haswell-procesory-4-generacji-architektury-core/
http://twojepc.pl/artykuly.php?id=core_i5_testy

|Do góry |