ARCHITETURA SYSTEMÓW OMPUTEROWYCH współczesne architektury c Dr inż. Ignacy Pardyka UNIWERSYTET JANA OCHANOWSIEGO w ielcach 1 Rok akad. 2014/2015 1 lasyczne procesory sekwencyjne i potokowe 1 Instytut Fizyki, Zakład Informatyki, e-mail: ignacy.pardyka@ujk.edu.pl c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 1 / 36 c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 2 / 36 lasyczne procesory sekwencyjne i potokowe lasyczne procesory sekwencyjne i potokowe lasyczny cykl pracy procesora sekwencyjnego 1 lasyczne procesory sekwencyjne i potokowe pobieranie instrukcji (IF, ang. fetch) dekodowanie instrukcji (ID, ang. decode) wykonywanie instrukcji (EX, ang. execute) zapisywanie rezultatu (WB, ang. write back). c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 3 / 36 c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 4 / 36
lasyczne procesory sekwencyjne i potokowe lasyczne procesory sekwencyjne i potokowe lasyczny cykl pracy procesora potokowego Mikroarchitektura potokowa: koncepcja struktury w każdym okresie zegara: zaczyna się cykl jakiejś instrukcji kończy się cykl instrukcji wcześniej pobranej do potoku pobieranie instrukcji (IF, ang. fetch) dekodowanie instrukcji (ID, ang. decode) wykonywanie instrukcji (EX, ang. execute) zapisywanie rezultatu (WB, ang. write back). c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 5 / 36 pod wpływem zegara efekty pracy zapisywane do rejestrów potokowych dane i sygnały sterujące pobierane z rejestrów potokowych w fazie WB zapis wyniku do rejestru roboczego w fazie ID pobieranie operandów z rejestrów w fazie EX wykonanie operacji możliwe hazardy danych i sterowania. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 6 / 36 lasyczne procesory sekwencyjne i potokowe lasyczne procesory sekwencyjne i potokowe Mikroarchitektura potokowa: forwarding Mikroarchitektura potokowa: usprawnienia dodatkowe ścieżki (ang. bypasses, forwarding lines) wyniki instrukcji dostępne przed jej fazą WB. wydajność pracy procesora - udoskonalenia do realizacji fazy EX dedykowane jednostki funkcjonalne skracanie okresu zegara zwiększanie liczby faz cyklu instrukcji. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 7 / 36 c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 8 / 36
lasyczne procesory sekwencyjne i potokowe lasyczne procesory sekwencyjne i potokowe Mikroarchitektura potokowa: superpotokowość Mikroarchitektura potokowa: superskalarność większa liczba etapów skracanie okresu zegara większa wydajność przykładowe implementacje: architektury Alpha, PowerPC,... PowerPC G4e 7-12, ARM11 8+, Athlon 10-17, PentimPro 12+, Core i 16+, PowerPC G5 16-25, Pentium-4E 31+, UltraSPARC-T1/T2/T3: 6, 8-12. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 9 / 36 równoległa praca potoków. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 10 / 36 lasyczne procesory sekwencyjne i potokowe lasyczne procesory sekwencyjne i potokowe Mikroarchitektura potokowa: superskalarność Superskalarność: implementacje równoległe pobieranie kilku instrukcji równoległe dekodowanie i kierowanie do dedykowanych etapów EX możliwa różna długość potoków prostsze instrukcje wykonywane w mniejszej liczbie okresów zegara złożona sieć ścieżek dodatkowych (bypasses) w każdym okresie zegara możliwe zakończenie kilku instrukcji jednocześnie. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 11 / 36 pseudosuperskalar (decyzje kompilatora) przykład: Intel 860 (1989) superskalar z kolejnym wykonywaniem instrukcji in-order-execution przykład: Intel Pentium (1993) superskalar z kolejnym rozpoczynaniem i niekolejnym kończeniem instrukcji in-order-issue, out-of-order-completion przykład: Cyrix Cx8x86 (1994) superskalar z niekolejnym wykonywaniem instrukcji out-of-order-execution przykłady: Intel Pentium Pro (1995) niemal wszystkie współczesne procesory uniwersalne. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 12 / 36
lasyczne procesory sekwencyjne i potokowe lasyczne procesory sekwencyjne i potokowe Procesory superskalarne: implementacje z kolejnym wykonywaniem instrukcji: in-order-execution Procesory superskalarne: implementacje z kolejnym rozpoczynaniem i niekolejnym kończeniem instrukcji o równoległym wykonaniu instrukcji decyduje procesor równoległość gdy brak zależności od instrukcji poprzednich w potoku potoki mogą być identyczne lub różne Intel Pentium: drugi potok do wykonywania prostych instrukcji SuperSPARC I, Alpha 21064: odrębne potoki dla instrukcji stałoprzecinkowych, zmiennoprzecinkowych, wymiany z pamięcią, skoków synchroniczna praca potoków (wstrzymywanie też) okno instrukcji stopień szeregujący dobiera instrukcje tak, aby w każdym cyklu rozpocząć tyle samo np. Intel Pentium (P5). zasada: in-order-issue, out-of-order-completion instrukcje pobierane i dekodowane po kilka naraz w kolejności programowej stopień szeregujący rozpoczyna wykonanie w kolejności programowej potoki mogą być wstrzymywane indywidualnie wzrost wydajności synchronizacja utrudniona ze względu na niekolejne kończenie instrukcji. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 13 / 36 c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 14 / 36 lasyczne procesory sekwencyjne i potokowe lasyczne procesory sekwencyjne i potokowe Procesory superskalarne: implementacje z niekolejnym wykonywaniem instrukcji: out-of-order-execution Synchronizacja w procesorach superskalarnych ze zmianą kolejności instrukcji zdekodowane instrukcje gromadzone w stopniu szeregującym instrukcja kierowana do wykonania po przygotowaniu argumentów źródłowych wykonanie może być rozpoczynane w kolejności innej niż programowa szeregowanie centralny bufor instrukcji (np. Intel P6, AMD 6) odrębny bufor dla każdego potoku wykonawczego (np. AMD 5) aktualność PC po przejściu przez potok stopień RETIRE oczekiwania na zakończenie instrukcji poprzedzających ostateczna modyfikacja kontekstu procesora i pamięci implementacja we współczesnych procesorach: Intel Pentium 4, Intel Core, AMD 8. przykładowa sekwencja instrukcji: addu $4,$3,$2 addu $2,$5,$4 jaką wartość pobierze pierwsza z instrukcji? zakończenie drugiej przed odczytaniem $2 w pierwszej powoduje błędne wykonanie pierwszej hazard W-A-R procesor musi gwarantować poprawne wykonanie! jaką wartość $4 pobierze trzecia instrukcja, jeśli druga zakończy się przed pierwszą? hazard W-A-W addu $4,$3,$2 addu $4,$4,$9 addu $2,$5,$4 c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 15 / 36 c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 16 / 36
lasyczne procesory sekwencyjne i potokowe Synchronizacja w procesorach superskalarnych źródła hazardów W-A-R i W-A-W Procesory superpotokowo-superskalarne lasyczne procesory sekwencyjne i potokowe wielokrotne używanie tych samych zmiennych (rejestrów procesora) do przechowywania różnych wartości powodowane: ograniczoną liczbą rejestrów dążeniem do przejrzystości programu występowaniem pętli w programie rozwiązanie: zwiększenie liczby rejestrów stosowanie techniki przemianowania rejestrów. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 17 / 36 IBM POWER1, SuperSPARC, Alpha 21064,... dwa potoki: UltraSPARC-T2/T3, Cortex-A8 & A9, Atom, Bobcat trzy potoki: Pentium-Pro/II/III/M, Athlon, Pentium-4, Athlon 64/Phenom, Cortex-A15 cztery potoki: UltraSPARC-III/IV, PowerPC G4e, Core 2, Core i, Core i*2, Bulldozer pięć potoków: PowerPC G5 sześć potoków: Itanium. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 18 / 36 lasyczne procesory sekwencyjne i potokowe Procesory VLIW 1 lasyczne procesory sekwencyjne i potokowe instrukcje grupowane w słowo wielobajtowe (16+) VLIW: very long instruction word analogia do superskalarności, głównie na etapie EX kompilator ma wstawiać NOP, gdy wykrywa hazard Intel EPIC : explicitly parallel instruction computing: IA64 sześć potoków z EPIC: Itanium. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 19 / 36 c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 20 / 36
Uzależnienia danych i latencja przykładowa sekwencja instrukcji: a = b * c; d = a + 1; tych instrukcji procesor superskalarny nie może wykonać równolegle druga instrukcja może być wykonana przez procesor dopiero po zakończeniu pierwszej w procesorze 1-potokowym ten hazard R-A-W był eliminowany przez obejścia (bajpasy), wstrzymania sprzętowe, lub kompilator wstawiał NOP latencja (ang. latency): liczba okresów zegara od wejścia w etap EX do chwili, gdy poprawne rezultaty stają się dostępne dla kolejnej instrukcji dodawanie integer: 1 okres zegara dodawanie float: 3-6 okresów zegara dzielenie: kilkanaście okresów dostęp do pamięci: zależnie od cache. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 21 / 36 Rozgałęzienia i predykcja rozgałęzień przykładowa sekwencja instrukcji: if (a > 5) b = c; else b = d; po kompilacji otrzymujemy kod typu: cmp a, 5 ; a > 5? ble L1 mov c, b ; b = c br L2 L1: mov d, b ; b = d L2:... tóre instrukcje powinny być pobierane w fazie IF? Założyć, że warunek spełniony, czy nie? Będzie wiadomo dopiero na etapie EX. Gdy przewidywanie błędne usunąć z potoku niepotrzebne instrukcje. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 22 / 36 Predykcja rozgałęzień Predykaty predykcja statyczna: kompilator ustawia stosowny bit w kodzie instrukcji rozgałęzienia starsze procesory wymagały konwencji: rozgałęzienia wstecz domyślnie realizowane rozgałęzienia do przodu domyślnie nierealizowane predykcja dynamiczna: tabela BPT (branch prediction table): zawiera adresy rozgałęzień i bity informujące o realizacji w procesorze Pentium-Pro/II/III (12+ etapów potoku) kara za błędną predykcję wynosi 10-15 cykli zegarowych. przykładowy kod zawierający rozgałęzienia: cmp a, 5 ; a > 5? ble L1 mov c, b ; b = c br L2 L1: mov d, b ; b = d L2:... można zastąpić kodem z warunkową instrukcją przesłań: cmp a, 5 ; a > 5? mov c, b ; b = c cmovle d, b ; if le then b = d bity predykatów (tutaj: le) ustawiane przez wcześniejsze instrukcje procesory z predykatami: Alpha, MIPS, SPARC, ARM, Intel IA64. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 23 / 36 c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 24 / 36
Zmiana kolejności instrukcji i przemianowanie rejestrów 1 lasyczne procesory sekwencyjne i potokowe dynamiczna, sprzętowa zmiana kolejności w trakcie realizacji programu, out-of-order execution (OoO, OOE) uwzględniać zależności pomiędzy instrukcjami odwzorować rejestry w inne rejestry eliminując zależności prowadzące do hazardów i zezwalając na równoległą pracę potoków (superskalarność) statyczna zmiana kolejności instrukcji na etapie kompilacji programu (opcja optymalizacji kodu) przykładowe implementacje OoO: MIPS R10000, Alpha 21264, POWER/PowerPC, większość współczesnych OoO - kosztowne rozwiązanie hardware owe (brainiac) speed-demon angażowanie kompilatora, upraszczanie struktury procesora, zwiększanie częstotliwości zegara. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 25 / 36 c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 26 / 36 1 lasyczne procesory sekwencyjne i potokowe 1 lasyczne procesory sekwencyjne i potokowe c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 27 / 36 c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 28 / 36
Potokowość w architekturach CISC Większa złożoność hardware u: ILP (instruction-level parallelism), czy większa częstotliwość zegara: Clock Speed? c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 29 / 36 złożone instrukcje architektury CISC konwertowane na sekwencje prostych instrukcji typu RISC (micro-ops) zasadniczo brak możliwości statycznej optymalizacji kodu na etapie kompilacji (poziom mikro-instrukcji niedostępny dla kompilatora) rozwiązanie stosowane przez Intela i NexGen. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 30 / 36 Procesory SMT 1 lasyczne procesory sekwencyjne i potokowe c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 31 / 36 procesor wielowątkowy (ang. Simultaneous multithreading (SMT) processor) kawałki kodu należące do odrębnych wątków programu mogą być realizowane przez odrębne struktury procesora gdy w jednym z potoków bąbelki, to do drugiego kierowane są instrukcje z odrębnego wątku procesu sensowne zastosowanie: stacje graficzne (3D), przetwarzanie obrazów i wideo. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 32 / 36
Procesory SMT i wielordzeniowe w pojedynczym układzie scalonym wiele rdzeni procesorów (ang. multiprocessor, multi-core processor) Intel Pentium-4 (SMT, hyper-threading) dwa wątki Intel Core i, Core i*2 (2-thread SMT) Sun UltraSPARC-T1 (Niagara), 8-rdzeniowy, każdy rdzeń 4-thread SMT Sun UltraSPARC-T2, 8-rdzeniowy, każdy rdzeń 8-thread SMT Sun UltraSPARC-T3, 16-rdzeniowy, każdy rdzeń 8-thread SMT. 1 lasyczne procesory sekwencyjne i potokowe c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 33 / 36 c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 34 / 36 Literatura SIMD Literatura A. S. Tanenbaum, Strukturalna organizacja systemów komputerowych, Helion, 2006. J. Biernat, Architektura komputerów, OWPW, 2005. SIMD (single instruction, multiple data) operandami dla instrukcji są wektory zastosowanie: przetwarzanie obrazów, video, multimedia implementacje: superkomputery SPARC (VIS), x86 (MMX/SSE/AVX), PowerPC (AltiVec), ARM (NEON),... D.M. Harris, S.L. Harris, Digital Design and Computer Architecture, Elsevier, 2013. R. Hyde, Profesjonalne programowanie, Helion, 2005. R. Hyde, Asembler. Sztuka programowania, Helion, 2004. G. Mazur, Architektura systemów komputerowych, http://wazniak.mimuw.edu.pl. P.A. Carter, PC Assembly Language, http://www.drpaulcarter.com/pcasm/. c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 35 / 36 c Dr inż. Ignacy Pardyka (Inf U J ) AS: współczesne architektury Rok akad. 2014/2015 36 / 36