skompilowany 80 lat

Transkrypt

skompilowany 80 lat
Wydajność obliczeń
a architektura procesorów
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
1
Wydajność komputerów



Modele wydajności-> szacowanie czasu wykonania zadania
Wydajność – szybkość realizacji wyznaczonych zadań, np.:
 liczba rozkazów na sekundę
 CPI (clocks per instruction) – liczba taktów zegara do
wykonania rozkazu
Próba szacowania czasu:
 jakie rozkazy procesora wykonywane są w celu realizacji
zadania
 jaki jest czas realizacji każdego z rozkazów (w liczbie
taktów – CPI dla każdego z rozkazów)
 jaka jest częstotliwość pracy procesora
 wymnożyć, wysumować - gotowe
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
2
Wydajność komputerów

Podstawowe parametry sprzętu:
– Częstotliwość zegara
– Drożność procesora (IPC jako odwrotność CPI)
– Przepustowość magistrali pamięć-procesor

Problem - dlaczego parametry podstawowych elementów
systemu komputerowego nie pozwalają na oszacowanie
jego wydajności przy realizacji praktycznych zadań?

złożoność architektury procesora

złożoność układu pamięci

współpraca sprzętu, systemu operacyjnego i kompilatorów,
interpreterów, maszyn wirtualnych
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
3
Architektura von Neumanna
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
4
„Prawo” Moore'a (1965!)
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
5
Przetwarzanie potokowe
•
•
•
•
•
począwszy od lat 60-tych
wzrost złożoności procesorów
wyróżnienie jednostek funkcjonalnych w procesorze
podział wykonania rozkazu na etapy
typowe etapy przetwarzania rozkazu (w pojedynczym
rozkazie w praktyce nigdy nie występują wszystkie fazy):
– obliczenie adresu rozkazu, pobranie rozkazu, dekodowanie
rozkazu, (obliczenie adresu argumentu, pobranie
argumentu)-być może wielokrotne, wykonanie operacji na
argumentach, obliczenie adresu wyniku, zapisanie wyniku
(niekoniecznie chodzi o zapis w pamięci)
– opis uproszczony dla dalszych rozważań: IF,ID,OF,IE,WB
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
6
Przetwarzanie potokowe
• ilustracja przetwarzania potokowego - przyrost szybkości działania:
– analiza zgrubna
• założenie tego samego czasu na przetwarzanie rozkazu:
wprowadzenie k-etapowego potoku zwiększa wydajność k-krotnie
(dla odpowiednio długiej sekwencji rozkazów)
– analiza „praktyczna”
• podawane przez producentów sprzętu:
 maksymalna liczba rozkazów kończonych w każdym takcie
zegara (ewentualnie mniejsza niż jeden) IPCmax
częstotliwość zegara taktującego procesor
• procesory o rozbudowanych potokach mogą kończyć jeden rozkaz w
każdym takcie i mieć znacznie szybsze taktowanie
• teoretycznie maksymalna wydajność procesora to iloczyn: drożność
procesora (IPCmax) x częstotliwość taktowania

Krzysztof Banaś
Obliczenia Wysokiej Wydajności
7
Przetwarzanie potokowe
• problemy przetwarzania potokowego:
– hazardy: sytuacje zaburzające idealne przetwarzanie potokowe (w
innych kontekstach na sytuacje zaburzające przetwarzanie
równoległe używa się nazw konflikty, zależności)
• hazardy zasobów – przetwarzanie dwóch rozkazów wymaga
dostępu do pojedynczego zasobu w tym samym czasie
• hazardy sterowania – związane z rozkazami skoku
• hazardy danych – związane z zależnościami między
argumentami jednocześnie przetwarzanych rozkazów (techniki
optymalizacji: przemianowanie rejestrów, przesyłanie
(forwarding) argumentów)
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
8
Hazardy sterowania
• Statystyka: skoki stanowią ponad 20% rozkazów
• Skoki bezwarunkowe:
– unikanie przestojów przez pobieranie z wyprzedzeniem
• Skoki warunkowe
– szczelina opóźnienia rozkazu (branch delay slot)
– przewidywanie rezultatu rozgałęzienia:
• skok nigdy nie wykonany
• skok zawsze wykonany
• statyczne przewidywanie (np. na podstawie kierunku skoku)
• dynamiczne przewidywanie (na podstawie historii skoków)
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
9
CISC

