ARCHITEKTURA KOMPUTERÓW (Lerris & Cerwer 2010.06.22)
Complex Instruction Set Computers – CISC
• duża liczba rozkazów (VAX – 303)
• duża liczba trybów adresowania (kilkanaście, VAX – 22)
• duży rozrzut cech rozkazów w zakresie:
– złożoności
– długości (1- kilkanaście bajtów, VAX – 57 B)
– czasów wykonania
• model obliczeo pamięd – pamięd
• mikroprogramowane układy sterujące
• przerost struktury sprzętowej
• mało efektywne wykorzystanie lista rozkazów
Reduced Instruction Set Computers – RISC
• Wykonanie jednego rozkazu w jednym cyklu maszynowym
• Stały rozmiar rozkazów – uproszczenie metod adresacji
• Model obliczeo rejestr – rejestr: komunikacja z pamięcią operacyjną tylko za pomocą rozkazów LOAD i
STORE.
• Wsparcie poprzez architekturę języków wysokiego poziomu.
Format rozkazu
Rozkazy arytmetyczne:
(IMM=0) R[DEST]  R[SRC1] op R[SRC2] – tryb rejestrowy
(IMM=1) R[DEST]  R[SRC1] op SRC2 – tryb natychmiastowy
Rozkazy komunikujące się z pamięcią:
LOAD R[DEST]  M[AE]
STORE M[AE]  R[DEST]
Przyspieszenie dla potokówki:
Gdy : t = n * T dla =T/p
• OPCODE – kod rozkazu
• SCC – ustawianie (lub nie) kodów warunków
• DEST – nr rejestru wynikowego
• SRC1 – nr rejestru zawierającego pierwszy argument
• IMM – wskaźnik natychmiastowego trybu adresowania
• SRC2 – drugi argument lub nr rejestru (na 5 bitach)
p
n
p
n
p
n p
p n
p
T
n p
n T
przyspieszenie
n   
 

 


  


