Podstawy architektury systemów z równoległością na poziomie wątków

Podobne dokumenty
Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

Budowa i zasada działania komputera. dr Artur Bartoszewski

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Budowa Mikrokomputera

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Technika mikroprocesorowa. Linia rozwojowa procesorów firmy Intel w latach

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

Bibliografia: pl.wikipedia.org Historia i rodzaje procesorów w firmy Intel

Architektura komputerów

Programowanie współbieżne Wykład 2. Iwona Kochańska

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Architektura Systemów Komputerowych

4. Procesy pojęcia podstawowe

Procesory. Schemat budowy procesora

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH. Klasyczny cykl pracy procesora sekwencyjnego. współczesne architektury. c Dr inż.

Architektura systemów komputerowych. dr Artur Bartoszewski

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Programowanie Niskopoziomowe

Przetwarzanie potokowe pipelining

Architektura komputera wg Neumana

Wydajność obliczeń a architektura procesorów. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Architektura mikroprocesorów TEO 2009/2010

Architektura von Neumanna. Jak zbudowany jest współczesny komputer? Schemat architektury typowego PC-ta. Architektura PC wersja techniczna

Architektury komputerów Architektury i wydajność. Tomasz Dziubich

4. Procesy pojęcia podstawowe

Zarządzanie procesami i wątkami

Architektura systemów komputerowych. dr Artur Bartoszewski

Organizacja typowego mikroprocesora

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

SYSTEMY OPERACYJNE WYKŁAD 1 INTEGRACJA ZE SPRZĘTEM

Planowanie przydziału procesora

Budowa systemów komputerowych

Mikroprocesory rodziny INTEL 80x86

Procesy, wątki i zasoby

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Wydajność obliczeń a architektura procesorów

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

Systemy operacyjne III

Architektura komputerów egzamin końcowy

Mikroprocesor Operacje wejścia / wyjścia

Zarządzanie procesorem

Planowanie przydziału procesora

Prezentacja systemu RTLinux

Architektura komputerów

Budowa komputera Komputer computer computare

Logiczny model komputera i działanie procesora. Część 1.

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Wprowadzenie do systemów operacyjnych

4. Procesy pojęcia podstawowe

16. Taksonomia Flynn'a.

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Zarządzanie zasobami pamięci

Architektura systemów komputerowych. dr Artur Bartoszewski

Architektura potokowa RISC

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Larrabee GPGPU. Zastosowanie, wydajność i porównanie z innymi układami

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

LEKCJA TEMAT: Współczesne procesory.

ARCHITEKTURA PROCESORA,

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

Zarządzanie pamięcią operacyjną

Architektura systemów komputerowych

Zarządzanie pamięcią w systemie operacyjnym

Architektura mikroprocesorów z rdzeniem ColdFire

SYSTEMY OPERACYJNE PROCESORÓW SYGNAŁOWYCH

LEKCJA TEMAT: Zasada działania komputera.

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Księgarnia PWN: Włodzimierz Stanisławski, Damian Raczyński - Programowanie systemowe mikroprocesorów rodziny x86

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Architektura systemów komputerowych. Przetwarzanie potokowe I

Procesy, zasoby i wątki

Procesy, zasoby i wątki

Jadro Linux 2.6. a zadania czasu rzeczywistego. Artur Lewandowski. Jądro Linux 2.6 p.1/14

Architektura komputerów

projektowanie systemu

Zegar - układ wysyłający regularne impulsy o stałej szerokości (J) i częstotliwości (f)

Nowinki technologiczne procesorów

Procesy, zasoby i wątki

Programowanie współbieżne i rozproszone

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Architektura komputerów

System obliczeniowy laboratorium oraz. mnożenia macierzy

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Programowanie Rozproszone i Równoległe

Dr inż. hab. Siergiej Fialko, IF-PK,

Podstawy Informatyki Układ przerwań

Architektura komputerów

Celem wykładu jest wprowadzenie fundamentalnych pojęć, integralnie związanych z systemem operacyjnym, na których opiera się przetwarzanie we

Procesory firmy ARM i MIPS

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Transkrypt:

Wykład 7 Podstawy architektury systemów z równoległością na poziomie wątków Spis treści: 1. Wątki i wielowątkowość 2. Wielowątkowość z przeplotem pojedyńczych instrukcji 3. Wielowątkowość z przeplotem bloków instrukcji 4. Wielowątkowość jednoczesna

