cache - Artur Bartoszewski

advertisement
Architektura
systemów
komputerowych
dr Artur Bartoszewski
Procesor – część II
Rejestry procesora dostępne programowo
A
B
D
H
F
C
E
L
PC
SP
SP - wskaźnik stosu
PC - licznik rozkazów
A – Akumulator
Zawiera jeden z operandów
działania i do niego przekazywany
jest wynik
B,C,D,E,H,L – rejestry robocze
(uniwersalne)
F - rejestr znaczników
Rejestry procesora dostępne programowo
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
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.
Stos
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.
1; 2; 3; 4; 5
5
4
3
2
1
5; 4; 3; 2; 1
5
Stos

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.
Wskaźnik
stosu
5
4
3
2
1
Wskaźnikiem stosu nazywamy rejestr zawierający
adres ostatnio zapisanej komórki (wierzchołka) stosu
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.
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").
Procesory logiczne – technologia HT
Rejestry
Rejestry
Aparat wykonawczy (ALU)
Pamięć podręczna (CACHE)
Magistrala
systemowa
Pamięć operacyjna (RAM)
Hyper-Treading (HT) –
procesor posiada dwa
zestawy rejestrów dzięki
czemu emuluje obecność
dwóch układów
nazywanych procesorami
logicznymi
Pamiętajmy: program
„widzi” procesor jako
zestaw rejestrów.
Procesory fizyczne - rdzenie
Rejestry
Rejestry
Rejestry
Rejestry
Aparat
wykonawczy
Aparat
wykonawczy
Aparat
wykonawczy
Aparat
wykonawczy
CACHE
CACHE
Pamięć podręczna (CACHE)
Magistrala
systemowa
Pamięć operacyjna (RAM)
Magistrala
systemowa
Pamięć operacyjna (RAM)
Procesory fizyczne - rdzenie
W praktyce spotykam też hybrydę dwu powyższych schematów.
W procesorze Intel Core i7 każdy z rdzeni posiada własną
pamięć podręczną poziomów L1 i L2, natomiast pamięć poziomu
L3 jest wspólna.
L2
L2
Źródło: http://nvision.pl/img/art/procesory/intel_core_i7/intel_core_i7-2.jpg
L2
L2
Procesory fizyczne – rdzenie + HT
Rejestry
Rejestry
Rejestry
Rejestry
Aparat
wykonawczy
Aparat
wykonawczy
CACHE L2
CACHE L2
CACHE L3
Magistrala
systemowa
Pamięć operacyjna (RAM)
W najnowszych
procesorach (Core i7) dla
każdego z fizycznych
rdzeni zastosowano
technologię HyperTreading.
Oznacza to, że każdy
rdzeń widziany jest jako
dwa procesory logiczne i
może robić dwie rzeczy
naraz, np. czterordzeniowy
procesor Core i7 może
wykonywać 8 wątków
jednocześnie.
Pamięć CACHE
CACHE
zewnętrzny
CACHE
wbudowany
23
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.
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.
Organizacja pamięci CHAHE
CPU
CACHE
L1
CACHE
L2
Granice kości
krzemowej procesora
CACHE
L3
RAM
Architektura Look-aside („patrz w bok”)
W układzie konwencjonalnym
(często określany nazwą LookAside) 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.
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%.
Architektura Look-throught („patrz w
bezpośrednio”)
Drugi sposób podłączenia pamięci
CACHE określany jest mianem LookThrough 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.
Pamięć buforowa cache


 W e współczesnej architekturze procesorów nie jest
już możliwe odwołanie się procesora do pamięci
RAM bez pośrednictwa pamięci CAHE
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.
Zasoby pamięciowe komputera
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
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
3DNow! - rozszerzenie architektury procesorów x86
stworzone przez firmę AMD, znacznie zwiększające
wydajność obliczeń zmiennoprzecinkowych, potrzebne
do odtwarzania grafiki trójwymiarowej i multimediów.

Był to pierwszy przypadek wprowadzenia takich istotnych
zmian przez firmę inną niż Intel.

Technologia 3DNow! uzupełnia i rozszerza możliwości
akceleratorów graficznych, przyspieszając obliczenia
zmiennoprzecinkowe występujące w początkowych etapach
przetwarzania grafiki.

Technologia ta pozwala uzyskać do 4 wyników
zmiennoprzecinkowych w ciągu jednego cyklu pracy
procesora.
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
 SSE 4 - wprowadza 54 nowe instrukcje rozszerzenie istniejących instrukcji wektorowych
operujących na liczbach całkowitych oraz
zmiennoprzecinkowych
 SSE 5 – (planowane) dodaje 82 nowe rozkazy: 30
działających na liczbach zmiennoprzecinkowych
oraz 52 na liczbach całkowitych
Najważniejsze spośród rozszerzeń dodanych
do architektury procesorów
AVX (Advanced Vector Extensions) - kolejne rozszerzenie zestawu
instrukcji SSE opublikowane w marcu 2008 przez firmę Intel.
Pierwsze implementacje sprzętowe są zapowiadane na 2010 rok.
Najważniejsze zmiany:
1.
W AVX wprowadzono 256-bitowe rejestry - 2 razy większe niż
wykorzystywane dotychczas w SSE. Nowych rejestrów jest 16 i w
asemblerze noszą nazwy YMM0...YMM15. W dalszych wersjach AVX
mogą pojawić się jeszcze większe rejestry, 512-, a nawet 1024bitowe.
2.
Dodano kilka rozkazów działających wyłącznie na rejestrach YMM (19
instrukcji).
3.
Dodane 4-argumentowe rozkazy akumulujące wyniki mnożenia
wektorów liczb zmiennoprzecinkowych
4.
Dodane specjalizowane instrukcje wspomagające szyfrowanie AES
(6 instrukcji).
Dziękuję za uwagę
Download