Chęć optymalizacji przetwarzania potokowego
doprowadziła do zmiany sposobu projektowania
procesorów – przejścia od architektur CISC do RISC
• architektura CISC - klasyczne procesory lat 60-tych i
70-tych XX wieku
• złożone rozkazy
–
–
–
–
złożone tryby adresowania
wiele trybów adresowania
różna długość rozkazów i znacząco różny czas wykonania
złożone pobieranie z pamięci i rozkodowywanie
• duża liczba rozkazów (na liście rozkazów procesora)
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
10
CISC
• złożony rozkaz:
– pobierz dwa argumenty z adresów w pamięci wyznaczonych przez
złożone tryby adresowania, wykonaj operację, zapisz wynik w
miejscu pamięci obliczonym w złożony sposób
• złożony tryb adresowania:
– obliczenie adresu na podstawie: adresu podstawowego, jawnie
określonego przesunięcia oraz przesunięcia odpowiadającego
indeksowi przechowywanemu w odpowiednim rejestrze, który
należy pomnożyć przez współczynnik skalowania
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
11
CISC
• zalety CISC
– ułatwienie programowania w asemblerze
– zmniejszenie liczby rozkazów w skompilowanym kodzie
(mniejsze wymagania co do szybkości przesyłania rozkazów i
rozmiaru pamięci podręcznej do ich przechowywania)
• wady CISC
– utrudnione działanie optymalizujących kompilatorów
– złożone dekodowanie rozkazów
– utrudniona realizacja przetwarzania potokowego
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
12
RISC
• rewolucja RISC lat 80-tych XX wieku
• ograniczenie liczby rozkazów procesora (złożone rozkazy
zamienione na sekwencje prostych rozkazów)
• ograniczenie liczby formatów rozkazów
• rozkazy proste i proste tryby adresowania
• oddzielenie rozkazów wykonywania operacji od rozkazów
pobierania z pamięci i zapisywania
– load-store architecture
• zwiększenie liczby rejestrów
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
13
RISC
• Zalety RISC:
–
–
–
–
duża szybkość ułatwionego rozkodowywania rozkazów
ułatwienie przetwarzania potokowego
umożliwienie zwiększenia częstotliwości zegara
ułatwienie działania optymalizujących kompilatorów
• Wady RISC:
– duża liczba rozkazów w kodzie
– konieczne szybkie przesyłanie rozkazów z pamięci (motywacja
dla rozwoju pamięci podręcznej)
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
14
Porównanie CISC-RISC
Parametry
Typowy
procesor CISC
Typowy
procesor RISC
liczba rozkazów
kilkaset
kilkadziesiąt
maksymalna długość rozkazu
kilkadziesiąt bajtów
kilka bajtów
liczba formatów rozkazów
kilkadziesiąt
kilka
liczba trybów adresowania
kilkadziesiąt
kilka
adresowanie pośrednie
tak
nie
maksymalna liczba argumentów
kilka
jeden
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
15
Procesory współczesne
• Wzrost złożoności układów mikroprocesorowych pozwala
poszerzyć ich funkcjonalność i przyspieszyć działanie
• Uzyskuje się to poprzez między innymi:
– wprowadzenie wielu jednostek funkcjonalnych realizujących ten sam
etap przetwarzania potokowego - superskalarność
– zwiększenie liczby etapów potoku – superpotokowość
– użycie układów przewidywania rozgałęzień
– pobieranie rozkazów z wyprzedzeniem (prefetching)
– realizowanie operacji w zmienionej kolejności (out-of-order
execution, pula kilkudziesięciu rozkazów przetwarzanych
współbieżnie)
– dodanie nowych rozkazów (np. wektorowych=SIMD)
– sprzętowe wsparcie wielowątkowości
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
16
Architektura Intel Core
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
17
VLIW – EPIC - IA64
• Wykonywanie poza kolejnością jest sprzeczne z
optymalnym stosowaniem kompilatorów – po co
kompilator ma ustalać optymalny przepływ obliczeń
skoro procesor i tak go zmieni
• Koncepcja: niech kompilator dba o kolejność wykonania
i decyduje o równoległości realizacji rozkazów
• VLIW – bardzo długie słowo maszynowe
• EPIC - kilka rozkazów do równoległego wykonania
jawnie kodowanych w jednym długim słowie
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
18
VLIW – EPIC - IA64
• Przerzucenie wykrywania równoległości i sterowania
równoległym wykonaniem na kompilator pozwala
zmniejszyć złożoność procesora
– brak jednostek wykonywania poza kolejnością
– brak jednostek przemianowania rejestrów
• Można zwiększyć liczbę rejestrów i jednostek
funkcjonalnych oraz (znacznie) rozmiar pamięci
podręcznej (do kilkunastu MB)
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
19
VLIW – EPIC - IA64
• IA-64 – architektura Intela oparta na ideach VLIW i
EPIC:
– predykatywne wykonywanie rozgałęzień
– spekulatywne ładowanie z pamięci
• Szczegóły techniczne procesorów Itanium:
–
–
–
–
słowo 128 bitów (3x41 rozkazy + 5 szablon)
4 FPU i 6 ALU
2x128 rejestrów
trzy poziomy pamięci podręcznej, do 16MB (i więcej)
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
20
Itanium 2
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
21
Wydajność komputerów raz jeszcze

Próba szacowania:
 jakie rozkazy procesora wykonywane są w celu realizacji
zadania (uwaga: różne kompilatory mogą użyć różnych
zestawów rozkazów)
 jaki jest czas realizacji każdego z rozkazów (w liczbie
taktów) (uwaga: czas realizacji rozkazu zależy od tego czy
rozkaz był niedawno używany (czy jest rozkodowany, w
L1), czy argumenty były niedawno używane (są w L1, L2,
L3...), czy rozkazy i dane pobierane są ze strony pamięci o
adresie w TLB, jakie inne rozkazy są wykonywane
współbieżnie przez procesor (hazardy))
 różnice mogą być kilkudziesięciokrotne lub nawet większe
(np. w przypadku błędu strony)
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
22
Wnioski

Przydatne wzory:

Tw = Lr x tc = Lr x CPIśr x tt = Lr / wydajność

wydajność = 1 / tc = IPCśr x częstotliwość_taktowania





wydajność wyrażana jest w liczbie rozkazów na jednostkę czasu
(np. sekundę lub nanosekundę)
czas wykonania w odpowiednich jednostkach czasu (sekundach,
nanosekundach)
wydajność maksymalna związana z IPCmax może znacząco się
różnić od wydajności rzeczywistej związanej z IPCśr, CPIśr i tc
IPCmax oblicza się na podstawie budowy i sposobu działania
procesora
IPCśr, CPIśr i tc dają się obliczyć w praktyce wyłącznie na
podstawie pomiarów: tc = Tw / Lr
Krzysztof Banaś
Obliczenia Wysokiej Wydajności
23

Podobne dokumenty