Równoległa architektura komputera - wprowadzenie
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 umożliwia 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 komputerów 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 wysokowydajne systemy komputerowe 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. W związku z tym, 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 {Wydajność (p \ procesory)} {Wydajność (1 \ procesor)} $$W przypadku pojedynczego rozwiązanego problemu
$$ wydajność \ of \ a \ computer \ system = \ frac {1} {czas \ potrzebny \ do \ ukończenia \ problem} $$ Przyspieszenie \ _ {naprawiono \ problem} (p \ procesory) = \ frac {Czas (1 \ procesor)} {Czas (p \ procesor)} $$Informatyka naukowa i inżynierska
Architektura równoległa stała się niezbędna w obliczeniach naukowych (takich jak fizyka, chemia, biologia, astronomia itp.) Oraz zastosowaniach inżynieryjnych (np. Modelowanie zbiorników, analiza przepływu powietrza, efektywność spalania itp.). W prawie wszystkich zastosowaniach istnieje ogromne zapotrzebowanie na wizualizację wyników obliczeniowych, co skutkuje zapotrzebowaniem 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ą pracować 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 równolegle wykonywanych jest wiele operacji, 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.
Generalnie historia architektury komputerów została podzielona na cztery generacje, w których zastosowano następujące podstawowe technologie -
- 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, a następnie 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. Tak więc 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.