Architektura systemów komputerowych dr Artur Bartoszewski
Procesor część II
Rejestry procesora dostępne programowo A B D H PC SP F C E L A Akumulator Zawiera jeden z operandów działania i do niego przekazywany jest wynik B,C,D,E,H,L rejestry robocze (uniwersalne) SP - wskaźnik stosu F - rejestr znaczników PC - licznik rozkazów
Rejestry procesora dostępne programowo Definicja: Licznikiem rozkazów (PC) nazywamy rejestr mikroprocesora zawierający adres komórki pamięci, w której przechowywany jest rozkaz przeznaczony do wykonywania jako następny Definicja: Stosem nazywany wyróżniony obszar pamięci używany według następujących reguł: 1. informacja zapisywana jest do kolejnych komórek, żadnego adresu nie wolno pominąć, 2. odczyt informacji następuje w kolejności odwrotnej do zapisu, 3. informuje odczytujemy z ostatnio zapisanej komórki, natomiast zapisujemy do pierwszej wolnej.
Rejestry procesora dostępne programowo Stos jest rodzajem pamięci (buforem) typu LIFO (ang. Last In First Out). Stos ma stały wymiar i położenie w pamięci. Konieczna jest więc tylko znajomość adresu pierwszej wolnej komórki stosu (wierzchołka stosu). Do tego służy rejestr SP - wskaźnik stosu. Definicja: Wskaźnikiem stosu nazywamy rejestr zawierający adres ostatnio zapisanej komórki (wierzchołka) stosu Stos wykorzystywany jest najczęściej do zapamiętania adresu bazowego programu przy wywołaniu podprogramu.
Wykorzystanie stosu do wywołania podprogramów
Zasada przetwarzania potokowego Przypomnienie: cykl rozkazowy składa się z wielu faz w najprostszej wersji z fazy pobrania i wykonania rozkazu
Zasada przetwarzania potokowego Jeżeli w procesorze wydzielić dwa stanowiska obsługi" - jedno dla pobierania rozkazów, a drugie dla ich wykonywania (rys), wówczas można równocześnie realizować obie fazy cyklu rozkazowego: pobieranie następnego rozkazu odbywa się w czasie, gdy jest wykonywany rozkaz poprzedni. Takie działanie, analogiczne do obróbki na taśmie produkcyjnej, nazywa się potokowym (pipeline).
Dwustopniowy potok rozkazów Zakładając, że czas trwania każdej fazy cyklu jest taki sam, uzyskuje się dwukrotne skrócenie czasu kończenia kolejnych rozkazów (uzyskiwania wyników), mimo że sumaryczny czas cyklu pozostaje niezmieniony.
Powody przestojów w przetwarzaniu potokowym Wystąpienie w programie rozgałęzień zależnych od efektów poprzedzającej operacji (skoków warunkowych) - w takim przypadku kolejny pobrany rozkaz może okazać się nieprzydatny i trzeba pobierać inny, wskazany przez wykonywany rozkaz skoku. Następuje wówczas opróżnienie potoku (flush) powodujące chwilowy przestój jednostki wykonawczej, Z kolei przestoje jednostki pobierającej rozkazy pojawiają się wtedy, gdy samo wykonanie rozkazu wymaga kontaktu z pamięcią dla odczytania lub zapisania argumentów.
Potoki wielostopniowe Współczesne procesory stosują wielostopniowe przetwarzanie potokowe (liczba stopni wynosi od kilku do kilkunastu), a dla zredukowania strat wydajności wprowadza się rozwiązania sprzętowo-programowe, takie jak równoczesny dostęp do pamięci rozkazów i pamięci danych czy dynamiczne przewidywanie skoków.
Potok pięciostopniowy Blok IF pobiera rozkazy, odczytując pamięć I-cache według licznika rozkazów. Słowo rozkazowe jest następnie przekazywane do bloku dekodowania ID i powoduje odczytanie argumentów operacji z właściwych rejestrów i przekazanie ich do bloku wykonawczego EX/AC. Blok ten zawiera jednostkę arytmetyczno-logiczną i wykonuje odpowiednie działanie na argumentach. Stopień MA obsługuje pamięć danych i jest aktywny tylko w rozkazach load i store, na jego wyjściu pojawia się słowo odczytane z D-cache lub wynik przekazany ze stopnia EX. W ostatniej fazie cyklu, WB następuje wpisanie wyniku do rejestru docelowego.
Potok pięciostopniowy Każdym cyklu jest przetwarzanych jednocześnie 5 rozkazów znajdujących się na różnych etapach realizacji (a kolejne rozkazy są kończone w każdym takcie zegara.
Konflikty w przetwarzaniu potokowym Konflikt zasobów (structural hazard) powstaje wówczas, gdy w tym samym czasie rozkazy będące w różnych fazach swojego cyklu korzystają z tych samych zasobów komputera
Konflikty w przetwarzaniu potokowym Konflikt danych (data hazard) polega na tym, że zmiany danych w rejestrach lub w pamięci następują w innym czasie, niż wynika to z logicznego następstwa rozkazów w programie. Można uniknąć przestoju potoku, gdyż wprawdzie zawartość rejestru nie została zaktualizowana, ale w takcie 3. jest już dostępna na wyjściu bloku EX i można ją przekazać jako argument kolejnego rozkazu - wymaga to utworzenia w strukturze potoku drogi na skróty" i układu wykrywającego tę sytuację
Konflikty w przetwarzaniu potokowym Najbardziej kłopotliwe, trudne do usunięcia i obniżające efektywność przetwarzania potokowego są konflikty sterowania (control hazard). Powstają one przy wykonywaniu rozkazów rozgałęzienia programu, które z natury rzeczy zakłócają sekwencję rozkazów, a jeżeli są późno zidentyfikowane, to powodują konieczność zapełniania potoku od nowa, co skutkuje stratą kilku cykli (tzw. kara za skok").
Hyper-Treading (HT) Hyper-Treading (HT) emuluje obecność 2 układów nazywanych procesorami logicznymi
Core i7 4 rdzenie i więcej Czterordzeniowy procesor Intela Core 2 Quad Q6600, Q6400 i Q6300 to właściwie dwa procesory Core 2 Duo w jednej obudowie. Prawdziwym czterordzeniowym procesorem jest Phenom firmy AMD
Core i7 4 rdzenie i więcej Core i7 jest pierwszym procesorem wykorzystującym mikroarchitekturę Nehalem, będącą następczynią Core. Nowe procesory, które trafiły na rynek w listopadzie, są układami 4-rdzeniowymi, ale dzięki odreanimowanej i usprawnionej technologii HyperThreading system operacyjny i aplikacje widzą je jako 8-rdzeniowe.
Core i7 Dotychczas stosowaną szynę FSB zastąpiła magistrala QPI (Intel QuickPath Interconnect). Zasada jej działania jest bardzo zbliżona do zasady działania szyny HyperTransport w procesorach AMD. Kolejna zmiana to umieszczenie kontrolera pamięci w procesorze, a nie - jak było do tej pory - w chipsecie. To rozwiązanie od lat z powodzeniem stosuje AMD. Ciekawostką jest to, że zintegrowany z procesorem kontroler obsługuje nie dwa, a trzy kanały pamięci. A zatem w systemie może być sześć kości pamięci zamiast czterech. Kontroler obsługuje tylko najwolniejsze pamięci DDR3 o częstotliwości do 1066 MHz. Nehalem został dodatkowo wyposażony w pamięć podręczną trzeciego poziomu. Core i7 ma jej aż 8 MB. Ograniczona została natomiast pamięć L2. Obecnie każdy z rdzeni będzie miał do dyspozycji zaledwie 256 KB pamięci L2. Wszystkie elementy procesora znajdują się w jednym kawałku krzemu, co dotąd nie było stosowane przez Intela.
Kontroler pamięci procesor czy Chipset?
Ile rdzeni? Procesor dla graczy Procesor czterordzeniowy jest najwydajniejszy. Jest to prawdą, jeżeli mamy do czynienia z aplikacjami profesjonalnymi, np. do tworzenia animacji i grafiki, takimi jak 3ds Max i Cinema 4D. Jednak programiści piszący gry wciąż jeszcze przymierzają się do wykorzystania wielu rdzeni. W wypadku starszych, ciągle popularnych gier nadal największy wpływ na liczbę uzyskiwanych klatek ma częstotliwość rdzeni, a nie ich liczba. Jeśli chce się przyspieszyć, obecnie dostępne gry, wystarczy tańszy procesor z dwoma rdzeniami. Za oszczędzone pieniądze lepiej przeznaczyć na szybszą kartę graficzną. Ta sytuacja będzie się jednak z czasem zmieniała.
Propozycja AMD - a może 3 rdzenie? Ile rdzeni?
Pamięć CACHE Trzy poziomy pamięci podręcznej Pierwsze dwa poziomy umieszczone są bezpośrednio w strukturze krzemowej mikroprocesora. Pamięci L1, L2 od 16 do 64 kb Pamięć trzeciego poziomu (L3) umieszczone są wewnątrz obudowy procesora lub na jego płytce drukowanej. Pamięć L3 do 1024 kb (dla Athlona 64)
Zasoby pamięciowe komputera
Zasoby pamięciowe komputera System zarządzania pamięcią zapewnia dostęp procesora do tych różnorodnych zasobów w sposób niewidoczny dla programu użytkowego. Zadanie to jest realizowane sprzętowo na poziomie pamięci cache i programowo - przez system operacyjny - na poziomie pamięci wirtualnej. W obu przypadkach obowiązuje ta sama koncepcja: niewielki fragment pamięci wyższego poziomu jest w miarę potrzeby kopiowany do pamięci niższego poziomu, bliższego procesora.
Zasoby pamięciowe komputera
Pamięć buforowa cache Działanie pamięci buforowej cache, (zwanej pamięcią podręczną): prawie zawsze, kiedy procesor poszukuje jakiegoś miejsca w pamięci, jego kopia jest w cache - przypadek taki nazywa się trafieniem (hit); jeżeli odczytywany adres nie jest odwzorowany w cache, czyli próba odczytu jest chybiona (miss); wówczas następuje odczyt z pamięci głównej, ale równocześnie do cache jest przepisywany blok (zwany linią) kilku lub kilkunastu sąsiednich bajtów wraz z ich adresem. W ten sposób chybienia powodują uzupełnianie pamięci buforowej aż do momentu, kiedy nie będzie w niej miejsca i wtedy usuwa się jedną linię - np. tę, która była najdawniej używana.
Pamięć buforowa cache Efektywność pamięci buforowej określa tzw. współczynnik trafień, czyli procent trafionych prób odczytu pamięci. W rzeczywistych systemach współczynnik trafień wynosi zależnie od programu 97% - 99%.
Pamięć buforowa cache Efektywność pamięci buforowej określa tzw. współczynnik trafień, czyli procent trafionych prób odczytu pamięci. W rzeczywistych systemach współczynnik trafień wynosi zależnie od programu 97% - 99%.
Pamięć buforowa cache Ponieważ w pamięci buforowej znajdują się fragmenty pochodzące z różnych, niespójnych, obszarów przestrzeni adresowej, muszą w niej być skopiowane nie tylko dane, ale i ich adresy. W katalogu adresów mogą być zapisane również inne informacje dotyczące np. aktywności poszczególnych linii, które są używane przez algorytmy usuwania niepotrzebnych bloków.
Architektura Look-aside ( patrz w bok ) W układzie konwencjonalnym (często określany nazwą Look- Aside) którym mamy do czynienia w procesorach x86 i Pentium, pamięć podręczna dołączona jest równolegle do magistrali pamięciowej. procesor odwołuje do pamięci cache wykorzystując magistralę pamięciową. częstotliwości pracy cache jest więc taka sama jak pamięci głównej, jedynie czas dostępu może ulec skróceniu.
Architektura Look-throught ( patrz w bezpośrednio ) Drugi sposób podłączenia pamięci CACHE określany jest mianem Look- Through lub Inline Cache. Procesor, zanim sięgnie do pamięci głównej, napotyka układ pamięci podręcznej. Ta z kolei, sprzężona jest z pamięcią główną poprzez właściwą magistralę pamięciową. Cache może więc być taktowany z prędkością większą niż sama magistrala pamięciowa, na przykład dwa razy szybciej - takie rozwiązanie zastosowano w procesorze Pentium II.
Poziomy pamięci cache Pamięci wielodrożne są często stosowane w różnych konfiguracjach i na różnych poziomach hierarchii - obecnie w procesorach spotyka się pamięci cache wielopoziomowe: poziom pierwszy (L1), zintegrowany z procesorem, stanowią osobne pamięci rozkazów (l-cache) i danych (D-cache), poziom drugi (L2) zajmuje większa i wolniejsza wspólna pamięć również umieszczona w module procesora, trzeci poziom cache (L3) można dołączyć w osobnym module.
Poziomy pamięci cache
Pamięć wirtualna Pamięć wirtualna, ma stwarzać wrażenie, iż każde zadanie dysponuje pamięcią o wielkości wynikającej z dostępnego formatu adresu. W rzeczywistości fizyczna pojemność pamięci głównej (RAM) jest mniejsza i zamierzony efekt może być osiągnięty, jeżeli do pamięci głównej będą w porę przenoszone potrzebne fragmenty wirtualnej przestrzeni adresowej fizycznie umieszczone w odpowiednio dużej pamięci zewnętrznej (dyskowej). Zadanie to jest realizowane metodą tzw. stronicowania (paging) z użyciem środków sprzętowych wbudowanych w strukturę systemu zarządzania pamięcią procesora oraz środków programowych, którymi dysponuje system operacyjny.
Pamięć wirtualna Informacja o aktualnym położeniu wszystkich stron wirtualnych jest przechowywana przez system operacyjny w katalogu zwanym tablicą stron.
Pamięć wirtualna Ponieważ translacja adresu wirtualnego następuje przy każdym kontakcie z pamięcią (pobranie rozkazu, odczytanie i zapisanie danych), musi odbywać się na tyle szybko, żeby nie spowalniać cyklu rozkazowego. Z tego względu część tablicy stron jest realizowana w postaci pamięci cache zwanej TLB (translation lookaside buffer) zawierającej ostatnio używane pozycje katalogu stron.
Pamięć wirtualna mechanizm stronicowania pozwala traktować pamięć masową jako przedłużenie pamięci operacyjnej; część kodu programu znajduję się w pamięci operacyjnej, pozostała w pamięci masowej, jeżeli w trakcie realizacji programu następuje odwołanie do pamięci masowej, blok danych z tej pamięci ładowany jest do pamięci RAM, a inny blok danych z pamięci RAM do pamięci masowej (dla zwolnienia miejsca); długie adresy (wirtualne) zawarte w programie tłumaczone są na krótsze (fizyczne) adresy pamięci operacyjnej; w trakcie translacji sprawdzana jest także dostępność danych do których odwołuje sie program;
Tryby pracy procesora Tryb rzeczywisty: procesor przełącza sie w stan odwzorowujący zachowanie procesora 16-to bitowego pracuje jako bardzo szybki procesor 8086. Tryb chroniony: tryb wprowadzony w celu ochrony poszczególnych zadań pracujących pod kontrolą wielozadaniowego systemu operacyjnego; układy sprzętowe wbudowane w procesor kontrolują odwołania do pamięci i wydają zezwolenie na dostęp.
Tryby pracy procesora tryb wirtualny: stanowi kombinacje duch wcześniej omawianych trybów; każdy z programów (procesów) widzi swój własny procesor 8086 pracujący w trybie rzeczywistym; system jako całość dysponuje jednak zaczerpniętymi z trybu chronionego mechanizmami uniemożliwiającymi kolizje pomiędzy współuczestniczącymi zadaniami
Rozwój procesora
Rozwój procesora
Ewolucja procesorów
Ewolucja procesorów
Najważniejsze spośród rozszerzeń dodanych do architektury procesorów MMX (MultiMedia extenntion) miała na celu lepszy przydział mocy obliczeniowej i zasobów procesora dla operacji związanych z przetwarzaniem multimediów. Zmiany w architekturze: Zgrupowanie rozkazów w większe bloki (SIMD) Nowe zespoły rejestrów (rejestry MMX) Nowe rozkazy Zwiększona pamięć podręczna, bufor rozkazów oraz długość potoków przetwarzania instrukcji
Najważniejsze spośród rozszerzeń dodanych do architektury procesorów SSE ok. 70 nowych poleceń. SSE 2 poszerza środowisko działania procesora o nowe typy danych i nowe instrukcje SSE 3 13 nowych poleceń oraz przyspieszenie wykonywania dotychczasowych
Dziękuję za uwagę