Wątek programu (wątek sterowania programu) Wątek programowy jest to najmniejszy ciąg instrukcji programu, który może stanowić przedmiot szeregowania (przydziału czasu procesora) w systemie operacyjnym komputera. Wątki są syntaktycznie określane przez programistę wewnątrz kodu procesu. Wątki współdzielą z procesem zasoby procesu w tym przede wszystkim pamięć procesu i urządzenia wejścia/wyjścia Wątki procesu współdzielą wzajemnie kod procesu i jego kontekst czyli wykorzystywane zmienne, pliki i przestrzeń adresową. Programiści działają na wątkach poprzez wywołania systemowe. W pewnych implementacjach wątki nazywane są wątkami jądra (ang. kernel threads). Czasami wątki nazywane są lekkimi procesami (ang. lightweight processes) z powodu krótkiego czasu przełączania ich kontekstu.

Dla zarządzania wątkami system operacyjny wykorzystuje program szeregujący wątki (and. thread scheduler). Z punktu widzenia szeregowania, watki mają podobne stany jak procesy: aktywny, zawieszony, gotowy do wykonania ( w kolejce). Wyróżnia się dwa typy strategii szeregowania wątków: szeregowanie preempcyjne (ang. pre-emptive scheduling), kiedy to system operacyjny określa w którym momencie nastąpi przełączenie wątku (zmiana kontekstu), szeregowanie kooperacyjne (ang. cooperative scheduling), kiedy same wątki oddają sterowanie procesora (wywołują przełączenie wątku i zmianę kontekstu), w momentach gdy wchodzą w stan przestoju (np. w oczekiwaniu na dane) gdy muszą oczekiwać na możliwość dalszego wykonywania.

Wielowątkowość Zdolność procesora do równoległego wykonywania dwu lub więcej strumieni instrukcji (wątków sterowania) w programie. Zalety wielowątkowości to możliwość eliminacji przestojów w wykorzystaniu procesora (CPU), dokładniej jego bloków wykonawczych, poprzez przełączanie sterowania procesora do innego wątku sterowania - w przeciwieństwie do pracy jednowątkowej, przy której procesor przy zatrzymaniu wykonywania wątku sterowania traci czas - pozostaje bezczynny.

Przyczyny przestojów w procesorze: "chybienie" w pamięci podręcznej (ang. cache miss), zachodzi przestój w oczekiwaniu na dane sprowadzone z pamięci operacyjnej, zależność kolejnych sąsiednich instrukcji ze względu na dane, operacja wejścia/wyjścia - przetwarzanie jest wstrzymane

Opóźnienia wnoszone przez chybienia w pamięci podręcznej są duże (dane z komputera Alpha Server 4100 SMP z 4 procesorami DEC Alpha 21164) 7 cykli dla chybienia w L1 z trafieniem w L2 w kości procesora, 21 cykli dla chybienia w L1 z chybieniem w L2 i trafieniem w L3 na płycie komputera, 80 cykli dla chybienia, które jest obsługiwane przez pamięć operacyjną, 125 cykli dla chybienia, które jest obsługiwane przez pamięć podręczną innego procesora.

Zalety wielowątkowości pełniejsze wykorzystywanie każdego zasobu procesora, gdy wystąpią przestoje w procesie, możliwość lepszego zrównoleglenia wykorzystania zasobów, lepsze współdzielenie danych, w szczególności wydajniejsze wykorzystywanie pamięci podręcznej danych.

Wymagania na komputer wielowątkowy Procesor musi utrzymywać wiele aktywnych wątków z ich kontekstami roboczymi, Kontekst roboczy wątku składa się z kodu programu, licznika rozkazów, rejestrów roboczych, rejestru stanu, rejestru stosu, itp. Układ sterowania musi zapewnić koordynację zdarzeń w systemie z zapamiętanym kontekstem aby uaktywniać watki, Układ sterowania musi przełączać konteksty wątków, eliminując przestoje, Przełączanie sterowania między wątkami

Rodzaje wielowątkowości i procesorów wielowątkowych Wielowątkowość z przeplotem pojedyńczych instrukcji (ang. interleaved multithreading, cycle-by-cycle interleaving multithreading, pre-emptive multithreading, fine-grained multithreading, time-sliced multithreading )). Wielowątkowość z przeplotem bloków instrukcji (ang. block multithreading, block interleaving multithreading, cooperative multithreading, coarse-grained multithreading). Wielowątkowość jednoczesna (ang. simultaneous multithreading).