1
1
1
( 1 )
Przyczyny:
• pamięci komputerów były (zwłaszcza
początkowo) małe, wolne i drogie
• rozwój rodzin komputerów (IBM 360 i 370,
PDP 8, 11, VAX, Intel x86, MC 68000)
• popularne mikroprogramowane układy
sterujące (łatwe w rozbudowie)
• dążenie do uproszczenia kompilatorów
– teza: im więcej będzie rozkazów
maszynowych odpowiadających
instrukcjom języków wyższego
poziomu tym lepiej
– model obliczeo pamięd – pamięd
6 Wysokie R31
10 Lokalne
6 Niskie R9
10 Globalne R1
Okno rejestrów – logiczna organizacja
rejestrów procesora RISC 1
Podsumowanie RISC
1. Stała długośd i prosty format rozkaz
2. Nieduża liczba trybów adresowania
3. Niezbyt obszerna lista rozkazów
4. Model obliczeo rejestr-rejestr Dostęp do pamięci operacyjnej tylko w rozkazach LOAD i STORE
5. Duży zbiór rejestrów uniwersalnych
6. Układ sterowania – logika szyta
7. Intensywne wykorzystanie przetwarzania potokowego
8. Kompilatory o dużych możliwościach optymalizacji potoku rozkazów
HAZARDY
• Hazard sterowania – problemy z potokową realizacją skoków i rozgałęzieo.
• Hazard danych – zależności między argumentami kolejnych rozkazów
• Hazard zasobów – konflikt w dostępie do rejestrów lub do pamięci
Metody zapobiegania hazardowi sterowania
Początkowe metody zapobiegania:
• wstrzymanie napełniania potoku (i ewentualne czyszczenie potoku)
• skoki opóźnione
Statyczne strategie przewidywania rozgałęzieo:
• przewidywanie, że rozgałęzienie (skok warunkowy) zawsze nastąpi,
• przewidywanie, że rozgałęzienie nigdy nie nastąpi (Motorola 68020, VAX 11/780),
• podejmowanie decyzji na podstawie kodu rozkazu rozgałęzienia (specjalny bit ustawiany przez kompilator) (Ultra SPARC),
• przewidywanie, że skok wstecz względem licznika rozkazów zawsze nastąpi,
• przewidywanie, że skok do przodu względem licznika rozkazów nigdy nie nastąpi
Dynamiczne strategie przewidywania rozgałęzieo
• tablica historii rozgałęzieo
• tablica historii (1 lub 2 bity historii)
Metody usuwania hazardu danych
• sprzętowe wykrywanie zależności i wstrzymanie napełniania potoku
• wykrywanie zależności na etapie kompilacji i modyfikacja programu (nop)
• wykrywanie zależności na etapie kompilacji, modyfikacja i optymalizacja programu
• wyprzedzające pobieranie argumentów
Metody usuwania hazardu zasobów
• wykrywanie zależności na etapie kompilacji i modyfikacja programu (pomocnicze zmienne, reorganizacja kolejności)
Przykłady procesorów superskalarnych:
1. Motorola MC 88110
2. PowerPC 601
3. PowerPC 620
4. UltraSPARC III
5. IBM Power 5
6. Intel Itanium 2 (VLIW)
VLIW (ang. Very Long Instruction Word) – nazwa architektury mikroprocesorów z bardzo długim słowem instrukcji.
Wątki:
Równoległośd drobno- i gruboziarnista
Aplikacje mogą byd klasyfikowane pod względem tego jak często podzadania wymagają synchronizacji lub komunikują się ze sobą. Mówimy o równoległości drobnoziarnistej (ang. fine-grained), jeśli komunikacja następuje wielokrotnie w ciągu sekundy, a gruboziarnistej (ang. coarse-grained) jeśli występuje rzadziej. Z najłatwiejszym przypadkiem mamy do czynienia, gdy komunikacja nie występuje w ogóle lub sporadycznie (żargonowo taką sytuację określa się jako embarrassing parallelism).
Warunki realizacji współbieżnej:
• dwa zestawy rejestrów uniwersalnych,
• dwa liczniki rozkazów.
Formy równoległości:
 Równoległośd na poziomie rozkazów
 Równoległośd na poziomie procesorów
Klasyfikacja Flynna (M. Flynn, 1966) Kryterium klasyfikacji: liczba strumieni rozkazów i liczba strumieni danych w systemie komputerowym
SISD
SIMD
MISD
MIMD
• JS – Jednostka sterująca
• JP – Jednostka przetwarzająca
• PaO – Pamięd operacyjna
KOMPUTERY WEKTOROWE
Wyróżniająca cecha – rozkazy wektorowe (rozkazy arytmetyczne z argumentami wektorowymi)
Wyróżniamy równoległośd na poziomie rozkazów (jeden procesor, wiele rozkazów):
 Mechanizmy potokowe (CISC i RISC)
 Architektura superskalarna i VLIW
Równoległośd na poziomie procesorów (wiele rozkazów, wiele procesorów):
 Komputery wektorowe
 Macierzowe
 Systemy wieloprocesorowe
 Klastry (systemy wielokomputerowe)
Ocena mocy obliczeniowej tych komputerów – liczba operacji zmp/s
Potokowe jednostki arytmetyczne zmiennoprzecinkowe – typowe elementy architektury
Dodawanie wektorów VADDF A,B,C,n
Zależnośd mocy obliczeniowej od długości wektora
Przykłady komputerów wektorowych:
1. Cray 1
2. Cray X1
3. VPP300, VPP700, VPP5000 (Fujitsu)
4. SR 8000
5. SX-6, SX-8 (NEC)
Cechy komputerów wektorowych:
 Hardware:
o rozkazy wektorowe
o duża liczba potokowych jednostek arytmetycznych
o duża liczba rejestrów
 Software:
