Architektura von Neumanna CPU pamięć wejście wyjście Jak zbudowany jest współczesny komputer? magistrala systemowa CPU jednostka centralna (procesor) pamięć obszar przechowywania programu i danych wejście urządzenia wejściowe wyjście urządzenia wyjściowe Wstęp do informatyki i architektury komputerów 2 Wstęp do informatyki i architektury komputerów 3 Schemat architektury typowego PC-ta Architektura PC wersja techniczna Wstęp do informatyki i architektury komputerów 4 Wstęp do informatyki i architektury komputerów 5
CPU jednostka centralna (procesor) przetwarza dane i nadzoruje wykonanie programu podstawowe funkcje pobieranie rozkazów do wykonania dekodowanie rozkazów pobieranie z pamięci potrzebnych danych wykonywanie rozkazów (przetwarzanie danych) zapisywanie wyników (do pamięci) rytm pracy CPU odmierza zegar wykonanie pojedynczej instrukcji może zająć od jednego do kilku(nastu) taktów zegara (typ CPU, rodzaj rozkazu) Wybrane procesory firmy Intel nazwa rok tranzystory mikrony zegar ALU / BUS MIPS 4004 1971 2300 10 0,1 Mhz 4 / 4 b 0,06 8080 1974 6000 6 2 Mhz 8 / 8 b 0,64 8086 1978 29000 3 5 Mhz 16 / 16 b 0,33 8088 1979 29000 3 4,77 Mhz 16 / 8 b 0,33 80286 1982 134000 1,5 6 Mhz 16 / 16 b 1 80386 1985 275000 1,5 16 Mhz 32 / 32 b 5 80486 1989 1200000 1 25 Mhz 32 / 32 b 20 Pentium 1993 3100000 0,8 60 Mhz 32 / 64 b 100 Pentium II 1997 7500000 0,35 233 Mhz 32 / 64 b 300 Pentium III 1999 9500000 0,25 450 Mhz 32 / 64 b 510 Pentium 4 2000 42000000 0,18 1,5 Ghz 32 / 64 b 1700 P4 Prescott 2004 125000000 0,09 3,6 Ghz 32 / 64 b 7000 Wstęp do informatyki i architektury komputerów 6 Wstęp do informatyki i architektury komputerów 7 CPU schemat ideowy CPU przykłady organizacji rejestrów ALU Arithmetic and Logic Unit jednostka arytmetyczno-logiczna (serce procesora wykonuje operacje arytmetyczne i logiczne) Rejestry - Registers pamięć wewnętrzna procesora - przechowuje częściowe wyniki obliczeń i pobrane z pamięci dane IR Instruction Register rejestr instrukcji (do niego ładowane są z pamięci instrukcje/rozkazy) PC - Program Counter licznik rozkazów (wskazuje w pamięci pozycję kolejnego rozkazu do wykonania) Wstęp do informatyki i architektury komputerów 8 Wstęp do informatyki i architektury komputerów 9
Uproszczony program główny CPU Trzy kategorie rozkazów procesora pc := 0; repeat instrukcja := pamiec[pc]; dekoduj (instrukcja); pobierz (argumenty); wykonaj (instrukcja); zapisz (wyniki); until ( instrukcja = STOP ) operacje przesyłania danych operacje arytmetyczno-logiczne operacje sterujące wykonaniem programu Wstęp do informatyki i architektury komputerów 10 Wstęp do informatyki i architektury komputerów 11 Operacje przesyłania danych Operacje arytmetyczno-logiczne załadowanie rejestru (z pamięci) zapisanie zawartości rejestru (do pamięci) kopiowanie danych pomiędzy rejestrami dodawanie, mnożenie, dzielenie... koniunkcja, negacja... przekształcanie adresów przemieszczają dane w obrębie CPU oraz pomiędzy CPU i pamięcią główną wykonują funkcje arytmetyczne i logiczne (obliczeniowe) na swoich argumentach Wstęp do informatyki i architektury komputerów 12 Wstęp do informatyki i architektury komputerów 13
Operacje sterujące Architektury CISC i RISC testy zawartości i porównywanie rejestrów rozgałęzienia i skoki (zmiana wartości PC) obsługa przerwań (sprzętowych i programowych) manipulują licznikiem rozkazów kontrolując kolejność wykonywania instrukcji CISC - Complex Instruction Set Computer rozbudowany język rozkazów procesora rozkazy o różnej długości, wykonujące nieraz złożone operacje rozbudowane i bardzo elastyczne tryby adresowania (dostępu do danych) zwarty i przejrzysty (jak na tak niski poziom abstrakcji) kod programów w języku asemblera spore ułatwienie dla konstruktorów kompilatorów (stosunkowo wysoki poziom języka docelowego) wydłużony cykl projektowy podatność na wystąpienie błędów projektowych Wstęp do informatyki i architektury komputerów 14 Wstęp do informatyki i architektury komputerów 15 Architektury CISC i RISC Architektury CISC i RISC RISC - Reduced Instruction Set Computer prosty i oszczędny język rozkazów procesora rozkazy mają jeden wspólny format (długość) i wykonywane są w pojedynczym cyklu maszynowym niewielka liczba dostępnych trybów adresowania (np. brak adresowania pośredniego ) prosta i przejrzysta struktura wewnętrzna wysoka wydajność przy stosunkowo niewielkim poborze energii mniejsze niż w wypadku CISC prawdopodobieństwo wystąpienia błędów projektowych pracochłonna implementacja kompilatorów (niski poziom języka docelowego) Architektura RISC lepsza niż CISC? trudno o jednoznaczną odpowiedź (choćby ze względu na ciągle rosnące koszty tworzenia oprogramowania) różnice pomiędzy obiema architekturami stopniowo zacierają się (Intel P6, AMD Athlon) wzrost liczby rejestrów ogólnego przeznaczenia i optymalizacja potoku rozkazów Wstęp do informatyki i architektury komputerów 16 Wstęp do informatyki i architektury komputerów 17
Zwiększanie wydajności procesora Zwiększanie wydajności CPU Główna idea: równoległość (na różnych poziomach) równoległe wykonywanie instrukcji (ang. ILP Instruction-level Parallelism) wykonywanie tej samej instrukcji na wielu elementach danych jednocześnie (ang. DLP - Data-level Parallelism) równoległe wykonywanie wątków (ang. TLP Thread-level Parallelism) Wstęp do informatyki i architektury komputerów 18 Wstęp do informatyki i architektury komputerów 19 Zwiększamy wydajność procesora - ILP Zwiększamy wydajność procesora - ILP Równoległe wykonywanie rozkazów ILP: Częstotliwość zegara Przepustowość magistrali pamięci Długość potoku przetwarzanie potokowe (pipelining) - wykonywanie różnych instrukcji może się częściowo nakładać wymyślono wiele technik ( sztuczek ): DDR Memory Controller architektura superskalarna wiele jednostek wykonawczych w pojedynczym CPU zmiana porządku wykonywania (out-of-order execution) oczywiście bez naruszenia logiki programu! wykonanie spekulatywne różne heurystyczne techniki polegające na przewidywaniu czy wykonanie danej operacji będzie potrzebne i wykonywaniu jej zawczasu (value prediction, branch prediction,...) każda w końcu natrafiała na ścianę będącą kombinacją kosztów, ograniczeń fizycznych oraz stopnia komplikacji Potrzebne nowe/inne podjeście Liczba jednostek wykonawczych CPU L1 Instr Cache L1 Data Cache HyperTransport Przepustowość magistrali I/O L2 Cache Wielkość i organizacja pamięci podręcznej Wstęp do informatyki i architektury komputerów 20 Wstęp do informatyki i architektury komputerów 21
Przetwarzanie potokowe (pipelining) Przetwarzanie potokowe (pipelining) Prekursorzy : Motorola 68020, Intel 80486 Problemy przetwarzanie potokowe zmienia zależności czasowe instrukcji np. założenie, że instrukcja poprzedzająca już się wykonała wzrost długości potoku (np. w Pentium IV 31) teoretycznie zwiększa wydajność, ale jednocześnie prowadzi do problemów w sytuacji, gdy np. zawiedzie któraś z metod przewidywania rozgałęzień (rozgałęzienia wymuszają oczyszczenie potoku )... Wstęp do informatyki i architektury komputerów 22 Wstęp do informatyki i architektury komputerów 23 Zwiększamy wydajność procesora - DLP Zwiększamy wydajność procesora - TLP Wektorowe/macierzowe wykonywanie rozkazów ta sama instrukcja wykonywana na całym bloku danych technika potencjalnie bardzo wydajna Problemy stosowalna jedynie do stosunkowo ograniczonej gamy problemów (przetwarzanie sygnałów, obrazu itp.) zmusza do mało naturalnego wektorowego myślenia w programowaniu (nie wszyscy się z tym zdaniem zapewne zgodzą...) Wątek sekwencja (ciąg) instrukcji do wykonania typowy program składa się z pojedynczego ciągu instrukcji, czyli pojedynczego wątku Thread(0): for(i=0; i<3*n; i++){a[i]=b[i]*c[i];} Kilka wątków może wykonywać się jednocześnie Thread(0): for(i=0;i<n;i++){a[i]=b[i]*c[i];} Thread(1): for(i=n;i<2*n;i++){a[i]=b[i]*c[i];} Thread(2): for(i=2*n;i<3*n;i++){a[i]=b[i]*c[i];} Wstęp do informatyki i architektury komputerów 24 Wstęp do informatyki i architektury komputerów 25
Pojedynczy CPU architektura tradycyjna Wątki podział czasu / równoległość W przypadku tradycyjnej architektury CPU różne wątki (niekoniecznie składające się na jeden proces/program) wykonują się naprzemiennie Podział czasu dwa lub więcej wątków wykonuje postęp w obliczeniach naprzemiennie Wątek A Czas Wątek B Wątek A czeka CPU A1 A2 A3 A4 czeka CPU CPU CPU Równoległość dwa lub więcej wątków wykonuje się jednocześnie Wątek B B1 B2 B3 B4 czeka Dwa wątki na pojedynczym CPU czeka Wątek A Wątek B Wstęp do informatyki i architektury komputerów 26 Wstęp do informatyki i architektury komputerów 27 Zwiększamy wydajność procesora - TLP Cel: (bardziej) równoległe wykonywanie wątków Podstawowe techniki SMP: Symmetric Multi-Processing SMT: Simultaneous Multi-Threading (technologia ) CMP: Core Multi-Processing (dwu- i wielordzeniowość) Wstęp do informatyki i architektury komputerów 28 Wstęp do informatyki i architektury komputerów 29
SMP: Symmetric Multi-Processing SMT: Simultaneous Multi-Threading wątki ją na maszynie z wieloma (jednordzeniowymi) CPU wątek może w pełni wykorzystać zasoby CPU od dawna stosowana w rozwiązaniach serwerowych stosunkowo kosztowna Procesor 0 Wątek A A1 A2 A3 A4 Procesor 1 Wątek B B1 B2 B3 B4 Dwa CPU jednordzeniowe dzielimy zasoby fizyczne CPU na kilka rdzeni logicznych SO traktuje rdzenie logiczne jak niezależne procesory rdzenie logiczne to kombinacja dedykowanych i współdzielonych zasobów prawdziwego CPU przykłady: Intel HyperThreading, Sun CoolThreads (UltraSPARC T1), IBM (POWER5) Procesor fizyczny Logical CPU 1 Dedicated SW Regs 0.5 L1 I-cache Execution Units D-Cache, DTLB L2 Cache Logical CPU 0 ITLB Dedicated 0.5 L1 SW Regs I-cache ITLB Wstęp do informatyki i architektury komputerów 30 Wstęp do informatyki i architektury komputerów 31 Technologia Intel HyperThreading SMT: Simultaneous Multi-Threading Wprowadzona w Pentium 4 (fizyczny CPU podzielony na dwa rdzenie logiczne) każdy rdzeń logiczny zawiera własną kopię programowo dostępnych rejestrów oraz połowę pamięci podręcznej L1 rdzenie logiczne dzielą między sobą jednostki wykonawcze (całkowito- i zmiennoprzecinkową), pamięć podręczną L2, oraz inne układy Problemy współdzielenie pamięci podręcznej w ramach rdzeni logicznych może doprowadzić do konfliktów lub nadpisywania jej zawartości (tzw. cache thrashing) współdzielenie jednostek wykonawczych może doprowadzić do nieefektywnego ich wykorzystania (konfliktów dostępu/blokowania dostępu)... Wstęp do informatyki i architektury komputerów 32 Wstęp do informatyki i architektury komputerów 33
CMP: Core Multi-Processing Technologia Intel a wielordzeniowość Fizyczne rdzenie CPU wiele fizycznych rdzeni w pojedynczym CPU Logiczne CPU widoczne w SO Przydział fizycznych zasobów CPU Wydajność Czas Zasób 1 Wątek 2 każdy wątek w pełni wykorzystuje rdzeń Wątek 1 Zasób 2 Zasób 3 Rdzeń 0 Wątek A A1 A2 A3 A4 Wątek W ąt ek 2 przydział wątków do rdzeni jak w SMP Rdzeń 1 Wątek B B1 B2 B3 1 Zasób 1 Zasób 3 B4 (potencjalnie) większa wydajność i niższa cena niż w SMP + Zasób 2 Zasób 1 Wątek 1 Zasób 2 Pojedynczy CPU dwurdzeniowy Zasób 3 + Zasób 1 Wątek 2 Zasób 2 Zasób 3 Wstęp do informatyki i architektury komputerów 34 Wstęp do informatyki i architektury komputerów Różnice architekturalne (Intel AMD) Architektura oparta o Front-Side Bus Dual-Core Dual-Core CPU CPU I/O Hub Architektura oparta o Front-Side Bus Dual-Core AMD Direct Connect Architecture I/O Hub Memory Controller Hub Różnice architekturalne (Intel AMD) AMD Direct Connect Architecture Dual-Core 35 USB PCI Memory Controller Hub I/O Hub Hub I/O USB I/O Hub XMB PCI XMB XMB XMB USB I/O Hub PCI Wstęp do informatyki i architektury komputerów 36 Wstęp do informatyki i architektury komputerów 37
Różnice architekturalne (Intel AMD) Intel architektura Nehalem (Core i7) Situation: Core 1 needs data in Core 3 cache How Does it Get There? Quad-Core Clovertown Core 1 Core 2 Core 3 Core 4 100011 L2 L2 Front-Side Bus Front-Side Bus Memory Controller Native Quad-Core AMD Opteron L3 Core 1 Core 2 Core 3 100011 Core 4 L2 L2 L2 L2 System Request Queue Hyper Transport Memory Controller Northbridge 1. Core 1 sends a request to the memory controller, which probes Core 3 cache 2. Core 3 sends data back to the memory controller, which forwards it to Core 1 This happens at front-side bus frequency Result: Reduced Quad-Core Performance 1. Core 1 probes Core 3 cache, data is copied directly back to Core 1 This happens at processor frequency Result: Improved Quad-Core Performance Wstęp do informatyki i architektury komputerów 38 Wstęp do informatyki i architektury komputerów 39 Nie tylko Intel i AMD... Nie tylko Intel i AMD... Procesor Sun UltraSPARC T1 Architektura serwera Sun Fire T2000 Wstęp do informatyki i architektury komputerów 40 Wstęp do informatyki i architektury komputerów 41