a) procesor z pojedynczym wątkiem sterowania b) procesor wielowątkowy z przeplotem instrukcji c) procesor wielowątkowy z przeplotem bloków instrukcji

a) procesor superskalarny c) wielowątkowość z przeplotem instrukcji b) procesor VLIW d) wielowątkowość z przeplotem instrukcji VLIW

a) wielowątkowość jednoczesna b) procesor wielordzeniowy (CMP-Chip Multi-Processor), jeden watek na rdzeń

Wielowątkowość z przeplotem instrukcji Procesor jest przełączany do innego wątku po wykonaniu każdej instrukcji. Celem jest usuniecie przestojów w potokach wykonawczych spowodowanych bezpośrednimi zależnościami danych miedzy sąsiednimi instrukcjami. Zmniejsza się prawdopodobieństwo, że stopnie potoku będą wymagać danych wytworzonych przez inne instrukcje znajdujące się w wykonaniu w tym samym potoku. Zalety: w potokach nie powstają hazardy i nie ma potrzeby budowy złożonych ścieżek synchronizacji danych. Koszt przełączania kontekstu wynosi 0 cykli. Przestoje związane z pamięcią są eliminowane przez nieuruchamianie wątku aż operacja na pamięci się zakończy. Wymaga przynajmniej tylu wątków ile stopni ma potok procesora. Jeśli nie ma dostatecznej liczby wątków, wydajność pojedynczego wątku maleje.

Komputer Tera MTA Procesor jest przełączany do innego wątku po wykonaniu każdej instrukcji. Procesor zawiera specjalną technikę wstawiania instrukcji bezdanowych i instrukcji zależnych do potoku Potok wykonania instrukcji ma długość 21 stopni Format instrukcji VLIW z 3 instrukcjami składowymi Procesor zmienia kontekst co 3 cykle pomiędzy 128 wątkami, Kontekst jednego wątku zawiera licznik rozkazów i 32 rejestry robocze, Uzyskiwane jest wyeliminowanie do 128 cykli przestoju z powodu dostępów do pamięci podręcznej

Ogólny schemat blokowy komputera Tera MTA

Schemat blokowy procesora systemu Tera. W każdym cyklu do wykonania są kierowane 3 operacje z jednej instrukcji: jeden dostęp do pamięci i dwie inne operacje. M-unit realizuje, z wyprzedzeniem w stosunku do wykorzystania sprowadzonych danych, kolejkowane dostępy do pamięci o średnim czasie wykonania 70 cykli.

Wielowątkowość z przeplotem bloków instrukcji Przełączenie kontekstu wątków odbywa się po wykonaniu bloku instrukcji po napotkaniu określonych zdarzeń, które w prowadziłoby przestój procesora w wykonywaniu instrukcji obliczeniowych. Zdarzenia powodujące przełączenie wątku to operacje o długim czasie wykonania lub potencjalnie długim czasie wykonania np. chybienie w pamięci podręcznej z dostępem do pamięci., Mniejsza liczba wątków jest wymagana niż przy wielowątkowości z przeplotem instrukcji, Wątki wykonują się z pełną szybkością do momentu przełączenia kontekstu, Po nadejściu danych dla wywłaszczonego wątku jest on wstawiany do kolejki wątków gotowych do wykonania. Przełączenie wątku wykonuje się przeważnie w jednym cyklu zegara. Wątki wykonują się bez współdzielenia zasobów sprzętowych z innymi wątkami.

Klasyfikacja technik przełączania kontekstu wątków w procesorach wielowątkowych

Mikrokontroler Komodo Wielowątkowy mikroprocesor dla wykonywania programów w języku Java (projekt na Uniwesrsytecie w Augsburgu). Maszyna wykonuje programy Java przy zamianie (kompilacji) na byte-code, interpretowany na różnych platformach. Architektura wielowątkowa eliminuje interpretację byte-kodu na wirtualnych maszynach Java (Java Virtual Machine) Przerwania wyzwalają wykonanie wątków obsługi przerwań (ang. interrupt service threads), z bardzo szybkim przełączaniem kontekstu, zamiast podprogramów obsługi przerwań Technika przełączanie na sygnał (ang. switch-on-signal) wątków zapewnia spełnienie wymagań pracy w czasie rzeczywistym,