o klasyczne języki: Fortran, C
o klasyczne algorytmy
o kompilatory wektoryzujące
Zastosowania:
 Numeryczna symulacja ośrodków ciągłych
 Równania różniczkowe → Równania różnicowe → Układy równao algebraicznych (rachunek macierzowy)
 Dziedziny zastosowao:
o prognozowanie pogody
o symulacja aerodynamiczna
o sejsmiczne poszukiwania ropy naftowej i innych surowców
o symulacja reakcji jądrowych
o medycyna i farmacja
o obliczenia inżynierskie dużej skali
KOMPUTERY MACIERZOWE
Architektura komputerów macierzowych – model SIMD w dwóch wariantach:
 SIMD – DM (z pamięcią rozproszoną)
 SIMD – SM (z pamięcią wspólną)
Elementy komputera macierzowego:
 Jednostka sterująca
o Procesor wykonujący rozkazy sterujące i skalarne oraz inicjujący wykonanie rozkazów wektorowych w sieci elementów przetwarzających.
 Elementy przetwarzające (procesorowe)
o Jednostki arytmetyczno-logiczne wykonujące operacje elementarne rozkazów wektorowych.
 Sied łącząca
o Łączy elementy przetwarzające między sobą lub z modułami pamięci operacyjnej; warianty:
o sied statyczna: pierścieo, gwiazda, krata, drzewo, hipersześcian
o sied dynamiczna: jednostopniowa, wielostopniowa
Przykłady komputerów macierzowych:
 Illiac IV [SIMD-DM]
 Goodyear MPP (Massively Parallel Processor)
 Connection Machine (CM) [SIMD-DM]
 CM-1, CM-2
 CM-5 (SIMD + MIMD)
 MasPar (SIMD-DM)
