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