Schemat blokowy mikroprocesora Komodo

Nano-wielowątkowość i mikro-wielowątkowość (ang nanothreading, microthreading) Koncepcje wprowadzone w procesorze DanSoft i artykule Bolychevsky i inni Wprowadzono nanowątek (ang. nanothread) wykonywany na tym samym zbiorze rejestrów co główny wątek Nanowątek przechowywany jest na tej samej stronie co wątek główny, Gdy główny wątek zatrzymuje się, procesor automatycznie zaczyna pobierać instrukcje z nanowątku, Mikrowątki wprowadzone są w procesorze w liczbie więcej niż jeden. Mikrowątki dzielą ten sam zbiór rejestrów i ten sam stos co wątek główny

Wielowątkowość jednoczesna (ang. Simultaneous Multithreading, SMT). Opiera się na przetwarzaniu superskalarnym i podejściu wielowątkowym. Wykorzystuje się wiele zbiorów rejestrów na tym samym mikroprocesorze. Wprowadza się do wykonania instrukcje z wielu wątków (kolejek rozkazów) jednocześnie. Przestoje w wykonywaniu pojedyńczych wątków są wypełniane wykonywaniem innych wątków rezydujących w procesorze. Najbardziej popularny rodzaj wielowątkowości spotykany we współczesnych mikroprocesorach. Wielowątkowość jednoczesna została zrealizowana w następujących procesorach komercyjnych: UltraSPARC T1, T2, T3, IBM POWER 5, 7, MIPS MT, Pentium 4 i procesorach wielordzeniowych Intel, procesorach wielordzeniowych AMD, CRAY XMT.

Wielowątkowość jednoczesna (SMT) z punktu widzenia potoków wykonawczych Jest to efektywny sposób wykorzystania potoków z podwyższoną równoległością dla wielu wątków jednocześnie. Issue slots - fragmenty stopnia potoku do wykorzystania przez programy, cycles - takty pracy potoku, waste - niewykorzystany fragment stopnia potoku w danym takcie (strata).

Dwa sposoby organizacji logicznej procesorów wielowątkowych Instrukcje różnych wątków współdzielą wszystkie zasoby pamiętania danych i wyników częściowych w rozszerzonym potoku superskalarnym korzyść - mała rozbudowa sprzętu w stosunku do procesorów superskalarnych (jednowątkowych), wykorzystanie ich potoków, projektanci mogą skupić uwagę na optymalizacji szybkiego jednowątkowego potokowego procesora superskalarnego i dodać własności wielowątkowości dla niego bez większych zmian sprzętu, architekturę procesora rozbudowuje się przez dodanie znacznika przynależności do wątku dla każdej instrukcji wewnętrznej, dodanie wielu zbiorów rejestrów i rozszerzenie cech bloków pobierania i kończenia (ang. retiring) instrukcji, zapewniając odróżnianie różnych wątków.

Replikacja sprzętowa wszystkich zasobów pamiętania danych i wyników częściowych procesora superskalarnego dla wszystkich wątków. Blok kierowania instrukcji do wykonania (ang. instruction issue unit) jest zdolny do aktywacji wykonania instrukcji z różnych wątków jednocześnie do różnych bloków wykonawczych. Wprowadzane są duże zmiany w organizacji procesorów superskalarnych. Możliwe jest naturalne dzielenie zakresu przetwarzanych instrukcji (podobnie do procesorów jednowątkowych). Prostsze są cechy bloków pobierania i kończenia (ang. retiring) instrukcji.

Ogólne cechy procesorów z wielowątkowością jednoczesną (SMT) Blok pobierania instrukcji dla procesora SMT może organizować kolejność pobierania dwoma sposobami: przyjąć grupowy podział przepustowości pobierania między wątkami i pobierać instrukcje dla kilku wybranych wątków jednocześnie, dokonując selekcji np. tylko niespekulatywnych wątków w pierwszej kolejności, przyjąć jednostkowy podział przepustowości pobierania między wątkami i selektywnie pobierać pojedyncze instrukcje z wątków. Skomplikowana budowa bloku kierowania instrukcji do wykonania, zawsze centralnego dla wielu wątków. Skomplikowane jest współdzielenie bloków wykonawczych.