Model SIMD w procesorach superskalarnych:
• AltiVec – Apple, IBM, Motorola (PowerPC, G4, G5)
• VMX – IBM POWER6
• Intel – MMX, ISSE, SSE2
SYSTEMY WIELOPROCESOROWE
Systemy wieloprocesorowe
1. systemy z pamięcią wspólną (SMP- symmetric multiprocessing)
a) Z jednorodnym dostępem do pamięci (UMA- Uniform Memory Access)
b) Z niejednorodnym dostępem do pamięci (NUMA- Non-Uniform Memory Access)
2. systemy z pamięcią rozproszoną (MPP- Massively Parallel Processor)
Klasyfikacja systemów wieloprocesorowych z pamięcią wspólną:
1. Systemy ze wspólną magistralą
2. Systemy wielomagistralowe
3. Systemy z przełącznicą krzyżową
Systemy wieloprocesorowe
SMP
MPP + z przesyłem komunikatów
UMA
NUMA
CPU+PaO
4. Systemy z wielostopniową siecią połączeo
5. Systemy z pamięcią wieloportową
UWAGA: Według skalowalności systemów (1- najmniejsza skalowalność, 6- największa).
NUMA:
Cache Coherent – NUMA (ccNUMA) – maszyny o takiej architekturze są maszynami o „niejednorodnym dostępie do pamięci, ze spójną pamięcią podręczną”. Pierwszy system ccNuma to system DASH
Podsumowanie NUMA:
• PaO fizycznie rozproszona, ale logicznie wspólna
• Niejednorodny dostęp do pamięci – PaO lokalna, PaO zdalna
• Hierarchiczna organizacja: procesor – węzeł – system NUMA
• Zalety modelu wspólnej pamięci dla programowania
• Dobra efektywnośd dla aplikacji o dominujących odczytach z nielokalnej pamięci
• Gorsza efektywnośd dla aplikacji o dominujących zapisach do nielokalnej pamięci
• Średnia skalowalnośd – do 1024 procesorów (rdzeni)
Podsumowanie SMP:
• Symetryczna architektura – jednakowy dostęp procesorów do pamięci operacyjnej oraz we/wy (na poziomie fizycznych przesyłów – tylko w systemach wieloprocesorowe z pamięcią wspólną fizycznie – UMA)
• Łatwe programowanie (realizacja algorytmów równoległych)
• Niska i średnia skalowalnośd
Systemy MPP – Systemy wieloprocesorowe z pamięcią rozproszoną
Alternatywne nazwy:
• Systemy luźno połączone
• Systemy z przesyłem komunikatów
• Systemy masywnie równoległe (MPP – Massively Parallel Processors)
Organizacja rzeczywista, hierarchiczna:
a) Węzeł: procesor + PaO
b) Węzeł: system wieloprocesorowy z pamięcią wspólną (fizycznie) UMA
c) Węzeł: system wieloprocesorowy NUMA (z niejednorodnym dostępem do pamięci)
Sieci łączące:
• Hipersześcian
• Krata 2D, 3D
• Torus 2D, 3D
• Grube drzewo
• Przełącznica krzyżowa (hierarchiczne przełącznice krzyżowe
• Sieci wielostopniowe (Omega, Butterfly i in.)
Narzędzia programowe wspierające budowę programów z przesyłem komunikatów:
• PVM (Parallel Virtual Machine)
• MPI (Message Passing Interface)
Systemy MPP – podsumowanie
• Hierarchiczna architektura
• Węzeł: procesor, system UMA, system NUMA
• Bardzo duża skalowalnośd
• Wolniejsza (na ogół) komunikacja – przesył komunikatów
• Trudniejsze programowanie (realizacja algorytmów równoległych)
• Dedykowane, bardzo szybkie, sieci łączące
KLASTRY
Klaster to zestaw pełnych komputerów (węzłów) połączonych razem, pracujących jako jeden system.
Klaster komputerowy – grupa połączonych jednostek komputerowych, które współpracują ze sobą w celu
udostępnienia zintegrowanego środowiska pracy
Węzły:
 Pełne komputery: PC, stacje robocze
 Serwery SMP (UMA, NUMA)
System operacyjny:
 Unix
 Linux
 Windows
Infrastruktura scalająca:
 MPI (Message Passing Interface)
 PVM (Parallel Virtual Machine)
 SSI (Single System Image)
Komunikacja między węzłami:
 przesył komunikatów
Sieci łączące:
 Sieci specjalizowane
 Sieci LAN (Local Area Network )
 Sieci SAN (System Area Network )
Cele budowy klastrów:
 wysoka wydajnośd (klastry wydajnościowe, klastry obliczeniowe) (High-performace clusters)
 wysoka niezawodnośd (klastry niezawodnościowe) (High-availability clusters)
Zależnośd moc obliczeniowa – niezawodnośd
Korzystny wskaźnik wydajnośd – cena
Klastry o wysokiej niezawodności (High-availability clusters)
Czynniki tworzące wysoką niezawodnośd:
1. Dostęp do wspólnych zasobów (pamięci zewnętrznych)
2. Redundancja węzłów (mocy obliczeniowej)
3. Mechanizmy kontrolujące funkcjonowanie węzłów
Warianty dostępu do wspólnych zasobów
Zasada „Współdziel wszystko”
Zasada „nie współdziel nic”
Mirroring
Tryby pracy węzłów (z uwzględnieniem redundancji
węzłów / mocy obliczeniowej):
• Model klastra „aktywny – pasywny”
• Model klastra „aktywny – aktywny”
• Model mieszany
Mechanizmy kontrolujące funkcjonowanie węzłów
• Programy agentów + mechanizm „heartbeat”
• Procedura redefiniowania klastra po awarii
(„fail-over”)
Środowisko programowe i aplikacje
Infrastruktura scalająca
Sieć łącząca
SO
Węzeł
System
operacyjny
Węzeł
System
operacyjny
Węzeł
System
operacyjny
Węzeł
Ogólna struktura systemów typu klaster