Równoległa architektura komputera - szybki przewodnik
W ciągu ostatnich 50 lat nastąpił ogromny rozwój w zakresie wydajności i możliwości systemu komputerowego. Było to możliwe dzięki technologii Very Large Scale Integration (VLSI). Technologia VLSI pozwala na umieszczenie dużej liczby komponentów na jednym chipie i zwiększenie częstotliwości taktowania. Dlatego równolegle można wykonywać więcej operacji jednocześnie.
Przetwarzanie równoległe jest również związane z lokalizacją danych i komunikacją danych. Parallel Computer Architecture to metoda organizacji wszystkich zasobów w celu maksymalizacji wydajności i programowalności w granicach wyznaczonych przez technologię i koszt w dowolnym momencie.
Dlaczego architektura równoległa?
Równoległa architektura komputera dodaje nowy wymiar w rozwoju systemu komputerowego poprzez stosowanie coraz większej liczby procesorów. Zasadniczo wydajność osiągana dzięki wykorzystaniu dużej liczby procesorów jest wyższa niż wydajność pojedynczego procesora w danym momencie.
Trendy aplikacji
Wraz z rozwojem pojemności sprzętowej wzrosło również zapotrzebowanie na dobrze działającą aplikację, co z kolei postawiło zapotrzebowanie na rozwój architektury komputera.
Przed erą mikroprocesorów wysokowydajny system komputerowy uzyskiwano dzięki egzotycznej technologii obwodów i organizacji maszyn, co powodowało, że były drogie. Obecnie wysoce wydajny system komputerowy uzyskuje się przy użyciu wielu procesorów, a najważniejsze i najbardziej wymagające aplikacje są zapisywane jako programy równoległe. Dlatego też, aby uzyskać wyższą wydajność, należy opracować zarówno architektury równoległe, jak i aplikacje równoległe.
Zwiększenie wydajności aplikacji Przyspieszenie jest kluczowym czynnikiem, który należy wziąć pod uwagę. Speedup na procesorach p jest definiowany jako -
$$Speedup(p \ processors)\equiv\frac{Performance(p \ processors)}{Performance(1 \ processor)}$$W przypadku pojedynczego rozwiązanego problemu
$$performance \ of \ a \ computer \ system = \frac{1}{Time \ needed \ to \ complete \ the \ problem}$$ $$Speedup \ _{fixed \ problem} (p \ processors) =\frac{Time(1 \ processor)}{Time(p \ processor)}$$Informatyka naukowa i inżynierska
Architektura równoległa stała się niezbędna w obliczeniach naukowych (takich jak fizyka, chemia, biologia, astronomia itp.) I zastosowaniach inżynieryjnych (takich jak modelowanie zbiorników, analiza przepływu powietrza, wydajność spalania itp.). W prawie wszystkich aplikacjach istnieje ogromne zapotrzebowanie na wizualizację wyników obliczeniowych, co powoduje zapotrzebowanie na rozwój obliczeń równoległych w celu zwiększenia szybkości obliczeniowej.
Komputery komercyjne
W komputerach komercyjnych (takich jak wideo, grafika, bazy danych, OLTP itp.) Potrzebne są również szybkie komputery do przetwarzania ogromnych ilości danych w określonym czasie. Pulpit używa programów wielowątkowych, które są prawie podobne do programów równoległych. To z kolei wymaga opracowania architektury równoległej.
Trendy technologiczne
Wraz z rozwojem technologii i architektury istnieje duże zapotrzebowanie na tworzenie wysokowydajnych aplikacji. Eksperymenty pokazują, że komputery równoległe mogą działać znacznie szybciej niż najbardziej rozwinięty pojedynczy procesor. Ponadto komputery równoległe można opracować w ramach ograniczeń technologicznych i kosztów.
Podstawową zastosowaną tutaj technologią jest technologia VLSI. Dlatego w dzisiejszych czasach coraz więcej tranzystorów, bramek i obwodów można umieścić w tym samym obszarze. Wraz ze zmniejszeniem rozmiaru podstawowej funkcji VLSI, częstotliwość taktowania również wzrasta proporcjonalnie do niej, podczas gdy liczba tranzystorów rośnie do kwadratu. Można oczekiwać, że użycie wielu tranzystorów jednocześnie (równoległość) będzie działać znacznie lepiej niż przy zwiększaniu częstotliwości taktowania
Trendy technologiczne sugerują, że podstawowy element składowy pojedynczego chipa będzie zapewniał coraz większą pojemność. W związku z tym zwiększa się możliwość umieszczenia wielu procesorów na jednym chipie.
Trendy architektoniczne
Rozwój technologii decyduje o tym, co jest wykonalne; Architektura przekształca potencjał technologii w wydajność i możliwości.Parallelism i localityto dwie metody, w których większe ilości zasobów i więcej tranzystorów zwiększają wydajność. Jednak te dwie metody konkurują o te same zasoby. Gdy wiele operacji jest wykonywanych równolegle, liczba cykli potrzebnych do wykonania programu jest zmniejszona.
Potrzebne są jednak zasoby do obsługi każdego z równoległych działań. Zasoby są również potrzebne do przydzielenia lokalnej pamięci. Najlepsze wyniki osiąga się poprzez pośredni plan działania, który wykorzystuje zasoby do wykorzystania stopnia równoległości i stopnia lokalności.
Ogólnie rzecz biorąc, historia architektury komputerów została podzielona na cztery generacje z następującymi podstawowymi technologiami -
- Rury próżniowe
- Transistors
- Układy scalone
- VLSI
Do 1985 roku czas trwania był zdominowany przez wzrost równoległości na poziomie bitów. 4-bitowe mikroprocesory, po których następuje 8-bitowe, 16-bitowe i tak dalej. Aby zmniejszyć liczbę cykli potrzebnych do wykonania pełnej 32-bitowej operacji, dwukrotnie zwiększono szerokość ścieżki danych. Później wprowadzono operacje 64-bitowe.
Wzrost w instruction-level-parallelismdominował od połowy lat 80-tych do połowy 90-tych. Podejście RISC wykazało, że w prosty sposób można było potokować kroki przetwarzania instrukcji, tak że średnio instrukcja wykonywana jest w prawie każdym cyklu. Rozwój technologii kompilatorów sprawił, że potoki instrukcji stały się bardziej produktywne.
W połowie lat 80. składały się komputery oparte na mikroprocesorach
- Jednostka przetwarzająca liczby całkowite
- Jednostka zmiennoprzecinkowa
- Kontroler pamięci podręcznej
- SRAM dla danych pamięci podręcznej
- Przechowywanie tagów
Wraz ze wzrostem pojemności chipów wszystkie te komponenty zostały połączone w jeden chip. Zatem pojedynczy układ składał się z oddzielnego sprzętu do arytmetyki liczb całkowitych, operacji zmiennoprzecinkowych, operacji pamięciowych i operacji rozgałęzień. Poza potokowaniem pojedynczych instrukcji, pobiera wiele instrukcji naraz i wysyła je równolegle do różnych jednostek funkcjonalnych, gdy tylko jest to możliwe. Ten typ paralelizmu na poziomie instrukcji nazywa sięsuperscalar execution.
Opracowano równoległe maszyny z kilkoma różnymi architekturami. W tej sekcji omówimy różne równoległe architektury komputerów i charakter ich zbieżności.
Architektura komunikacji
Architektura równoległa wzbogaca konwencjonalne koncepcje architektury komputerowej o architekturę komunikacyjną. Architektura komputera definiuje krytyczne abstrakcje (takie jak granica użytkownik-system i granica sprzęt-oprogramowanie) i strukturę organizacyjną, podczas gdy architektura komunikacji definiuje podstawowe operacje komunikacyjne i synchronizacyjne. Dotyczy również struktury organizacyjnej.
Model programowania to warstwa wierzchnia. Aplikacje są napisane w modelu programistycznym. Modele programowania równoległego obejmują -
- Wspólna przestrzeń adresowa
- Przekazywanie wiadomości
- Programowanie równoległe danych
Shared addressprogramowanie przypomina korzystanie z tablicy ogłoszeń, gdzie można komunikować się z jedną lub wieloma osobami, umieszczając informacje w określonym miejscu, które są udostępniane wszystkim innym osobom. Indywidualna aktywność jest koordynowana poprzez notowanie, kto wykonuje jakie zadanie.
Message passing przypomina rozmowę telefoniczną lub listy, w których określony odbiorca otrzymuje informacje od określonego nadawcy.
Data parallelprogramowanie to zorganizowana forma współpracy. W tym przypadku kilka osób jednocześnie wykonuje akcję na oddzielnych elementach zbioru danych i udostępnia informacje globalnie.
Pamięć współdzielona
Wieloprocesory z pamięcią współdzieloną są jedną z najważniejszych klas maszyn równoległych. Zapewnia lepszą przepustowość w przypadku obciążeń wieloprogramowych i obsługuje programy równoległe.
W tym przypadku wszystkie systemy komputerowe umożliwiają procesorowi i zestawowi kontrolerów we / wy dostęp do zbioru modułów pamięci przez połączenie sprzętowe. Pojemność pamięci jest zwiększana przez dodanie modułów pamięci, a pojemność we / wy jest zwiększana przez dodanie urządzeń do kontrolera we / wy lub przez dodanie dodatkowego kontrolera we / wy. Wydajność przetwarzania można zwiększyć, czekając na dostępność szybszego procesora lub dodając więcej procesorów.
Wszystkie zasoby są zorganizowane wokół centralnej szyny pamięci. Poprzez mechanizm dostępu do magistrali każdy procesor może uzyskać dostęp do dowolnego adresu fizycznego w systemie. Ponieważ wszystkie procesory są w równej odległości od wszystkich lokalizacji pamięci, czas dostępu lub opóźnienia wszystkich procesorów są takie same w jednej lokalizacji pamięci. To się nazywasymmetric multiprocessor.
Architektura przekazywania wiadomości
Architektura przekazywania wiadomości jest również ważną klasą maszyn równoległych. Zapewnia komunikację między procesorami w postaci jawnych operacji we / wy. W tym przypadku komunikacja jest łączona na poziomie we / wy zamiast w systemie pamięci.
W architekturze przekazywania komunikatów komunikacja z użytkownikiem wykonywana przy użyciu systemu operacyjnego lub wywołań bibliotek, które wykonują wiele czynności niższego poziomu, w tym rzeczywistą operację komunikacyjną. W rezultacie istnieje dystans między modelem programowania a operacjami komunikacyjnymi na fizycznym poziomie sprzętu.
Send i receiveto najczęstsze operacje komunikacyjne na poziomie użytkownika w systemie przekazywania wiadomości. Wyślij określa lokalny bufor danych (który ma być przesłany) i odbierający zdalny procesor. Odbierz określa proces wysyłania i lokalny bufor danych, w którym zostaną umieszczone przesyłane dane. W operacji wysyłania plikidentifier lub a tag jest dołączony do wiadomości, a operacja odbierania określa regułę dopasowania, taką jak określony znacznik z określonego procesora lub dowolny znacznik z dowolnego procesora.
Połączenie wysyłania i pasującego odbioru kończy kopiowanie z pamięci do pamięci. Każdy koniec określa swój lokalny adres danych i zdarzenie synchronizacji parami.
Konwergencja
Rozwój sprzętu i oprogramowania zatarł wyraźną granicę między pamięcią współdzieloną a obozami przekazywania wiadomości. Przekazywanie wiadomości i współdzielona przestrzeń adresowa reprezentują dwa różne modele programowania; każdy daje przejrzysty paradygmat udostępniania, synchronizacji i komunikacji. Jednak podstawowe struktury maszyn zbiegły się w kierunku wspólnej organizacji.
Przetwarzanie równoległe danych
Inna ważna klasa maszyn równoległych jest różnie nazywana - macierze procesorów, architektura równoległa danych i maszyny z jedną instrukcją i wieloma danymi. Główną cechą modelu programowania jest to, że operacje mogą być wykonywane równolegle na każdym elemencie dużej regularnej struktury danych (takiej jak tablica lub macierz).
Języki programowania równoległego danych są zwykle wymuszane przez przeglądanie lokalnej przestrzeni adresowej grupy procesów, po jednym na procesor, tworząc jawną przestrzeń globalną. Ponieważ wszystkie procesory komunikują się ze sobą i istnieje globalny widok wszystkich operacji, można więc użyć wspólnej przestrzeni adresowej lub przekazywania komunikatów.
Podstawowe zagadnienia projektowe
Opracowanie modelu programowania nie może tylko zwiększyć wydajności komputera, ani sam rozwój sprzętu nie może tego zrobić. Jednak rozwój architektury komputera może mieć wpływ na wydajność komputera. Możemy zrozumieć problem projektowy, koncentrując się na tym, jak programy używają maszyny i jakie podstawowe technologie są dostarczane.
W tej sekcji omówimy abstrakcję komunikacji i podstawowe wymagania modelu programowania.
Abstrakcja komunikacji
Abstrakcja komunikacji jest głównym interfejsem między modelem programowania a implementacją systemu. To jest jak zestaw instrukcji, który zapewnia platformę, dzięki której ten sam program może działać poprawnie w wielu implementacjach. Operacje na tym poziomie muszą być proste.
Abstrakcja komunikacji jest jak umowa między sprzętem a oprogramowaniem, która pozwala sobie nawzajem na poprawę elastyczności bez wpływu na pracę.
Wymagania dotyczące modelu programowania
Program równoległy ma co najmniej jeden wątek działający na danych. Model programowania równoległego definiuje, jakie dane mogą zawierać wątkiname, który operations można wykonać na nazwanych danych i po której kolejności następują operacje.
Aby potwierdzić, że zależności między programami są wymuszane, program równoległy musi koordynować aktywność swoich wątków.
Przetwarzanie równoległe zostało opracowane jako efektywna technologia w nowoczesnych komputerach, aby sprostać wymaganiom dotyczącym wyższej wydajności, niższych kosztów i dokładnych wyników w rzeczywistych zastosowaniach. Współbieżne zdarzenia są powszechne w dzisiejszych komputerach ze względu na praktykę wieloprogramowania, przetwarzania wieloprocesowego lub multikomputera.
Nowoczesne komputery mają potężne i rozbudowane pakiety oprogramowania. Aby przeanalizować rozwój wydajności komputerów, najpierw musimy zrozumieć podstawy rozwoju sprzętu i oprogramowania.
Computer Development Milestones - Istnieją dwa główne etapy rozwoju komputera - mechanical lub electromechanicalCzęści. Współczesne komputery ewoluowały po wprowadzeniu komponentów elektronicznych. Elektrony o wysokiej ruchliwości w komputerach elektronicznych zastąpiły części operacyjne w komputerach mechanicznych. W przypadku transmisji informacji sygnał elektryczny, który porusza się prawie z prędkością światła, zastąpił mechaniczne koła zębate lub dźwignie.
Elements of Modern computers - Nowoczesny system komputerowy składa się ze sprzętu komputerowego, zestawów instrukcji, programów użytkowych, oprogramowania systemowego i interfejsu użytkownika.
Problemy komputerowe są klasyfikowane jako obliczenia numeryczne, logiczne rozumowanie i przetwarzanie transakcji. Niektóre złożone problemy mogą wymagać połączenia wszystkich trzech trybów przetwarzania.
Evolution of Computer Architecture- W ciągu ostatnich czterech dekad architektura komputerów przeszła rewolucyjne zmiany. Zaczęliśmy od architektury Von Neumanna, a teraz mamy multikomputery i procesory wieloprocesorowe.
Performance of a computer system- Wydajność systemu komputerowego zależy zarówno od możliwości maszyny, jak i zachowania programu. Możliwości maszyny można ulepszyć dzięki lepszej technologii sprzętowej, zaawansowanym funkcjom architektonicznym i wydajnemu zarządzaniu zasobami. Zachowanie programu jest nieprzewidywalne, ponieważ zależy od aplikacji i warunków w czasie wykonywania
Multiprocesory i multikomputery
W tej sekcji omówimy dwa typy komputerów równoległych -
- Multiprocessors
- Multicomputers
Multikomputery z pamięcią współdzieloną
Trzy najpopularniejsze modele wieloprocesorów z pamięcią współdzieloną to -
Jednolity dostęp do pamięci (UMA)
W tym modelu wszystkie procesory równomiernie współdzielą pamięć fizyczną. Wszystkie procesory mają równy czas dostępu do wszystkich słów pamięci. Każdy procesor może mieć prywatną pamięć podręczną. Ta sama zasada dotyczy urządzeń peryferyjnych.
Gdy wszystkie procesory mają równy dostęp do wszystkich urządzeń peryferyjnych, system nazywa się a symmetric multiprocessor. Gdy tylko jeden lub kilka procesorów ma dostęp do urządzeń peryferyjnych, system nosi nazwęasymmetric multiprocessor.
Niejednolity dostęp do pamięci (NUMA)
W modelu wieloprocesorowym NUMA, czas dostępu zależy od lokalizacji słowa pamięci. Tutaj pamięć współdzielona jest fizycznie rozdzielana między wszystkie procesory, zwane pamięcią lokalną. Zbiór wszystkich lokalnych pamięci tworzy globalną przestrzeń adresową, do której mają dostęp wszystkie procesory.
Architektura pamięci podręcznej (COMA)
Model COMA to szczególny przypadek modelu NUMA. Tutaj wszystkie rozproszone pamięci główne są konwertowane na pamięci podręczne.
Distributed - Memory Multicomputers- System z wieloma komputerami z pamięcią rozproszoną składa się z wielu komputerów, zwanych węzłami, połączonych ze sobą siecią przesyłania wiadomości. Każdy węzeł działa jako autonomiczny komputer z procesorem, pamięcią lokalną i czasami urządzeniami we / wy. W takim przypadku wszystkie lokalne pamięci są prywatne i są dostępne tylko dla lokalnych procesorów. Dlatego nazywa się tradycyjne maszynyno-remote-memory-access (NORMA) maszyn.
Komputery wielowektorowe i SIMD
W tej sekcji omówimy superkomputery i procesory równoległe do przetwarzania wektorowego i równoległości danych.
Superkomputery wektorowe
W komputerze wektorowym procesor wektorowy jest dołączony do procesora skalarnego jako funkcja opcjonalna. Komputer hosta najpierw ładuje program i dane do pamięci głównej. Następnie skalarna jednostka sterująca dekoduje wszystkie instrukcje. Jeśli zdekodowane instrukcje są operacjami skalarnymi lub operacjami programu, procesor skalarny wykonuje te operacje przy użyciu skalarnych potoków funkcjonalnych.
Z drugiej strony, jeśli zdekodowane instrukcje są operacjami wektorowymi, wówczas instrukcje zostaną przesłane do jednostki sterującej wektorem.
Superkomputery SIMD
W komputerach SIMD liczba procesorów „N” jest połączonych z jednostką sterującą, a wszystkie procesory mają swoje indywidualne jednostki pamięci. Wszystkie procesory są połączone siecią połączeń.
Modele PRAM i VLSI
Idealny model zapewnia odpowiednią strukturę do tworzenia równoległych algorytmów bez uwzględniania fizycznych ograniczeń lub szczegółów implementacji.
Modele mogą być egzekwowane w celu uzyskania teoretycznych granic wydajności na równoległych komputerach lub w celu oceny złożoności VLSI w obszarze chipa i czasu pracy przed wytworzeniem chipa.
Równoległe maszyny o dostępie swobodnym
Sheperdson i Sturgis (1963) modelowali konwencjonalne komputery jednoprocesorowe jako maszyny o swobodnym dostępie (RAM). Fortune i Wyllie (1978) opracowali model równoległej maszyny o swobodnym dostępie (PRAM) do modelowania wyidealizowanego komputera równoległego z zerowym narzutem dostępu do pamięci i synchronizacją.
Pamięć PRAM z procesorem N ma moduł pamięci współdzielonej. Ta pamięć współdzielona może być scentralizowana lub rozproszona między procesorami. Te procesory działają w zsynchronizowanej pamięci odczytu, pamięci zapisu i cyklu obliczeniowym. Tak więc te modele określają sposób obsługi współbieżnych operacji odczytu i zapisu.
Poniżej przedstawiono możliwe operacje aktualizacji pamięci -
Exclusive read (ER) - W tej metodzie w każdym cyklu tylko jeden procesor może czytać z dowolnej lokalizacji pamięci.
Exclusive write (EW) - W tej metodzie co najmniej jeden procesor może jednocześnie zapisywać dane do miejsca w pamięci.
Concurrent read (CR) - Umożliwia wielu procesorom odczyt tych samych informacji z tego samego miejsca w pamięci w tym samym cyklu.
Concurrent write (CW)- Umożliwia jednoczesne operacje zapisu w tej samej lokalizacji pamięci. Aby uniknąć konfliktu zapisu, skonfigurowano pewne zasady.
Model złożoności VLSI
Komputery równoległe wykorzystują chipy VLSI do wytwarzania macierzy procesorów, macierzy pamięci i dużych sieci przełączających.
Obecnie technologie VLSI są dwuwymiarowe. Rozmiar chipa VLSI jest proporcjonalny do ilości miejsca (pamięci) dostępnego w tym układzie.
Możemy obliczyć złożoność przestrzenną algorytmu na podstawie obszaru chipa (A) implementacji chipu VLSI tego algorytmu. Jeśli T jest czasem (opóźnieniem) potrzebnym do wykonania algorytmu, to AT określa górną granicę całkowitej liczby bitów przetwarzanych przez chip (lub we / wy). W przypadku niektórych obliczeń istnieje dolna granica f (s), taka że
W 2 > = O (f (s))
Gdzie A = obszar wióra, a T = czas
Tory rozwoju architektury
Ewolucję komputerów równoległych rozprzestrzeniam wzdłuż następujących ścieżek -
- Wiele ścieżek procesora
- Ścieżka wieloprocesorowa
- Ścieżka z wieloma komputerami
- Wiele ścieżek danych
- Tor wektorowy
- Ścieżka SIMD
- Śledzenie wielu wątków
- Ścieżka wielowątkowa
- Ścieżka przepływu danych
W multiple processor trackzakłada się, że różne wątki są wykonywane jednocześnie na różnych procesorach i komunikują się za pośrednictwem pamięci współdzielonej (ścieżka wieloprocesorowa) lub systemu przekazywania komunikatów (ścieżka wielokomputera).
W multiple data track, zakłada się, że ten sam kod jest wykonywany na ogromnej ilości danych. Odbywa się to poprzez wykonanie tych samych instrukcji na sekwencji elementów danych (ścieżka wektorowa) lub poprzez wykonanie tej samej sekwencji instrukcji na podobnym zestawie danych (ścieżka SIMD).
W multiple threads trackzakłada się, że przeplatane wykonywanie różnych wątków na tym samym procesorze w celu ukrycia opóźnień synchronizacji między wątkami wykonującymi się na różnych procesorach. Przeplot wątku może być zgrubny (ścieżka wielowątkowa) lub drobny (ścieżka przepływu danych).
W latach 80-tych do tworzenia multikomputerów o nazwie Transputer. Transputer składał się z jednego procesora rdzeniowego, małej pamięci SRAM, głównego interfejsu pamięci DRAM i czterech kanałów komunikacyjnych, a wszystko to na jednym chipie. Aby umożliwić równoległą komunikację komputerową, kanały zostały połączone w sieć Transputers. Brakuje mu jednak mocy obliczeniowej i dlatego nie może sprostać rosnącemu zapotrzebowaniu na aplikacje równoległe. Ten problem został rozwiązany przez rozwój procesorów RISC i był również tani.
Nowoczesny komputer równoległy wykorzystuje mikroprocesory, które używają równoległości na kilku poziomach, takich jak paralelizm na poziomie instrukcji i równoległość na poziomie danych.
Procesory o wysokiej wydajności
Procesory RISC i RISCy dominują na dzisiejszym rynku komputerów równoległych.
Charakterystyka tradycyjnego RISC to -
- Ma kilka trybów adresowania.
- Ma ustalony format instrukcji, zwykle 32 lub 64 bity.
- Posiada dedykowane instrukcje ładowania / przechowywania do ładowania danych z pamięci w celu rejestracji i przechowywania danych z rejestru do pamięci.
- Operacje arytmetyczne są zawsze wykonywane na rejestrach.
- Wykorzystuje rurociągi.
Większość dzisiejszych mikroprocesorów jest superskalarna, tj. W równoległym komputerze wykorzystuje się potoki wielu instrukcji. Dlatego procesory superskalarne mogą jednocześnie wykonywać więcej niż jedną instrukcję. Skuteczność procesorów superskalarnych zależy od ilości równoległości na poziomie instrukcji (ILP) dostępnej w aplikacjach. Aby potoki były wypełnione, instrukcje na poziomie sprzętu są wykonywane w innej kolejności niż kolejność programu.
Wiele nowoczesnych mikroprocesorów wykorzystuje podejście superpotokowe . W superpotokach , aby zwiększyć częstotliwość taktowania, praca wykonywana na etapie potoku jest zmniejszona, a liczba stopni rurociągu jest zwiększona.
Bardzo duże procesory ze słowami instrukcji (VLIW)
Pochodzą one z poziomego mikroprogramowania i przetwarzania superskalarnego. Instrukcje w procesorach VLIW są bardzo duże. Operacje w ramach pojedynczej instrukcji są wykonywane równolegle i przekazywane do wykonania do odpowiednich jednostek funkcjonalnych. Zatem po pobraniu instrukcji VLIW jej operacje są dekodowane. Następnie operacje są wysyłane do jednostek funkcjonalnych, w których są wykonywane równolegle.
Procesory wektorowe
Procesory wektorowe są koprocesorami do mikroprocesorów ogólnego przeznaczenia. Procesory wektorowe są na ogół rejestrami lub pamięcią. Instrukcja wektorowa jest pobierana i dekodowana, a następnie wykonywana jest określona operacja dla każdego elementu wektorów operandów, podczas gdy w normalnym procesorze operacja wektora wymaga struktury pętli w kodzie. Aby uczynić to bardziej wydajnym, procesory wektorowe łączą kilka operacji na wektorach razem, tj. Wynik jednej operacji wektorowej jest przekazywany do innego jako operand.
Buforowanie
Pamięci podręczne są ważnym elementem wysokowydajnych mikroprocesorów. Po każdych 18 miesiącach prędkość mikroprocesorów wzrasta dwukrotnie, ale chipy DRAM dla pamięci głównej nie mogą konkurować z tą prędkością. Tak więc pamięci podręczne są wprowadzane w celu wypełnienia luki w szybkości między procesorem a pamięcią. Pamięć podręczna to szybka i niewielka pamięć SRAM. O wiele więcej pamięci podręcznych jest stosowanych w nowoczesnych procesorach, takich jak bufory translacji (TLB), pamięci podręczne instrukcji i danych itp.
Bezpośrednio mapowana pamięć podręczna
W bezpośrednich mapowanych pamięciach podręcznych, funkcja „modulo” jest używana do mapowania jeden do jednego adresów w pamięci głównej na lokalizacje pamięci podręcznej. Ponieważ ten sam wpis pamięci podręcznej może mieć przypisane do niego wiele głównych bloków pamięci, procesor musi być w stanie określić, czy blok danych w pamięci podręcznej jest blokiem danych, który jest faktycznie potrzebny. Ta identyfikacja odbywa się poprzez przechowywanie tagu razem z blokiem pamięci podręcznej.
W pełni asocjacyjna pamięć podręczna
W pełni asocjacyjne mapowanie pozwala na umieszczenie bloku pamięci podręcznej w dowolnym miejscu pamięci podręcznej. Korzystając z pewnych zasad wymiany, pamięć podręczna określa wpis pamięci podręcznej, w którym przechowuje blok pamięci podręcznej. W pełni asocjacyjne pamięci podręczne mają elastyczne mapowanie, co minimalizuje liczbę konfliktów z wpisami do pamięci podręcznej. Ponieważ w pełni asocjacyjna implementacja jest kosztowna, nigdy nie są one używane na dużą skalę.
Pamięć podręczna asocjacyjna
Mapowanie zbiorowo asocjacyjne jest połączeniem mapowania bezpośredniego i mapowania w pełni asocjacyjnego. W tym przypadku wpisy pamięci podręcznej są podzielone na zestawy pamięci podręcznej. Podobnie jak w przypadku mapowania bezpośredniego, istnieje stałe mapowanie bloków pamięci do zestawu w pamięci podręcznej. Ale w zestawie pamięci podręcznej blok pamięci jest mapowany w sposób w pełni asocjacyjny.
Strategie pamięci podręcznej
Oprócz mechanizmu mapowania pamięci podręczne wymagają również szeregu strategii, które określają, co powinno się stać w przypadku określonych zdarzeń. W przypadku (ustaw-) asocjacyjnych pamięci podręcznych, pamięć podręczna musi określić, który blok pamięci podręcznej ma zostać zastąpiony nowym blokiem wchodzącym do pamięci podręcznej.
Niektóre dobrze znane strategie wymiany to:
- First-In First Out (FIFO)
- Najrzadziej używane (LRU)
W tym rozdziale omówimy wieloprocesory i multikomputery.
Wieloprocesorowe połączenia systemowe
Przetwarzanie równoległe wymaga użycia wydajnych połączeń systemowych do szybkiej komunikacji pomiędzy urządzeniami wejścia / wyjścia i urządzeniami peryferyjnymi, procesorami wieloprocesorowymi i pamięcią współdzieloną.
Hierarchiczne systemy magistrali
Hierarchiczny system magistrali składa się z hierarchii magistral łączących różne systemy i podsystemy / komponenty w komputerze. Każda magistrala składa się z szeregu linii sygnałowych, sterujących i zasilających. Różne magistrale, takie jak magistrale lokalne, magistrale płyty montażowej i magistrale we / wy są używane do wykonywania różnych funkcji połączeń.
Autobusy lokalne to autobusy zaimplementowane na płytkach drukowanych. Magistrala backplane to obwód drukowany, na którym zastosowano wiele złączy do podłączenia funkcjonalnych płytek. Magistrale, które łączą urządzenia wejścia / wyjścia z systemem komputerowym, nazywane są magistralami I / O.
Przełącznik poprzeczny i pamięć wieloportowa
Sieci komutowane zapewniają dynamiczne połączenia między wejściami i wyjściami. Małe i średnie systemy najczęściej wykorzystują sieci poprzeczne. Sieci wielostopniowe można rozszerzyć na większe systemy, jeśli uda się rozwiązać problem zwiększonych opóźnień.
Zarówno przełącznik poprzeczny, jak i organizacja pamięci wieloportowej to sieć jednostopniowa. Chociaż budowa sieci jednoetapowej jest tańsza, do ustanowienia niektórych połączeń może być potrzebnych wiele przejść. Sieć wielostopniowa ma więcej niż jeden stopień przełączników. Sieci te powinny mieć możliwość podłączenia dowolnego wejścia do dowolnego wyjścia.
Sieci wielostopniowe i łączone
Sieci wielostopniowe lub wielostopniowe sieci wzajemne to klasa szybkich sieci komputerowych, które składają się głównie z elementów przetwarzających na jednym końcu sieci i elementów pamięci na drugim końcu, połączonych za pomocą elementów przełączających.
Sieci te są wykorzystywane do budowy większych systemów wieloprocesorowych. Obejmuje to Omega Network, Butterfly Network i wiele innych.
Multikomputery
Multikomputery to architektury MIMD z pamięcią rozproszoną. Poniższy diagram przedstawia koncepcyjny model multikomputera -
Multikomputery to maszyny do przesyłania wiadomości, które stosują metodę przełączania pakietów do wymiany danych. Tutaj każdy procesor ma prywatną pamięć, ale nie ma globalnej przestrzeni adresowej, ponieważ procesor ma dostęp tylko do własnej pamięci lokalnej. Zatem komunikacja nie jest przejrzysta: tutaj programiści muszą jawnie umieścić w swoim kodzie prymitywy komunikacyjne.
Brak dostępnej globalnie pamięci jest wadą multikomputerów. Można to rozwiązać za pomocą dwóch poniższych schematów -
- Wirtualna pamięć współdzielona (VSM)
- Współdzielona pamięć wirtualna (SVM)
W tych schematach programista aplikacji zakłada dużą pamięć współdzieloną, która jest adresowalna globalnie. Jeśli jest to wymagane, odwołania do pamięci tworzone przez aplikacje są tłumaczone na paradygmat przekazywania wiadomości.
Wirtualna pamięć współdzielona (VSM)
VSM to implementacja sprzętowa. Tak więc system pamięci wirtualnej systemu operacyjnego jest transparentnie wdrażany na szczycie VSM. Tak więc system operacyjny uważa, że działa na komputerze z pamięcią współdzieloną.
Współdzielona pamięć wirtualna (SVM)
SVM to implementacja oprogramowania na poziomie systemu operacyjnego ze wsparciem sprzętowym z jednostki zarządzania pamięcią (MMU) procesora. Tutaj jednostką udostępniania są strony pamięci systemu operacyjnego.
Jeśli procesor adresuje określone miejsce w pamięci, MMU określa, czy strona pamięci związana z dostępem do pamięci znajduje się w pamięci lokalnej, czy nie. Jeśli strony nie ma w pamięci, w normalnym systemie komputerowym jest zamieniana z dysku przez system operacyjny. Ale w SVM system operacyjny pobiera stronę ze zdalnego węzła, który jest właścicielem tej konkretnej strony.
Trzy generacje multikomputerów
W tej sekcji omówimy trzy generacje multikomputerów.
Wybory projektowe w przeszłości
Wybierając technologię procesorową, projektant multikomputerów wybiera tanie procesory o średniej ziarnistości jako elementy składowe. Większość komputerów równoległych jest zbudowana ze standardowych, gotowych mikroprocesorów. Rozproszona pamięć została wybrana dla wielu komputerów zamiast używania pamięci współdzielonej, co ograniczyłoby skalowalność. Każdy procesor ma własną lokalną jednostkę pamięci.
W przypadku schematu połączeń multikomputery mają przekazywanie komunikatów, bezpośrednie sieci typu punkt-punkt, a nie sieci z przełączaniem adresów. Do strategii sterowania projektant wielu komputerów wybiera asynchroniczne operacje MIMD, MPMD i SMPD. Cosmic Cube firmy Caltech (Seitz, 1983) to pierwszy z multi-komputerów pierwszej generacji.
Obecny i przyszły rozwój
Komputery nowej generacji ewoluowały od średnich do drobnoziarnistych multikomputerów wykorzystujących globalnie współdzieloną pamięć wirtualną. Obecnie w użyciu są nadal komputery drugiej generacji. Ale używając lepszego procesora, takiego jak i386, i860 itp., Komputery drugiej generacji bardzo się rozwinęły.
Komputery trzeciej generacji to komputery nowej generacji, w których będą używane węzły zaimplementowane w technologii VLSI. Każdy węzeł może mieć procesor 14 MIPS, kanały routingu 20 MB / s i 16 KB pamięci RAM zintegrowane w jednym układzie.
System Intel Paragon
Wcześniej jednorodne węzły były używane do tworzenia multikomputerów hipersześcianu, ponieważ wszystkie funkcje były przekazywane do hosta. Więc to ograniczyło przepustowość I / O. Dlatego komputery te nie mogły być używane do skutecznego rozwiązywania problemów na dużą skalę lub z dużą przepustowością. System Intel Paragon został zaprojektowany, aby przezwyciężyć tę trudność. Dzięki temu multikomputer stał się serwerem aplikacji z dostępem wielu użytkowników w środowisku sieciowym.
Mechanizmy przekazywania wiadomości
Mechanizmy przekazywania wiadomości w sieci z wieloma komputerami wymagają specjalnego sprzętu i oprogramowania. W tej sekcji omówimy niektóre schematy.
Schematy routingu wiadomości
W multikomputerze ze schematem trasowania „store and forward” pakiety są najmniejszą jednostką transmisji informacji. W sieciach z routingiem wormhole pakiety są dalej dzielone na przepływy. Długość pakietu jest określana przez schemat routingu i implementację sieci, podczas gdy długość przepływu zależy od rozmiaru sieci.
W Store and forward routing, pakiety są podstawową jednostką transmisji informacji. W tym przypadku każdy węzeł używa bufora pakietów. Pakiet jest przesyłany z węzła źródłowego do węzła docelowego przez sekwencję węzłów pośrednich. Opóźnienie jest wprost proporcjonalne do odległości między źródłem a celem.
W wormhole routing, transmisja z węzła źródłowego do węzła docelowego odbywa się za pośrednictwem sekwencji routerów. Wszystkie przepływy tego samego pakietu są przesyłane w nierozerwalnej kolejności w sposób potokowy. W tym przypadku tylko przepływ nagłówka wie, dokąd zmierza pakiet.
Zakleszczenie i kanały wirtualne
Kanał wirtualny to logiczne łącze między dwoma węzłami. Tworzy go bufor flit w węźle źródłowym i odbiorczym oraz kanał fizyczny między nimi. Kiedy kanał fizyczny jest przydzielany parze, jeden bufor źródłowy jest sparowany z jednym buforem odbiornika w celu utworzenia kanału wirtualnego.
Gdy wszystkie kanały są zajęte przez komunikaty i żaden z kanałów w cyklu nie zostanie zwolniony, nastąpi zakleszczenie. Aby tego uniknąć, należy przestrzegać schematu unikania zakleszczenia.
W tym rozdziale omówimy protokoły spójności pamięci podręcznej w celu rozwiązania problemów związanych z niespójnością pamięci podręcznej.
Problem spójności pamięci podręcznej
W systemie wieloprocesorowym może wystąpić niespójność danych między sąsiednimi poziomami lub w ramach tego samego poziomu w hierarchii pamięci. Na przykład pamięć podręczna i pamięć główna mogą mieć niespójne kopie tego samego obiektu.
Powoduje to, że wiele procesorów działa równolegle i niezależnie wiele pamięci podręcznych może mieć różne kopie tego samego bloku pamięci cache coherence problem. Cache coherence schemes pomagają uniknąć tego problemu, utrzymując jednolity stan każdego zbuforowanego bloku danych.
Niech X będzie elementem udostępnionych danych, do którego odwołują się dwa procesory, P1 i P2. Na początku trzy kopie X są spójne. Jeśli procesor P1 zapisuje nowe dane X1 w pamięci podręcznej, używającwrite-through policy, ta sama kopia zostanie natychmiast zapisana do pamięci współdzielonej. W takim przypadku występuje niespójność między pamięcią podręczną a pamięcią główną. Kiedywrite-back policy jest używana, pamięć główna zostanie zaktualizowana, gdy zmodyfikowane dane w pamięci podręcznej zostaną zastąpione lub unieważnione.
Ogólnie rzecz biorąc, istnieją trzy źródła problemu niespójności -
- Udostępnianie zapisywalnych danych
- Migracja procesowa
- Aktywność we / wy
Protokoły magistrali Snoopy
Protokoły Snoopy zapewniają spójność danych między pamięcią podręczną a pamięcią współużytkowaną za pośrednictwem systemu pamięci opartego na magistrali. Write-invalidate i write-update zasady są używane do zachowania spójności pamięci podręcznej.
W tym przypadku mamy trzy procesory P1, P2 i P3 posiadające spójną kopię elementu danych „X” w lokalnej pamięci podręcznej i w pamięci współdzielonej (Rysunek a). Procesor P1 zapisuje X1 w swojej pamięci podręcznej przy użyciuwrite-invalidate protocol. Tak więc wszystkie inne kopie są unieważniane przez autobus. Jest oznaczony przez „I” (Rysunek-b). Unieważnione bloki są również nazywanedirtytzn. nie powinny być używane. Plikwrite-update protocolaktualizuje wszystkie kopie pamięci podręcznej za pośrednictwem magistrali. Używającwrite back cache, kopia pamięci jest również aktualizowana (Rysunek-c).
Zdarzenia i akcje w pamięci podręcznej
Następujące zdarzenia i akcje występują podczas wykonywania poleceń dostępu do pamięci i unieważniania -
Read-miss- Gdy procesor chce odczytać blok i nie ma go w pamięci podręcznej, występuje błąd odczytu. To inicjujebus-readoperacja. Jeśli nie ma brudnej kopii, wówczas pamięć główna, która ma spójną kopię, dostarcza kopię do żądającej pamięci podręcznej. Jeśli brudna kopia istnieje w zdalnej pamięci podręcznej, ta pamięć podręczna ograniczy pamięć główną i wyśle kopię do żądającej pamięci podręcznej. W obu przypadkach kopia z pamięci podręcznej przejdzie do stanu prawidłowego po utracie odczytu.
Write-hit - Jeśli kopia jest zabrudzona lub reservedstan, zapis jest wykonywany lokalnie, a nowy stan jest brudny. Jeśli nowy stan jest prawidłowy, polecenie unieważnienia zapisu jest rozgłaszane do wszystkich pamięci podręcznych, unieważniając ich kopie. Gdy pamięć współdzielona jest zapisywana, wynikowy stan jest rezerwowany po pierwszym zapisie.
Write-miss- Jeśli procesor nie zapisuje w lokalnej pamięci podręcznej, kopia musi pochodzić albo z pamięci głównej, albo ze zdalnej pamięci podręcznej z brudnym blokiem. Odbywa się to poprzez wysłanie plikuread-invalidatepolecenie, które unieważni wszystkie kopie pamięci podręcznej. Następnie kopia lokalna jest aktualizowana stanem brudnym.
Read-hit - Trafienie w odczyt jest zawsze wykonywane w lokalnej pamięci podręcznej bez powodowania zmiany stanu lub używania szyny Snoopy do unieważnienia.
Block replacement- Gdy kopia jest zabrudzona, należy ją zapisać z powrotem do pamięci głównej metodą zamiany bloku. Jednak gdy kopia jest ważna, zastrzeżona lub nieważna, wymiana nie nastąpi.
Protokoły oparte na katalogach
Wykorzystując sieć wielostopniową do budowy dużego procesora wieloprocesorowego z setkami procesorów, należy zmodyfikować protokoły pamięci podręcznej snoopy, aby dopasować je do możliwości sieci. Transmisja jest bardzo kosztowna do wykonania w sieci wielostopniowej, polecenia spójności są wysyłane tylko do tych pamięci podręcznych, które przechowują kopię bloku. Z tego powodu opracowano protokoły oparte na katalogach dla wielu procesorów podłączonych do sieci.
W systemie protokołów opartych na katalogach dane, które mają być udostępnione, są umieszczane we wspólnym katalogu, który zapewnia spójność między pamięciami podręcznymi. Tutaj katalog działa jak filtr, w którym procesory proszą o pozwolenie na załadowanie wpisu z pamięci podstawowej do swojej pamięci podręcznej. Jeśli wpis zostanie zmieniony, katalog aktualizuje go lub unieważnia inne pamięci podręczne z tym wpisem.
Mechanizmy synchronizacji sprzętu
Synchronizacja to specjalna forma komunikacji, w której zamiast kontroli danych wymieniane są informacje między komunikującymi się procesami znajdującymi się na tych samych lub różnych procesorach.
Systemy wieloprocesorowe wykorzystują mechanizmy sprzętowe do realizacji operacji synchronizacji niskiego poziomu. Większość procesorów wieloprocesorowych ma mechanizmy sprzętowe do narzucania niepodzielnych operacji, takich jak operacje odczytu, zapisu lub odczytu, modyfikacji i zapisu w celu zaimplementowania niektórych elementów pierwotnych synchronizacji. Oprócz atomowych operacji pamięciowych, niektóre przerwania międzyprocesorowe są również używane do celów synchronizacji.
Spójność pamięci podręcznej w maszynach z pamięcią współużytkowaną
Utrzymanie spójności pamięci podręcznej jest problemem w systemie wieloprocesorowym, gdy procesory zawierają lokalną pamięć podręczną. W tym systemie łatwo występuje niespójność danych między różnymi pamięciami podręcznymi.
Główne obszary zainteresowania to -
- Udostępnianie zapisywalnych danych
- Migracja procesowa
- Aktywność we / wy
Udostępnianie zapisywalnych danych
Kiedy dwa procesory (P1 i P2) mają ten sam element danych (X) w swoich lokalnych pamięciach podręcznych, a jeden proces (P1) zapisuje do elementu danych (X), ponieważ pamięci podręczne są lokalną pamięcią podręczną P1, pamięć główna jest również zaktualizowany. Teraz, gdy P2 próbuje odczytać element danych (X), nie znajduje X, ponieważ element danych w pamięci podręcznej P2 stał się nieaktualny.
Migracja procesowa
W pierwszym etapie pamięć podręczna P1 ma element danych X, podczas gdy P2 nie ma nic. Proces na P2 najpierw zapisuje w X, a następnie migruje do P1. Teraz proces rozpoczyna odczytywanie elementu danych X, ale ponieważ procesor P1 ma nieaktualne dane, proces nie może ich odczytać. Tak więc proces na P1 zapisuje do elementu danych X, a następnie migruje do P2. Po migracji proces na P2 rozpoczyna odczytywanie elementu danych X, ale znajduje przestarzałą wersję X w pamięci głównej.
Aktywność we / wy
Jak pokazano na rysunku, urządzenie we / wy jest dodawane do magistrali w dwuprocesorowej architekturze wieloprocesorowej. Na początku obie pamięci podręczne zawierają element danych X. Gdy urządzenie I / O otrzymuje nowy element X, zapisuje nowy element bezpośrednio w pamięci głównej. Teraz, kiedy P1 lub P2 (zakładając, że P1) próbuje odczytać element X, otrzymuje przestarzałą kopię. Zatem P1 zapisuje do elementu X. Teraz, jeśli urządzenie I / O próbuje przesłać X, otrzymuje przestarzałą kopię.
Jednolity dostęp do pamięci (UMA)
Architektura Uniform Memory Access (UMA) oznacza, że pamięć współdzielona jest taka sama dla wszystkich procesorów w systemie. Popularne klasy maszyn UMA, które są powszechnie używane w serwerach (plików), to tak zwane wieloprocesory symetryczne (SMP). W SMP wszystkie zasoby systemowe, takie jak pamięć, dyski, inne urządzenia we / wy itp. Są dostępne dla procesorów w jednolity sposób.
Niejednolity dostęp do pamięci (NUMA)
W architekturze NUMA istnieje wiele klastrów SMP posiadających wewnętrzną pośrednią / współdzieloną sieć, które są połączone w skalowalną sieć przekazywania wiadomości. Tak więc architektura NUMA jest logicznie współdzieloną, fizycznie rozproszoną architekturą pamięci.
W maszynie NUMA kontroler pamięci podręcznej procesora określa, czy odniesienie do pamięci jest lokalne w pamięci SMP, czy też jest zdalne. Aby zmniejszyć liczbę zdalnego dostępu do pamięci, architektury NUMA zwykle stosują procesory buforujące, które mogą buforować zdalne dane. Ale gdy w grę wchodzą pamięci podręczne, należy zachować spójność pamięci podręcznej. Więc te systemy są również znane jako CC-NUMA (Cache Coherent NUMA).
Architektura pamięci podręcznej (COMA)
Maszyny COMA są podobne do maszyn NUMA, z tą tylko różnicą, że główne pamięci maszyn COMA działają jako pamięci podręczne mapowane bezpośrednio lub asocjacyjne. Bloki danych są hashowane do lokalizacji w pamięci podręcznej DRAM zgodnie z ich adresami. Dane pobierane zdalnie są w rzeczywistości przechowywane w lokalnej pamięci głównej. Ponadto bloki danych nie mają stałej lokalizacji domowej, mogą swobodnie poruszać się po całym systemie.
Architektury COMA mają przeważnie hierarchiczną sieć przekazywania komunikatów. Przełącznik w takim drzewie zawiera katalog z elementami danych jako jego poddrzewem. Ponieważ dane nie mają lokalizacji domowej, należy je wyraźnie wyszukiwać. Oznacza to, że dostęp zdalny wymaga przejścia przez przełączniki w drzewie w celu przeszukania ich katalogów pod kątem wymaganych danych. Tak więc, jeśli przełącznik w sieci otrzymuje wiele żądań ze swojego poddrzewa dla tych samych danych, łączy je w jedno żądanie, które jest wysyłane do jednostki nadrzędnej przełącznika. Gdy żądane dane powrócą, przełącznik wysyła ich wiele kopii w dół swojego poddrzewa.
COMA kontra CC-NUMA
Poniżej przedstawiono różnice między COMA i CC-NUMA.
COMA jest bardziej elastyczny niż CC-NUMA, ponieważ COMA w przejrzysty sposób obsługuje migrację i replikację danych bez konieczności korzystania z systemu operacyjnego.
Maszyny COMA są drogie i złożone w budowie, ponieważ wymagają niestandardowego sprzętu do zarządzania pamięcią, a protokół spójności jest trudniejszy do wdrożenia.
Zdalny dostęp w COMA jest często wolniejszy niż w CC-NUMA, ponieważ w celu znalezienia danych należy przejść przez sieć drzewa.
Istnieje wiele metod obniżania kosztów sprzętu. Jedną z metod jest mniej ścisła integracja wspomagania komunikacji i sieci w węźle przetwarzającym oraz zwiększenie opóźnienia i zajętości komunikacji.
Inną metodą jest zapewnienie automatycznej replikacji i spójności oprogramowania, a nie sprzętu. Ta ostatnia metoda zapewnia replikację i spójność w pamięci głównej i może być wykonywana przy różnym stopniu szczegółowości. Pozwala na użycie gotowych części towarowych dla węzłów i połączeń międzysieciowych, minimalizując koszt sprzętu. To wywiera presję na programistę, aby osiągnąć dobrą wydajność.
Modele rozluźnionej spójności pamięci
Model spójności pamięci dla współdzielonej przestrzeni adresowej definiuje ograniczenia w kolejności, w jakiej operacje pamięci w tych samych lub różnych lokalizacjach wydają się być wykonywane względem siebie. W rzeczywistości każda warstwa systemu obsługująca model nazewnictwa współużytkowanej przestrzeni adresowej musi mieć model spójności pamięci, który obejmuje interfejs programisty, interfejs systemu użytkownika i interfejs sprzętowo-programowy. Oprogramowanie, które współdziała z tą warstwą, musi mieć świadomość własnego modelu spójności pamięci.
Specyfikacje systemu
Systemowa specyfikacja architektury określa kolejność i zmianę kolejności operacji pamięci oraz to, jaką wydajność można w rzeczywistości uzyskać.
Poniżej przedstawiono kilka modeli specyfikacji wykorzystujących rozluźnienia w kolejności programu -
Relaxing the Write-to-Read Program Order- Ta klasa modeli umożliwia sprzętowi tłumienie opóźnień operacji zapisu, które zostały pominięte w pamięci podręcznej pierwszego poziomu. Gdy błąd zapisu znajduje się w buforze zapisu i nie jest widoczny dla innych procesorów, procesor może zakończyć odczyty, które trafiły w jego pamięć podręczną lub nawet pojedynczy odczyt, który brakuje w jego pamięci podręcznej.
Relaxing the Write-to-Read and Write-to-Write Program Orders- Zezwolenie zapisom na ominięcie poprzednich zaległych zapisów w różnych lokalizacjach pozwala na połączenie wielu zapisów w buforze zapisu przed aktualizacją pamięci głównej. W ten sposób wiele błędów zapisu nakłada się i staje się widoczne poza kolejnością. Motywacją jest dalsze zminimalizowanie wpływu opóźnienia zapisu na czas przerwy procesora oraz zwiększenie wydajności komunikacji między procesorami poprzez udostępnienie nowych wartości danych innym procesorom.
Relaxing All Program Orders- Żadne polecenia programu nie są gwarantowane domyślnie, z wyjątkiem zależności danych i sterowania w ramach procesu. W związku z tym zaletą jest to, że wiele żądań odczytu może być oczekujących w tym samym czasie, aw kolejności programu mogą zostać ominięte przez późniejsze zapisy i mogą same zakończyć się poza kolejnością, co pozwala nam ukryć opóźnienia odczytu. Ten typ modeli jest szczególnie przydatny w przypadku procesorów planowanych dynamicznie, które mogą kontynuować poprzednie błędy odczytu do innych odwołań do pamięci. Pozwalają na wiele zmian kolejności, a nawet eliminację dostępu, który jest wykonywany przez optymalizacje kompilatora.
Interfejs programowania
Interfejsy programistyczne zakładają, że polecenia programu nie muszą w ogóle być utrzymywane między operacjami synchronizacji. Zapewnia się, że wszystkie operacje synchronizacji są wyraźnie oznaczone lub zidentyfikowane jako takie. Biblioteka środowiska uruchomieniowego lub kompilator tłumaczy te operacje synchronizacji na odpowiednie operacje zachowujące kolejność, których wymaga specyfikacja systemu.
Następnie system zapewnia sekwencyjnie spójne wykonywanie, nawet jeśli może zmieniać kolejność operacji między operacjami synchronizacji w dowolny sposób, bez zakłócania zależności od lokalizacji w procesie. Pozwala to kompilatorowi na dostateczną elastyczność pomiędzy punktami synchronizacji dla pożądanych zmian kolejności, a także daje procesorowi możliwość wykonania takiej liczby zmian kolejności, na jaką pozwala jego model pamięci. W interfejsie programisty model spójności powinien być co najmniej tak słaby, jak interfejs sprzętowy, ale nie musi być taki sam.
Mechanizmy tłumaczenia
W większości mikroprocesorów, tłumaczenie etykiet w celu utrzymania mechanizmów utrzymania sprowadza się do wstawienia odpowiedniej instrukcji bariery pamięci przed i / lub po każdej operacji oznaczonej jako synchronizacja. Zapisałby instrukcje z poszczególnymi ładunkami / magazynami wskazującymi, jakie zamówienia należy egzekwować, i unikając dodatkowych instrukcji. Ponieważ jednak operacje są zwykle rzadkie, nie jest to sposób, w jaki dotychczas postępowała większość mikroprocesorów.
Pokonywanie ograniczeń pojemności
Omówiliśmy systemy, które zapewniają automatyczną replikację i spójność sprzętową tylko w pamięci podręcznej procesora. Pamięć podręczna procesora, która nie jest najpierw replikowana w lokalnej pamięci głównej, replikuje zdalnie przydzielone dane bezpośrednio na podstawie odniesienia.
Problem z tymi systemami polega na tym, że zakres replikacji lokalnej jest ograniczony do pamięci podręcznej sprzętu. Jeśli blok jest zastępowany z pamięci podręcznej, musi zostać pobrany z pamięci zdalnej, gdy będzie ponownie potrzebny. Głównym celem systemów omówionych w tej sekcji jest rozwiązanie problemu wydajności replikacji, ale nadal zapewnianie spójności sprzętowej i drobnej ziarnistości bloków pamięci podręcznej w celu zwiększenia wydajności.
Tertiary Cache
Aby rozwiązać problem z wydajnością replikacji, jedną z metod jest użycie dużej, ale wolniejszej pamięci podręcznej dostępu zdalnego. Jest to potrzebne ze względu na funkcjonalność, gdy węzły maszyny same są wieloprocesorami na małą skalę i można je po prostu powiększyć w celu zwiększenia wydajności. Będzie również przechowywać zreplikowane zdalne bloki, które zostały zastąpione z lokalnej pamięci podręcznej procesora.
Architektury pamięci podręcznej (COMA)
W maszynach COMA każdy blok pamięci w całej pamięci głównej ma powiązany z nim znacznik sprzętowy. Nie ma stałego węzła, w którym zawsze jest zapewnione miejsce na blok pamięci. Dane dynamicznie migrują lub są replikowane w głównych pamięciach węzłów, które mają do nich dostęp / przyciągają. Kiedy uzyskiwany jest dostęp do zdalnego bloku, jest on replikowany w pamięci przyciągania i wprowadzany do pamięci podręcznej, a sprzęt zachowuje spójność w obu miejscach. Blok danych może znajdować się w dowolnej pamięci atrakcji i może być łatwo przenoszony z jednego do drugiego.
Zmniejszenie kosztów sprzętu
Obniżenie kosztów oznacza przeniesienie części funkcjonalności specjalistycznego sprzętu na oprogramowanie działające na istniejącym sprzęcie. Oprogramowanie jest znacznie łatwiejsze do zarządzania replikacją i spójnością w pamięci głównej niż w sprzętowej pamięci podręcznej. Tanie metody zwykle zapewniają replikację i spójność w pamięci głównej. Aby spójność była efektywnie kontrolowana, każdy z pozostałych komponentów funkcjonalnych asysty może być wykorzystany dzięki specjalizacji i integracji sprzętu.
Wysiłki badawcze mają na celu obniżenie kosztów za pomocą różnych podejść, takich jak kontrola dostępu na specjalistycznym sprzęcie, ale przypisanie innych czynności do oprogramowania i sprzętu. Inne podejście polega na wykonaniu kontroli dostępu w oprogramowaniu i jest przeznaczone do przydzielania spójnej abstrakcji wspólnej przestrzeni adresowej w węzłach towarowych i sieciach bez specjalistycznej obsługi sprzętowej.
Implikacje dla oprogramowania równoległego
Rozluźniony model spójności pamięci wymaga, aby programy równoległe oznaczały żądane konflikty dostępu jako punkty synchronizacji. Język programowania zapewnia obsługę etykietowania niektórych zmiennych jako synchronizacji, które następnie zostaną przetłumaczone przez kompilator na odpowiednią instrukcję zachowującą kolejność. Aby ograniczyć możliwość zmiany kolejności dostępu przez kompilatory do pamięci współdzielonej, kompilator może samodzielnie używać etykiet.
Na interconnection networkw maszynie równoległej przesyła informacje z dowolnego węzła źródłowego do dowolnego pożądanego węzła docelowego. Zadanie to należy wykonać z jak najmniejszym opóźnieniem. Powinno to pozwolić na równoczesne dokonywanie dużej liczby takich transferów. Ponadto powinien być niedrogi w porównaniu z kosztem pozostałej części maszyny.
Sieć składa się z łączy i przełączników, które pomagają przesyłać informacje z węzła źródłowego do węzła docelowego. Sieć jest określona przez jej topologię, algorytm routingu, strategię przełączania i mechanizm kontroli przepływu.
Struktura organizacyjna
Sieci połączeń składają się z trzech podstawowych elementów -
Links- Łącze to kabel składający się z co najmniej jednego włókna światłowodowego lub przewodu elektrycznego ze złączem na każdym końcu podłączonym do przełącznika lub portu interfejsu sieciowego. Dzięki temu sygnał analogowy jest przesyłany z jednego końca, a odbierany z drugiego w celu uzyskania oryginalnego cyfrowego strumienia informacji.
Switches- Przełącznik składa się z zestawu portów wejściowych i wyjściowych, wewnętrznej „poprzeczki” łączącej wszystkie wejścia ze wszystkimi wyjściami, wewnętrznego buforowania i logiki sterującej, która zapewnia połączenie wejścia-wyjścia w każdym momencie. Ogólnie liczba portów wejściowych jest równa liczbie portów wyjściowych.
Network Interfaces- Interfejs sieciowy zachowuje się zupełnie inaczej niż węzły przełączające i może być połączony za pomocą specjalnych łączy. Interfejs sieciowy formatuje pakiety i konstruuje informacje o routingu i sterowaniu. W porównaniu z przełącznikiem może mieć buforowanie wejścia i wyjścia. Może wykonywać kompleksowe sprawdzanie błędów i kontrolę przepływu. W związku z tym na jego koszt wpływa złożoność przetwarzania, pojemność pamięci masowej i liczba portów.
Sieć połączeń
Sieci połączeń składają się z elementów przełączających. Topologia to wzorzec łączenia poszczególnych przełączników z innymi elementami, takimi jak procesory, pamięci i inne przełączniki. Sieć umożliwia wymianę danych między procesorami w systemie równoległym.
Direct connection networks- Sieci bezpośrednie mają połączenia typu punkt-punkt między sąsiednimi węzłami. Sieci te są statyczne, co oznacza, że połączenia typu punkt-punkt są stałe. Niektóre przykłady sieci bezpośrednich to pierścienie, oczka i kostki.
Indirect connection networks- Sieci pośrednie nie mają stałych sąsiadów. Topologię komunikacji można zmieniać dynamicznie w zależności od wymagań aplikacji. Sieci pośrednie można podzielić na trzy części: sieci magistralne, sieci wielostopniowe i przełączniki poprzeczne.
Bus networks- Sieć magistrali składa się z pewnej liczby linii bitowych, do których jest dołączonych wiele zasobów. Gdy magistrale używają tych samych linii fizycznych dla danych i adresów, linie danych i adresów są multipleksowane czasowo. Gdy do magistrali jest podłączonych wiele urządzeń nadrzędnych magistrali, potrzebny jest arbiter.
Multistage networks- Sieć wielostopniowa składa się z wielu stopni przełączników. Składa się z przełączników „axb”, które są połączone za pomocą określonego schematu połączeń międzystopniowych (ISC). Małe elementy przełączników 2x2 są powszechnym wyborem w wielu sieciach wielostopniowych. Liczba etapów określa opóźnienie sieci. Wybierając różne wzorce połączeń międzystopniowych, można tworzyć różne typy sieci wielostopniowych.
Crossbar switches- Przełącznik poprzeczny zawiera macierz prostych elementów przełącznika, które można włączać i wyłączać w celu utworzenia lub przerwania połączenia. Włączając element przełączający w matrycy, można wykonać połączenie między procesorem a pamięcią. Przełączniki poprzeczne nie blokują się, to znaczy wszystkie permutacje komunikacji mogą być wykonywane bez blokowania.
Ocena kompromisów projektowych w topologii sieci
Jeśli głównym problemem jest odległość trasowania, wówczas wymiar należy zmaksymalizować i wykonać hipersześcian. W przypadku routingu „store and forward”, przy założeniu, że stopień przełączenia i liczba łączy nie stanowiły znaczącego czynnika kosztowego, a liczba łączy lub stopień przełącznika są głównymi kosztami, wymiar należy zminimalizować, a siatka wybudowany.
W najgorszym przypadku wzorzec ruchu dla każdej sieci, preferowane są sieci wielowymiarowe, w których wszystkie ścieżki są krótkie. We wzorcach, w których każdy węzeł komunikuje się tylko z jednym lub dwoma pobliskimi sąsiadami, preferowane są sieci niskowymiarowe, ponieważ w rzeczywistości używa się tylko kilku wymiarów.
Wytyczanie
Algorytm routingu sieci określa, która z możliwych ścieżek od źródła do miejsca przeznaczenia jest używana jako trasy oraz w jaki sposób jest określana trasa, po której następuje każdy pakiet. Routing według kolejności wymiarów ogranicza zbiór dozwolonych ścieżek, dzięki czemu istnieje dokładnie jedna trasa z każdego źródła do każdego miejsca docelowego. Ten uzyskany przez pokonanie najpierw odpowiedniej odległości w wymiarze wyższego rzędu, następnie w następnym wymiarze i tak dalej.
Mechanizmy routingu
Arytmetyka, wybór portu w oparciu o źródło i przeglądanie tabeli to trzy mechanizmy, których szybkie przełączniki używają do określania kanału wyjściowego na podstawie informacji w nagłówku pakietu. Wszystkie te mechanizmy są prostsze niż rodzaj ogólnych obliczeń routingu stosowanych w tradycyjnych routerach sieci LAN i WAN. W równoległych sieciach komputerowych przełącznik musi podejmować decyzję o routingu dla wszystkich swoich wejść w każdym cyklu, więc mechanizm musi być prosty i szybki.
Routing deterministyczny
Algorytm routingu jest deterministyczny, jeśli trasa obrana przez komunikat jest określana wyłącznie przez jego źródło i miejsce docelowe, a nie przez inny ruch w sieci. Jeśli algorytm routingu wybiera tylko najkrótsze ścieżki do miejsca docelowego, jest on minimalny, w przeciwnym razie nie jest minimalny.
Deadlock Freedom
W różnych sytuacjach może wystąpić impas. Gdy dwa węzły próbują wysłać do siebie dane i każdy z nich rozpoczyna wysyłanie, zanim którykolwiek z nich odbierze, może dojść do impasu „czołowego”. Inny przypadek zakleszczenia występuje, gdy istnieje wiele wiadomości konkurujących o zasoby w sieci.
Podstawową techniką udowodnienia, że sieć jest wolna od zakleszczeń, jest usunięcie zależności, które mogą wystąpić między kanałami w wyniku komunikatów przepływających przez sieci, i pokazanie, że nie ma cykli na ogólnym wykresie zależności kanału; stąd nie ma wzorców ruchu, które mogłyby prowadzić do impasu. Powszechnym sposobem wykonywania tego jest numerowanie zasobów kanału w taki sposób, aby wszystkie trasy przebiegały zgodnie z określoną sekwencją rosnącą lub malejącą, tak aby nie powstawały cykle zależności.
Projekt przełącznika
Projekt sieci zależy od projektu przełącznika i sposobu połączenia przełączników. Stopień przełącznika, jego wewnętrzne mechanizmy routingu i wewnętrzne buforowanie decydują o tym, jakie topologie mogą być obsługiwane i jakie algorytmy routingu można zaimplementować. Jak każdy inny element sprzętowy systemu komputerowego, przełącznik sieciowy zawiera ścieżkę danych, sterowanie i pamięć.
Porty
Całkowita liczba pinów to w rzeczywistości całkowita liczba portów wejściowych i wyjściowych pomnożona przez szerokość kanału. Ponieważ obwód chipa rośnie powoli w porównaniu z obszarem, przełączniki są zwykle ograniczone pinami.
Wewnętrzna ścieżka danych
Ścieżka danych to łączność między każdym zestawem portów wejściowych i każdym portem wyjściowym. Jest ogólnie określany jako wewnętrzna poprzeczka. Nieblokująca poprzeczka to taka, w której każdy port wejściowy może być podłączony do odrębnego wyjścia w dowolnej permutacji jednocześnie.
Bufory kanałów
Organizacja pamięci buforowej w przełączniku ma istotny wpływ na wydajność przełącznika. Tradycyjne routery i przełączniki mają zwykle duże bufory SRAM lub DRAM poza strukturą przełącznika, podczas gdy w przełącznikach VLSI buforowanie jest wewnętrzne dla przełącznika i pochodzi z tego samego budżetu krzemowego, co ścieżka danych i sekcja sterowania. Wraz ze wzrostem rozmiaru i gęstości chipa dostępnych jest więcej buforowania, a projektant sieci ma więcej opcji, ale nadal najważniejszy jest wybór bufora, a jego organizacja jest ważna.
Kontrola przepływu
Gdy wiele przepływów danych w sieci próbuje jednocześnie korzystać z tych samych współdzielonych zasobów sieciowych, należy podjąć pewne działania, aby kontrolować te przepływy. Jeśli nie chcemy stracić żadnych danych, niektóre przepływy muszą zostać zablokowane, podczas gdy inne kontynuują.
Problem kontroli przepływu pojawia się we wszystkich sieciach i na wielu poziomach. Ale jakościowo różni się w równoległych sieciach komputerowych niż w sieciach lokalnych i rozległych. W komputerach równoległych ruch sieciowy musi być dostarczany mniej więcej tak dokładnie, jak ruch przez magistralę, a istnieje bardzo duża liczba równoległych przepływów w bardzo małej skali czasu.
Szybkość mikroprocesorów wzrosła ponad dziesięciokrotnie na dekadę, ale szybkość pamięci towarowych (DRAM) wzrosła tylko dwukrotnie, tj. Czas dostępu skrócił się o połowę. Dlatego opóźnienie dostępu do pamięci wyrażone w cyklach zegara procesora rośnie sześciokrotnie w ciągu 10 lat. Multiprocesory zintensyfikowały problem.
W systemach opartych na magistrali ustanowienie magistrali o dużej przepustowości między procesorem a pamięcią ma tendencję do zwiększania opóźnienia w uzyskiwaniu danych z pamięci. Gdy pamięć jest fizycznie rozproszona, opóźnienie sieci i interfejsu sieciowego jest dodawane do opóźnienia dostępu do pamięci lokalnej w węźle.
Opóźnienie zwykle rośnie wraz z rozmiarem maszyny, ponieważ więcej węzłów oznacza większą komunikację w stosunku do obliczeń, więcej skoków w sieci dla ogólnej komunikacji i prawdopodobnie więcej rywalizacji. Głównym celem projektowania sprzętu jest zmniejszenie opóźnień dostępu do danych przy zachowaniu wysokiej, skalowalnej przepustowości.
Przegląd tolerancji opóźnień
Sposób obsługi tolerancji na opóźnienia najlepiej zrozumieć, patrząc na zasoby w maszynie i sposób ich wykorzystania. Z punktu widzenia procesora architekturę komunikacji z jednego węzła do drugiego można postrzegać jako potok. Etapy rurociągu obejmują interfejsy sieciowe u źródła i celu, a także łącza sieciowe i przełączniki po drodze. W zależności od tego, jak architektura zarządza komunikacją, istnieją również etapy wspomagania komunikacji, lokalna pamięć / system pamięci podręcznej i główny procesor.
Problem wykorzystania w podstawowej strukturze komunikacyjnej polega na tym, że albo procesor, albo architektura komunikacyjna jest zajęta w danym czasie, aw potoku komunikacyjnym tylko jeden etap jest zajęty w danym momencie, gdy przesyłane pojedyncze słowo przemieszcza się od źródła do celu. Celem tolerancji na opóźnienia jest jak największe pokrywanie się wykorzystania tych zasobów.
Tolerancja opóźnienia w przekazywaniu jawnych komunikatów
Rzeczywisty transfer danych podczas przekazywania wiadomości jest zwykle inicjowany przez nadawcę za pomocą operacji wysyłania. Operacja odbioru sama w sobie nie motywuje do przesłania danych, ale raczej kopiuje dane z przychodzącego bufora do przestrzeni adresowej aplikacji. Komunikacja inicjowana przez odbiorcę odbywa się poprzez wysłanie komunikatu żądania do procesu, który jest źródłem danych. Następnie proces przesyła dane z powrotem za pośrednictwem innej wysyłki.
Synchroniczna operacja wysyłania ma opóźnienie komunikacji równe czasowi potrzebnemu do przesłania wszystkich danych w komunikacie do miejsca docelowego oraz czasowi przetwarzania odbioru i czasowi zwrotu potwierdzenia. Opóźnienie synchronicznej operacji odbioru to narzut przetwarzania; co obejmuje kopiowanie danych do aplikacji i dodatkowe opóźnienie, jeśli dane jeszcze nie dotarły. Chcielibyśmy ukryć te opóźnienia, w tym narzuty, jeśli to możliwe, na obu końcach.
Tolerancja opóźnień we współdzielonej przestrzeni adresowej
Podstawowa komunikacja odbywa się poprzez odczyty i zapisy we wspólnej przestrzeni adresowej. Dla wygody nazywa się to komunikacją do odczytu i zapisu. Komunikacja inicjowana przez odbiornik odbywa się za pomocą operacji odczytu, w wyniku których uzyskuje się dostęp do danych z pamięci innego procesora lub pamięci podręcznej. Jeśli nie ma buforowania współdzielonych danych, komunikacja inicjowana przez nadawcę może odbywać się poprzez zapisy do danych, które są przydzielone w zdalnych pamięciach.
W przypadku spójności pamięci podręcznej efekt zapisów jest bardziej złożony: albo zapis prowadzi do nadawcy, albo do komunikacji inicjowanej przez odbiorcę zależy od protokołu koherencji pamięci podręcznej. Komunikacja inicjowana przez odbiorcę lub przez nadawcę we współużytkowanej przestrzeni adresowej z obsługą sprzętową odczytu i zapisu jest naturalnie drobnoziarnista, co sprawia, że opóźnienia tolerancji są bardzo ważne.
Blokuj przesyłanie danych we wspólnej przestrzeni adresowej
We współdzielonej przestrzeni adresowej, sprzętowo lub programowo, łączenie danych i inicjowanie transferów blokowych może odbywać się jawnie w programie użytkownika lub w sposób przejrzysty przez system. Jawne transfery bloków są inicjowane przez wykonanie polecenia podobnego do wysłania w programie użytkownika. Polecenie wysyłania jest wyjaśnione przez asystenta komunikacji, który przesyła dane potokowo z węzła źródłowego do miejsca docelowego. W miejscu docelowym wspomaganie komunikacji pobiera słowa danych z interfejsu sieciowego i zapisuje je w określonych lokalizacjach.
Istnieją dwie zasadnicze różnice w przekazywaniu wiadomości wysyłających i odbierających, z których obie wynikają z faktu, że proces wysyłania może bezpośrednio określać struktury danych programu, w których dane mają być umieszczone w miejscu docelowym, ponieważ te lokalizacje znajdują się we wspólnej przestrzeni adresowej .
Przechodzenie po zdarzeniach o dużym opóźnieniu we współdzielonej przestrzeni adresowej
Jeśli operacja pamięci jest wykonana jako nieblokująca, procesor może przejść poza operację pamięci do innych instrukcji. W przypadku zapisów jest to zwykle dość proste do zaimplementowania, jeśli zapis jest umieszczony w buforze zapisu, a procesor kontynuuje, podczas gdy bufor zajmuje się wysyłaniem zapisu do systemu pamięci i śledzeniem jego zakończenia zgodnie z wymaganiami. Różnica polega na tym, że w przeciwieństwie do zapisu, po odczycie zwykle bardzo szybko następuje instrukcja, która wymaga wartości zwróconej przez odczyt.
Komunikacja wstępna we współdzielonej przestrzeni adresowej
Komunikacja wstępna to technika, która została już szeroko przyjęta w komercyjnych mikroprocesorach, a jej znaczenie prawdopodobnie wzrośnie w przyszłości. Instrukcja pobierania wstępnego nie zastępuje faktycznego odczytu elementu danych, a sama instrukcja pobierania wstępnego musi być nieblokująca, jeśli ma osiągnąć swój cel, jakim jest ukrywanie opóźnienia poprzez nakładanie się.
W tym przypadku, ponieważ współdzielone dane nie są buforowane, wstępnie pobrane dane są przenoszone do specjalnej struktury sprzętowej zwanej buforem pobierania wstępnego. Kiedy słowo jest faktycznie wczytywane do rejestru w następnej iteracji, jest odczytywane raczej z nagłówka bufora pobierania wstępnego niż z pamięci. Gdyby opóźnienie do ukrycia było znacznie większe niż czas obliczania iteracji pojedynczej pętli, pobieralibyśmy wstępnie kilka iteracji naprzód i potencjalnie w buforze pobierania wstępnego byłoby kilka słów naraz.
Wielowątkowość we współdzielonej przestrzeni adresowej
Pod względem ukrywania różnych typów opóźnień wielowątkowość obsługiwana sprzętowo jest prawdopodobnie wszechstronną techniką. Ma następujące zalety koncepcyjne w porównaniu z innymi podejściami -
Nie wymaga specjalnej analizy oprogramowania ani wsparcia.
Ponieważ jest wywoływany dynamicznie, może obsługiwać nieprzewidziane sytuacje, takie jak konflikty pamięci podręcznej itp., A także te przewidywalne.
Podobnie jak pobieranie wstępne, nie zmienia modelu spójności pamięci, ponieważ nie zmienia kolejności dostępów w ramach wątku.
Podczas gdy poprzednie techniki są ukierunkowane na ukrywanie opóźnienia dostępu do pamięci, wielowątkowość może potencjalnie równie łatwo ukryć opóźnienie dowolnego zdarzenia o długim opóźnieniu, o ile zdarzenie można wykryć w czasie wykonywania. Obejmuje to również synchronizację i opóźnienie instrukcji.
Ten trend może się zmienić w przyszłości, ponieważ opóźnienia stają się coraz dłuższe w porównaniu z szybkościami procesora. Również w przypadku bardziej wyrafinowanych mikroprocesorów, które już zapewniają metody, które można rozszerzyć na potrzeby wielowątkowości, oraz przy opracowywaniu nowych technik wielowątkowości w celu połączenia wielowątkowości z równoległością na poziomie instrukcji, ten trend z pewnością wydaje się ulegać pewnym zmianom w przyszłości.