Architektura przykładowego mikroprocesora superskalarnego typu SMT 8 wątków i superskalarność na poziomie 8, 8 instrukcji jest dekodowanych, przemianowanych rejestrowo i kierowanych do wykonania w bloku stałoprzecinkowym lub zmiennoprzecinkowym, Wspólne dla wszystkich wątków bufory dla danych i wyników pośrednich. 8 instrukcji jest kierowanych do wykonania w trybie "out-of-order", wykonywanych i kończonych (retired). Każdy wątek może adresować 32 rejestry architekturalne dla obliczeń w stałym i zmiennym przecinku. Ten zbiór jest przemianowywany do dużego zbioru 356 rejestrów fizycznych. Architektura jest zbliżona do komercyjnych mikroprocesorów MIPS R10000 i HP PA 8000.

Struktura przykładowego procesora SMT

Strategie pobierania instrukcji wątków Podstawowa strategia : cykliczna (ang. round robin): w każdym cyklu zegara 2 razy pobiera się 8 instrukcji z dwu wątków zgodnie ze strategią cykliczną. Oznaczenie strategii: RR.2.8. Inne możliwe strategie to: RR.1.8, RR.4.2, RR.2.4. BRCOUNT. Najwyższy priorytet mają watki, co do których jest najmniej prawdopodobne, że należą do źle wybranej ścieżki w przewidywaniu skoków. MISSCOUNT. Najwyższy priorytet maja wątki, które mają najmniej zaległych "chybień" w pamięci podręcznej danych. IQPOSN. Priorytet mają najstarsze instrukcje czyli takie wątki, które mają instrukcje najbliższe czoła kolejki bloku stałoprzecinkowego lub zmiennoprzecinkowego. ICCOUNT. Najwyższy priorytet mają wątki z najmniejszą liczbą instrukcji w trakcie dekodowania, przemianowywania rejestrów i przebywania w kolejce do potoku wykonawczego. Dla podanej architektury procesora ICCOUNT.2.8 okazała się najlepsza, dając średnie wykonanie 5.4 instrukcji na cykl (ang. IPC - Instructions Per Cycle).

Porównanie IPC systemu SMT z innymi architekturami procesora (symulacje mieszanki programowej (ang. benchmark) SPEC95, Eggers i inni, 1995). CMP2: 2 procesory, superskalarność na poziomie 4. CMP4: 4 procesory, superskalarność na poziomie 2. SMT: 8 wątków, superskalarność na poziomie 8. Najlepsze wyniki IPC (liczba instrukcji na cykl) wykazała architektura SMT z 8 wątkami i superskalarnością na poziomie 8

Ewolucja procesorów SMT Pierwszym większym znanym mikroprocesorem z jednoczesną wielowątkowością SMT był Alpha 21464 (EV8), wyprodukowany w 2004 roku przez firmę DEC z USA. Ten mikroprocesor nie wszedł jednak do masowej produkcji, gdyż DEC został kupiony przez Compaq, kupiony potem przez Hewlett-Packard. Pierwszym nowoczesnym procesorem z wielowątkowością SMT był Intel Pentium 4 (model 3.06 GHz), zawierający "Hyper-threading", wprowadzony na rynek w 2002. Hyper-Threading, jest zaimplementowany w procesorach Intel Pentium Extreme Edition, Pentium 4, Mobile Pentium 4, Xeon oraz innych. IBM POWER5, wprowadzony w 2004, jako procesor 2-rdzeniowy, 4-rdzeniowy (quad) i 8-rdzeniowy, gdzie każdy rdzeń stanowił 2-wątkowy procesor SMT. Sun Microsystems' UltraSPARC T1, znany jako Niagara (2005 rok), ma 8 rdzeni oraz 4 wątki na rdzeń ale każdy rdzeń ma 1 potok, więc jest to wielowątkowość drobnoziarnista.

W 2010 roku IBM wypuścił na rynek procesor POWER7 z 8 rdzeniami, z których każdy ma 4 wątki pracujące w trybie SMT. Sun Microsystems UltraSPARC T2, znany jako Niagara 2, jest procesorem SMT, który zawiera 8 rdzeni i 8 wątków na rdzeń. Zapowiedziany w 2010 roku 16-rdzeniowy Sun Microsystems UltraSPARC T3 ma zawierać 512 wątków czyli 32 wątki na rdzeń.