Architektury Komputerowe

Transkrypt

Architektury Komputerowe
Architektury Komputerowe
Opracowanie zagadnień egzamin
2006/2007
wersja 1.0
Niniejsze materiały zostały opracowane na podstawie książki prof. dr hab. inż. Jacka
Kitowskiego „Współczesne architektury systemów komputerowych”. W założeniu ma to
być skrót najważniejszych informacji z książki. Tytuły sekcji z grubsza odpowiadają
tytułom rozdziałów i podrozdziałów. Mocno sugeruje zaglądnięcie do książki
niezależnie od korzystania z tego opracowania.
Nie gwarantuję, że wszystkie informacje tu zawarte w stu procentach pokrywają się
z rzeczywistością.
Spis treści
Metody oceny wydajności systemów ................................................................................2
Tendencje rozwojowe procesorów.....................................................................................7
Modele obliczeń równoległych ........................................................................................10
Klasyfikacja architektur komputerowych .......................................................................11
Metody oceny wydajności obliczeń równoległych.........................................................17
Architektury komputerowe dla zastosowań komercyjnych i przemysłowych ...........20
Architektury komputerowe
Opracowanie
2006/2007
Metody oceny wydajności systemów
Do klasycznych miar wydajności zaliczamy:
MIPS – ang. Milion Instructions Per Second – liczba milionów operacji na sekundę
wykonywanych przez system komputerowy. Miara ta posiada kilka zasadniczych
wad:
• nie są sprecyzowane warunki dokonywania pomiaru (program, z którego
pochodzą instrukcje, język zapisu algorytmu, wersja kompilatora),
• niektórzy producenci podają wartości maksymalne (w oparciu o realizację
najszybszych i najprostszych instrukcji),
• na komputerach wyposażonych w procesory RISC wartości są znacznie
zawyżone z powodu wielu prostych instrukcji, łatwych do dekodowania i
przetwarzania potokowego.
Dlatego wielkość MIPS została zredefiniowana – 1 MIPS jest szybkością komputera
DEC VAX 11/780 (rok 1978). Najpopularniejszym zastosowaniem tej miary jest
obecnie wyznaczanie szybkości serwerów mainframe firmy IBM (IBM MIPS).
MFLOPS – ang. Milion Floating Point Operrations Per Second – liczba milionów
operacji zmiennoprzecinkowych na sekundę wykonywanych przez system
komputerowy. Tradycyjna jednostka szybkości komputerów w zakresie obliczeń
zmiennopozycyjnych. Wady tej miary są bardzo podobne, jak w przypadku MIPS.
Dla komputerów wyposażonych w procesory typu RISC możliwe jest wykonywanie
2 lub 4 takich operacji w jednym cyklu, dzięki zastosowaniu architektury
superskalarnej (własność tę nazywamy drożnością procesora). Na tej podstawie
można wyznaczyć Mflop/s = drożność * częstotliwość zegara.
Wymagania stawiane miarom wydajności systemów komputerowych to:
• reprezentacja wybranej klasy rzeczywistych zastosowań (zgodność z
potencjalnymi aplikacjami),
• dobra metryka: liniowa, monofoniczna, ortogonalna,
• zapis w językach programowania wysokiego poziomu - dla zapewnienia
przenośności pomiędzy platformami sprzętowymi i programowymi,
• łatwość dostosowania do zmian wynikających z postępu w zakresie technologii
(np. pojawienie się dużych pamięci podręcznych, kompilatorów o wysokim
stopniu optymalizacji, nowych rodzajów obliczeń i przetwarzania danych),
• objęcie możliwie szerokiego zakresu testowanych elementów składowych
systemów komputerowych (na przykład: procesor, pamięć podręczna, pamięć
operacyjna, dyski, sieci, kompilatory i współpraca z typowymi systemami
zarządzania bazami danych),
• łatwość wykonania pomiarów,
• powszechna akceptacja ze strony użytkowników i producentów.
Wyróżniamy pięć najważniejszych typów miar wydajności stosowanych obecnie:
syntetyczne miary wydajności (synthetic benchmarks), jądra programowe (kernels),
2
Architektury komputerowe
Opracowanie
2006/2007
algorytmy (alghoritms), aplikacje (applications) i specyfikacje (specifications). Zostały
one przedstawione poniżej.
Syntetyczne miary wydajności (ang. synthetic benchmarcs), są programami, których
celem nie jest wykonanie konkretnych, użytecznych obliczeń czy przetwarzania
danych o charakterze komercyjnym, lecz określenie wydajności dla różnych,
podstawowych operacji wykonywanych przez komputer. Przykładami są testy
Dhrystone i Whetstone. Były one w powszechnym użyciu w latach 80-tych, obecnie
praktycznie nie są stosowane.
Whetstone był pierwszym programem napisanym w celu porównywania wydajności
komputerów (rok 1978). Był przeznaczony do badania osiągów w zakresie obliczeń
numerycznych (napisany w Algolu, późniejsza wersja w Pascalu).
Dhyrstone (1984) działa w oparciu o statystyki występowania operacji dla typowych
zastosowań nienumerycznych (głównie op. stałoprzecinkowe), takich jak systemy
operacyjne, kompilatory i edytory. Są to operacje o znacznie mniejszym stopniu
wywołań iteracyjnych, a większą liczbą wywołań procedur i instrukcji warunkowych
(napisany w języku Ada, późniejsza wersja w C).
Obydwie miary stosowane są co najwyżej do badania udziału pamięci podręcznej z
uwagi na mały rozmiar.
Jądra programowe (ang. kernels), są takimi wybranymi fragmentami rzeczywistych
programów, których wykonanie zajmuje najwięcej czasu. Przykłady to Livermore
Fortran Kernels i NAS Kernel Benchmark Program mimo niewątpliwie dużej
wiarygodności uzyskiwanych wyników są stosunkowo mało rozpowszechnione w
praktyce ze względu na trudności implementacyjne.
Livermore Fortran Kernels (LFK) (1970) – obecnie jest ich 24; metryką w LFK jest
średnia geometryczna wydajności pętli typowych obliczeń zmiennoprzecinkowych,
podawana w Mflop/s dla różnych języków – C i Fortran77. Pozwalają również na
wnioskowanie o możliwościach optymalizacji kompilatorów
NAS Kernel Benchmark Program – obejmuje 7 jąder testowych programów (5 jąder
programowych i 3 programy symulacyjne); każdy z testów składa się z pętli
iteracyjnie wywołującej określony podprogram napisany w Fortranie. Pierwotnie
były przeznaczone dla maszyn wektorowych, a uzupełnione zostały o zestawem dla
maszyn równoległych. Przeznaczone są głównie badania wydajności obliczeń
numerycznych. Zdefiniowany jest tylko problem i metoda rozwiązania, co
pozostawia dowolność implementacji.
Algorytmy (ang. algorithms), to programy testowe reprezentujące kompletne
algorytmy obliczeń numerycznych, np. FTT czy algorytmy numerycznej algebry
liniowej. Typowym przykładem tej kategorii jest popularny zestaw LINPACK.
LINPACK (ang. Linear Algebra Package) – jest to biblioteka procedur numerycznej
algebry liniowej, bardzo często wykorzystywana do badania wydajności w zakresie
obliczeń naukowo – technicznych. Wydajność jest określana na podstawie szybkości
3
Architektury komputerowe
Opracowanie
2006/2007
rozwiązywania dużego układu równań liniowych z macierzą gęstą (przy
największym udziale operacji zmiennoprzecinkowych). W oparciu o teoretyczną
złożoność obliczeniową 2n3/3 + 2n (operacji z.p. dodawania i mnożenia), czas
obliczeń jest przeliczany na Mflop/s lub Gflop/s. W obliczeniach testowych nie są
natomiast wykonywanie dzielenia ani wywoływane funkcje matematyczne, a
większość czasu zajmuje wykonywanie procedury o małej liczbie instrukcji, co
oznacza, że nawet mały cache procesora dla instrukcji nie wpływa na degradację
osiągów, natomiast wpływ może mieć cache procesora dla danych.
W LINPACK wykorzystywane są 3 metryki:
•
DP Mflop/s – zwany również LINPACK Banchmark lub LINPACK 100x100;
wartość Mflop/s przy rozwiązywaniu układu 100x100 metodą Gaussa; można
stosować optymalizacje wyłącznie przy kompilacji,
•
TPP Mflop/s (ang. Toward Peak Performance) – LINPACK 1000x1000; liczba
Mflop/s przy rozwiązywaniu układu 1000x1000 metodą Gaussa; można
optymalizować algorytm i jego implementację pod warunkiem zachowania tej
samej dokładności; musi być użyty tzw. driver program, który kontroluje proces
rozwiązywania, wynik i wyznacza liczbę Mflop/s,
•
Rpeak – teoretyczna maksymalna wydajność przetwarzania (w Mflop/s)
wyznaczana na podstawie maksymalnej liczby operacji z.p. wykonywanych w
jednym cyklu procesora.
Dla maszyn równoległych obowiązuje maksymalna wielkość układu możliwa do
rozwiązania na danej maszynie. Stosowane są metryki:
•
Rmax – szybkość rozwiązywania maksymalnego układu równań na danym
komputerze (w Gflop/s); na jej podstawie jest tworzona TOP500 – lista 500
systemów komputerowych o największej mocy obliczeniowej,
•
Nmax – rozmiar największego układu równań na danym komputerze,
•
M1/2 – rozmiar układu, dla którego uzyskuje się Rmax1/2,
•
Rpeak – teoretyczna maksymalna wydajność przetwarzana dla danej maszyny.
Są one określone dla maszyn wyposażonych w Nproc procesorów.
Zestaw LINPACK nie nadaje się do badania wydajności maszyn przeznaczonych do
celów komercyjnych, gdzie duży udział mają operacje I/O.
Aplikacje (ang. applications), są kompletnymi programami komputerowymi,
przeznaczonymi do rozwiązywania dobrze zdefiniowanych zagadnień z zakresu
fizyki, chemii lub techniki, a także wspomagania zarządzania przedsiębiorstwem. Do
tej kategorii należą Perfect Benchmarks, ParkBench, a także bardzo istotne dla oceny
przetwarzania o charakterze komercyjnym - miary z rodziny SPEC, SAP,
NotesBench i Baan.
Perfect (ang. Performance Evaluation for Cost – Effective Transformation) – zestaw 13
programów testowych (w Fortranie) obejmujących różne zagadnienia obliczeniowe
(naukowo-techniczne takie jak modelowanie procesów chem. i fiz., przetwarzanie
4
Architektury komputerowe
Opracowanie
2006/2007
sygnałów, dynamika płynów). Największym problemem było przenoszenie na różne
komputery złożonych programów.
SPEC (ang. Standard Performance Evaluation Corporation) – niekomercyjna organizacja
standaryzacyjna opracowująca zadania testowe do badania wydajności komputerów.
W jej skład wchodzą trzy grupy opracowujące własne zestawy testowe: Open
Systems Group (OSG) – miary wydajności dla procesorów pracujących w
środowiskach UNIX, NT i VMS; High Performance Computing Group (HPC) –
intensywne obliczenia numeryczne w dużej skali; Graphics Performance
Characterization Group (GPC) – podsystemy graficzne i środowiska OpenGL i
XWindows.
Zestawy opracowywane przez SPEC obejmują programy źródłowe i narzędzia do
ich uruchamiania (odpłatnie i po podpisaniu licencji na sposób korzystania). Co
kwartał publikowane są wyniki testów.
Zestaw SPEC CPU95 (SPEC95) – obejmuje dwa zestawy: CINT95 przeznaczony do
pomiarów i porównywania wyników w operacjach s.p., CFP95 przeznaczony do
pomiarów i porównywania wyników w operacjach z.p.. Stosowane w tych testach
metryki to: „base” – wykorzystywana tylko podstawowa optymalizacja przy
kompilacji, „non-base” – możliwe stosowanie najwyższych poziomów optymalizacji
przy kompilacji, „rate” – określa jak wiele zadań może wykonywać komputer w
przedziale czasu (przepustowość), „non-rate” – miara wydajności komputera. Jak
widać zestawy te służą do mierzenia wydajności maszyn z jednym CPU.
Znormalizowane miary wydajności obliczane są jako iloraz wykonania
poszczególnych programów i czasu ich wykonania na komputerze SPARCStation
10/40.
Zestaw SPEC CPU2000 jest podzielony również na dwa analogiczne zestawy:
CINT2000 i CFP2000. Służy do testowania nowoczesnych maszyn z efektywnymi
procesorami, dużą ilością pamięci podręcznej, operacyjnej i optymalizującymi
kompilatorami. Zmienił się zestaw programów używanych do testowania, aby
dopasować testy do bieżących potrzeb. Komputerem referencyjnym jest w tym
przypadku maszyna SUN Ultra 5.
Istnieją jeszcze zestawy SPEC GPC (dla badania wydajności systemów graficznych),
SPEC SFS (do testowania serwerów usług sieciowych; testowane są: procesor,
pamięć masowa i współpraca z siecią komputerową), SPECweb96 i SPECweb99 (do
badania serwerów HTTP) i SPECjvm98 (do testowania wydajności pracy Java Virtual
Machine).
SAP R/3 – jest to system wspomagania zarządzaniem wykorzystywany do
testowania wydajności w zakresie zastosowań komercyjnych na bardzo
rozbudowanych instalacjach implementujących architekturę klient – serwer
obejmując sprzęt, relacyjną bazę danych i oprogramowanie SAP R/3.
R/3 Standard Application Benchmarks – szereg skryptów modelujących typowe
zachowanie użytkownika z każdym z siedmiu modułów zawierających określone
rodzaje transakcji bazodanowych. Przykładowo w popularnym module SD
metrykami są: liczba użytkowników, czas odpowiedzi, przepustowość konfiguracji
(liczba kroków dialogu na godzinę).
5
Architektury komputerowe
Opracowanie
2006/2007
W SAP R/3 ocenie podlega serwer, na którym pracuje baza danych. Konfiguracja jest
bardzo rozbudowana i obejmuje wiele komputerów realizujący warstwy aplikacji i
prezentacji.
BaanIV – system analogiczny do SAP R/3, konkurujący z zestawem firmy SAP przy
użyciu oprogramowania firmy Baan. Wydajność jest podawana jako Baan Reference
User (BRU) – generator obciążenia powiększa liczbę współbieżnie pracujących
użytkowników pracujących z BaanIV, aż do przekroczenia określonego czasu
odpowiedzi na transakcję.
Specyfikacje (ang. specifications), stanowią zbiór wymagań funkcjonalnych, jakie
powinny być zrealizowane przy dowolnej implementacji sprzętowej i programowej.
Przykładem specyfikacji są rozpowszechnione w zakresie przetwarzania
komercyjnego miary TPC-C, TPC-D oraz inne z rodziny TPC.
TPC (ang. Transaction Processing Performance Council) – niekomercyjna organizacja
opracowująca metody porównywania osiągów systemów komputerowych w
zakresie baz danych, przetwarzania transakcji i eksploracji danych.
Zestaw TPC-C służy do pomiaru osiągów dla zastosowań typu transakcyjnego w
środowiskach o wielu użytkownikach. Modeluje działania związane z transakcjami
bazodanowymi (on-line transaction processing). Określa wydajność całego systemu,
procesorów, pamięci, operacji I/O. Specyfikuje następujące metryki: tmpC – liczba
nowych transakcji na minutę; $/tmpC (price/performance) – stosunek kosztów do
osiągów czyli koszt zakupu danej konfiguracji z oprogramowaniem i 5-letnim
utrzymaniem, podzielony przez osiągi.
Zestaw TPC-D jest stosowany do pomiaru wydajności w odniesieniu do systemów
wspierania podejmowania decyzji (buissness intelligence), które pozyskują duże bazy
danych (transakcje OLTP) i wykorzystują data minig. Testowany jest system, jako
całość i jego poszczególne elementy: procesory, pamięć, podsystemy I/O, sieć i
reagowanie na błędy. Stosuje następujące metryki: QppD (Query Processing
Performance) – wydajność przetwarzania zapytań przy wykorzystaniu całej mocy na
pojedynczy strumień zapytań; QthD (Query Throughput) – liczba zapytań
przetworzonych (współbieżnie) w ciągu godziny; $/QphD ($/Queries Per Hour) –
iloraz kosztów i średniej geometrycznej dwóch poprzednich metryk.
Zestawy TPC-H i TPC-R mają podobne zastosowanie jak TPC-D, różnią się jedynie
warunkami wykonywania eksperymentu. TPC-H bada wydajność przetwarzania
zapytań, bez znajomości ich istoty, natomiast TPC-R używa predefiniowanego
zestawu zapytań. Obydwie stosują podobne miary wydajności: QphH lub QphR –
wydajność przy przetwarzaniu pojedynczego strumienia zapytań i przepustowość w
przypadku strumieni współbieżnych; QthH lub QthR – liczba zapytań
przetworzonych przez system w ciągu godziny (przepustowość) przy strumieniach
współbieżnych; $/QphH lub $/QphR – miara price/performance.
6
Architektury komputerowe
Opracowanie
2006/2007
Tendencje rozwojowe procesorów
W odniesieniu do technologii procesorowych stosuje się następującą terminologię:
procesor – nazwa stosowana w odniesieniu do układu mikroprocesorowego,
realizacja sprzętowa architektury,
technologia procesora – jest określana przez typ instrukcji i sposób ich wykonywania
(np. RISC, CISC lub EPIC),
architektura procesora – projekt procesora wykorzystujący określoną technologię
(np. POWER, IA-64, PA-RISC),
technologia półprzewodnikowa – proces technologiczny zastosowany w produkcji
procesorów.
Architektura von Neumana – (zwana również sekwencyjną) jest to klasyczna
architektura (właściwie technologia) komputera wykorzystywana przez komputery
sekwencyjne. Składa się z następujących elementów:
• jednostka arytmetyczno – logiczna (arytmometr),
• pamięć operacyjna adresowana liniowo, w której zapisane są instrukcje i dane,
• system wejścia/wyjścia,
• układ sterujący.
Podstawową własnością tej architektury jest sekwencyjność wykonywania
rozkazów. Rozszerzeniem tej technologii są technologie RISC, CISC i EPIC.
Technologia CISC (ang. Complex Instruction Set Computer) – najwcześniej rozwinięta
technologia procesorów, zakładająca operacje na obszernej i złożonej liście rozkazów
o zmiennej długości. Ten właśnie fakt komplikuje analizę kodu i jego optymalizację
oraz utrudnia uzyskanie równoległości na poziomie realizacji poszczególnych
instrukcji. Przez to niemożliwe jest uzyskanie wysokiej wydajności i zwiększenie
częstotliwości pracy, ponieważ realizacja architektury wymaga wiele materiału, co
wiąże się dużą ilością produkowanego ciepła i podnosi koszty produkcji. Najczęściej
realizowana jest w formie procesorów wieloukładowych dla wczesnych
komputerów typu mainframe. Obecnie typ ten traci na znaczeniu.
Technologia RISC (ang. Reduced Instruction Set Computer) – technologia zakładająca
listy rozkazów procesora do najprostszych i najczęściej używanych, realizowanych w
jednym cyklu zegara oraz posiadającym jednakową długość. Upraszcza to etap
kompilacji i optymalizacji programu oraz umożliwia stworzenie sprzętu
realizującego wiele funkcji jednocześnie, w kolejności dopuszczalnej przez algorytm
lecz optymalizowanej pod kątem wydajności przez procesor w trakcie obliczeń.
Intensywnie
wykorzystuje
rejestry
procesora
dla
operacji
load/store
poprzedzających odwołania do pamięci operacyjnej. Podstawowymi elementami
stosowanymi obecnie w technologii RISC i podnoszącymi wydajność są:
•
Zwielokrotnione jednostki funkcjonalne procesora (oddzielne układy mnożące i
dodające dla arytmetyki stało- i zmiennoprzecinkowej), co pozwala na realizację
w jednym cyklu kilku operacji (przetwarzanie superskalarne). Zazwyczaj obecnie
7
Architektury komputerowe
Opracowanie
2006/2007
stosowane są 2 podwójne jednostki funkcjonalne zmiennoprzecinkowe, co w
idealnym przypadku daje przykładowo dla częstotliwości pracy 200 MHz
wydajność maksymalną wynoszącą 800 Mflop/s,
•
Procesory jednoukładowe, co umożliwia zminimalizowanie opóźnienia w
transmisji sygnałów i zwiększenie częstotliwości pracy. Zakres częstotliwości jest
bardzo szeroki i wynosi obecnie od 200 MHz do 800 MHz,
•
Rozbudowane bufory i rejestry służące do:
o optymalizacji kolejności wykonywania obliczeń (ang. out-of-order),
o organizacji przetwarzania superskalarnego; w praktycznych realizacjach
funkcjonalne jednostki mnożące i sumujące są łańcuchowane i/lub
zwielokrotnione,
o realizacji przetwarzania potokowego, w którym kolejne instrukcje złożone
znajdują się w różnych stanach realizacji,
•
Duża pamięć podręczna (cache), często dwupoziomowa (w procesorze pamięć L1
i zewnętrzna, L2), stosowana oddzielnie dla danych i oddzielnie dla instrukcji;
pewnym standardem jest wielkość cache wynosząca 1MB/1MB dla danych i
instrukcji odpowiednio,
•
Modyfikacje technologii półprzewodnikowej, związane ze zmniejszeniem
szerokości ścieżek, złączy półprzewodnikowych oraz przejściem na technologię
miedzianą.
Procesory IBM – są rozwijane w dwóch równoległych liniach: POWER i POWERPC
w technologii RISC. Stosowane są zarówno na komputerach pracujących pod
kontrolą systemu UNIX, jak też komputerach typu maiframe przeznaczonych do
przetwarzania komercyjnego i wspomagania zarządzaniem przedsiębiorstw.
Procesory linii POWER stosowane są głównie w obliczeniach naukowo –
technicznych z uwagi na dużą wydajność w arytmetyce zmiennoprzecinkowej.
Procesory linii POWERPC były oryginalnie przeznaczone do przetwarzania
transakcyjnego i układów sterowania. Nadają się idealnie do systemów o kilku
procesorach realizujących przetwarzanie symetryczne (SMP).
Procesory Sun Microsystems – obecnie rozwija serię procesorów UltraSPARC. Są
one głównie przeznaczone dla pojedynczych komputerów do przetwarzania grafiki i
danych multimedialnych oraz dużych komputerów usług sieciowych i zastosowań
komercyjnych.
Procesory Compaq – po fuzji z firmą DEC rozwija procesory z serii Alpha.
Procesory SGI (Silicon Graphics) – produkuje procesory przeznaczone głównie do
zastosowań grafiki komputerowej, obliczeń naukowo – technicznych i multimediów.
Obecnie produkowane są procesory z serii MIPS (MIPS jest jednocześnie jedną ze
składowych firm), przeznaczone głównie na maszyny dla projektantów
korzystających z oprogramowania typu CAD, CAM i CAE.
8
Architektury komputerowe
Opracowanie
2006/2007
Procesory Hewlett-Pacard – produkuje obecnie procesory z serii PA o architekturze
PA – RISC.
Procesory Intel – dwie najważniejsze architektury rozwijane przez tę firmę to IA-32 i
IA-64. Głównymi zastosowaniami tych procesorów są komputery PC.
IA-32 – kontynuacja podstawowej rodziny procesorów opartych na 8088. W jej skład
wchodzą m. in. procesory Pentium II/III, początkowo komunikujące się z pamięcią
podręczną L2 z połową częstotliwości, a od wersji Pentium II/III Xeon już z pełną
częstotliwością, co znacznie podnosi wydajność ich pracy. Procesory Celeron
posiadają zintegrowaną technologicznie pamięć L2 i są przeznaczone na rynek
komputerów popularnych.
IA-64 – wykorzystuje technologię EPIC. Do jej głównych cech należą:
• możliwość przeglądania kolejnych rozkazów przed wykonaniem,
• wykonywanie długich rozkazów o stałej długości (LIW – ang. long instruction
word); są to słowa o długości 128 bitów zawierające 3 rozkazy, których postać jest
podyktowana ogólną optymalizacją wykonania w jednym cyklu bez konieczności
użycia mikrokodu; nowa technologia została nazwana EPIC (Explicity Parallel
Instruction Computing),
• możliwość eliminacji rozgałęzień kodu programu,
• ładowanie danych z wyprzedzeniem,
• każde 128-bitowe słowo zawiera ramkę posiadającą kilka bitów, zapisanych
przez kompilator, informujących bezpośrednio procesor, które instrukcjom mogą
zostać wykonane równolegle. Procesor podczas wykonania programu nie traci
cykli na analizę kodu dla wyszukania ukrytej równoległości (jak w przypadku
technologii RISC), lecz korzysta z informacji uzyskanej na etapie kompilacji.
Stosuje się 128 rejestrów stałoprzecinkowych i tyle samo rejestrów
zmiennoprzecinkowych.
• kompilator dla architektury IA-64 stosuje technikę predykcji dla optymalizacji
instrukcji warunkowych. Procesor wykonuje bloki warunkowe w sposób
równoległy, a po określeniu właściwego - zachowuje odpowiednie, wyliczone
wartości, resztę odrzucając.
• kompilator dla architektury IA-64 dokonuje predykcji także celem wyszukania
odwołań do danych i umieszczenie ich w rejestrach zanim program się do nich
odwoła. Mechanizm pozwala na ukrycie opóźnienia będącego skutkiem
odwołania do pamięci.
Wyróżnia się dwa współczesne podejścia przy projektowaniu nowych procesorów:
•
CMP (ang. Chip Multiprocessor) - mikroprocesor wieloprocesorowy; integruje dwa
lub więcej kompletnych procesorów w jednym układzie scalonym; każdy
procesor jest powielony i używany niezależnie od innych,
•
SMT (ang. Simultaneous Multithreaded Processor) – superskalarny wielowątkowy
procesor; w odróżnieniu od CMP dokonuje przeplotu wykonywania instrukcji z
wielu wątków w kilku jednostkach potokowych; użycie kilku jednostek
potokowych
zamiast
jednej
umożliwia
osiągnięcie
superskalarności
przetwarzania.
9
Architektury komputerowe
Opracowanie
2006/2007
Modele obliczeń równoległych
Systemem otwartym nazywamy system gotowy do komunikacji z dowolnym innym
systemem otwartym za pomocą standardowych protokołów rządzących treścią,
formą i znaczeniem komunikatów (np. TCP/IP).
W systemach wieloprocesorowych możliwe jest obecnie wykorzystanie dwóch
modeli (paradygmatów) obliczeniowych:
•
model z wymianą wiadomości (message-passing paradigm, explicit parallel
programming), wykorzystujący jedno popularnych środowisk do obliczeń
numerycznych, np. PVM (Parallel Virtual Machine) lub MPI (Message Passing
Interface); obecnie największą efektywność otrzymuje się właśnie przy
zastosowaniu tego paradygmatu,
•
model z równoległością danych (data-parallel programming, implict parallel
programming lub data paralleism), posługujący się językiem programowania
wysokiego poziomu; przykładami języków programowania operujących w tym
paradygmacie są m. in. HPF (High Performance Fortran), pFortran, pC i
środowisko OpenMP; model ten udostępnia programiście konstrukcje wysokiego
poziomu, używane w definicji struktur danych, w dostępie do informacji i
zarządzaniu współbieżnością procesów; program jest łatwiejszy w uruchomieniu
i modyfikacjach,
Istnieje również inny popularny model programowania wykorzystywany na
współczesnych maszynach równoległych. SPMD (ang. Single – Program Multiple –
Data) zakłada wykorzystywanie pojedynczego programu operującego na różnych
danych znajdujących się w poszczególnych węzłach obliczeniowych. Jest to model
pośredni pomiędzy dwoma wcześniej wymienionymi.
W nielicznych przypadkach zastosowanie znajduje również model z równoległością
instrukcji (ang. control paralleism), w którym różne instrukcje odnoszą się do tych
samych danych (np. potokowe przetwarzanie przy wykorzystaniu wielu
procesorów, z których każdy wykonuje różne operacje na tych samych danych).
Innym modelem jest model heterogeniczny, który łączy w sobie cechy modelu SPMD
i modelu z równoległością instrukcji. Jest przydatny w odniesieniu do klastrów
składających się z kilku maszyn wieloprocesorowych.
10
Architektury komputerowe
Opracowanie
2006/2007
Klasyfikacja architektur komputerowych
Klasyfikacji architektur komputerowych można dokonać w oparciu o następujące
cechy:
•
mechanizm sterowania,
•
organizacja przestrzeni adresowej,
•
granulacja procesów,
•
warstwa komunikacyjna.
Podstawowy podział architektur komputerowych przedstawia poniższy rysunek.
Architektury komputerowe
SIMD
SMP
Sześcian
MIMD
MMP
Drzewo
Pierścień
Sieciowe
DSM
Krata
Mechanizm
sterowania
SISD
Sterowane danymi
Klastry
Homo
Rozproszone
Hetero
Hetero
Organizacja
przestrzeni
adresowej
Sterowane instrukcjami
Homo
Sieć
Mechanizm sterowania jest omawiany w oparciu o taksonomię (klasyfikację)
Flynna, zgodnie z którą istnieją cztery podstawowe klasy maszyn:
•
SISD (ang. Single Instruction Stream/Single Data Stream) – klasyczna architektura
sekwencyjna, ponieważ kolejne instrukcje pojedynczego ich strumienia operują
na pojedynczym strumieniu danych,
•
SIMD (ang. Single Instruction Stream/Multiple Data Stream) – jednymi z pierwszych
maszyn wieloprocesorowych wykorzystywały ten właśnie model przetwarzania;
posiadały one jeden układ sterowania wspólny dla wszystkich procesorów, w
wyniku czego procesory przetwarzały równolegle tę samą instrukcję dla różnych
danych; kolejne instrukcje tworzą więc jeden strumień instrukcji; ponieważ
występuje tylko jeden układ sterujący, wyposażenie sprzętowe jest ubogie; model
ten jest przydatny jest przydatny do obliczeń równoległych z równoległością
danych i częstą synchronizacją; główną jego wadą jest brak możliwości
przetwarzania różnych instrukcji równolegle i stosowania wyspecjalizowanych
11
Architektury komputerowe
Opracowanie
2006/2007
procesorów; przykładem realizacji tego modelu są komputery wektorowe;
obecnie model ten traci praktyczne znaczenie,
•
MIMD (ang. Multiple Instruction Stream/Multiple Data Stream) – model ten cieszy
się obecnie największym powodzeniem; komputery realizujące go posiadają
odrębne jednostki sterujące dla każdego procesora, co umożliwia przetwarzanie
różnych strumieni instrukcji dla różnych strumieni danych; są przeważnie dużo
bardziej złożone i zbudowane z tych samych typów procesorów, jak te, które są
stosowane na stacjach roboczych, co z kolei ułatwia przenoszenie programów;
niektóre realizacje posiadają sprzętowe wspomaganie dla operacji globalnych
(np. redukcji), co umożliwia ich efektywne wykorzystanie w obu paradygmatach
programowania – z wymianą wiadomości i równoległością danych; przykładem
realizacji tego modelu są komputery ASCI,
•
MISD (ang. Multiple Instruction Stream/Single Data Stream) – zasadniczo nie
występuje samodzielnie; pewnym jej odpowiednikiem jest przetwarzanie
potokowe, w którym pojedyncze instrukcje cząstkowe odnoszą się do tych
samych danych,
Już poza taksonomią Flynna wyróżniamy jeszcze modele sieciowe – są to układy
kilku lub więcej maszyn połączonych siecią; funkcjonalnie są zbliżone do klasy
MIMD, jednak ze względu na większy zakres zastosowań, zróżnicowanie
protokołów komunikacyjnych i stosowane paradygmaty programowania są
wyróżnione; dominującym paradygmatem jest model z wymianą wiadomości,
implementowany najczęściej w jednym ze środowisk programowania rozproszonego
(np. PVM lub MPI); w typowych zastosowaniach sieciowych (np. WWW) częste jest
podejście obiektowe; jednym z przykładów jest architektura i specyfikacja COBRA.
Organizacja przestrzeni adresowej jest kolejnym elementem wyróżniającym
współczesne komputery. Wyróżniamy zasadniczo dwa jej typy:
•
pamięć wspólna – posługuje się wspomaganiem sprzętowym dla zapewnienia
operacji zapisu i odczytu informacji, dostępnej dla wszystkich procesorów
systemu; jest typowa dla systemów wektorowych i komputerach o niewielkiej
liczbie procesorów typu RISC; jej wadą jest mała skalowalność z liczbą
procesorów przepustowość warstwy sieciowej, która implementuje magistralę
lub przełącznicę krzyżową; w przypadku magistrali zaletą jest łatwa rozbudowa
o dodatkowe jednostki funkcjonalne i łatwość programowania; ponieważ koszt
dostępu do pamięci jest stały i nie zależy od procesora, często maszyny te nazywa
się UMA (ang. uniform memory access) – o jednolitym dostępie do pamięci;
wspólne są również kanały I/O,
•
SMP (ang. simetrical multiprocessing) – symetryczne wieloprzetwarzanie; realizacja
wielowątkowości na poziomie systemu operacyjnego zapewniająca równomierne
obciążenie każdego z procesorów,
•
pamięć rozproszona – jest charakterystyczna dla systemów o dużej i bardzo dużej
liczbie procesorów; dla MIMD każdy procesor (lub grupa) posiada pamięć
lokalną; można tu wymienić pewne podgrupy:
12
Architektury komputerowe
Opracowanie
2006/2007
o MPP (ang. Massively Parallel Processors) – klasyczna architektura wymiany
wiadomości (programowo) z „luźno” powiązanymi procesorami, z których
każdy jest zarządzany przez osobny system operacyjny; ze względu na
prostotę architektury i modelu programowania możliwe jest stosowanie wielu
procesorów;
o DSM (ang. Distributed Shared Memory) – jest to architektura z pamięcią
fizycznie rozproszoną, lecz wirtualnie wspólną, posiadająca dodatkowe
jednostki funkcjonalne i oprogramowanie, które tę wspólną pamięć emulują;
dla modelu z równoległością danych stosuje się protokoły uzgadniania
zawartości pamięci wszystkich lub części procesorów (cc – ang. cache
coherency):
cc-NUMA (ang. Nonuniform Memory Access) – ponieważ dostęp do pamięci
operacyjnej jest zależny od jej umieszczenia w pamięci – lokalnej lub
odległej dla danego procesora – dlatego konstrukcje te nazywamy
maszynami o niejednolitym dostępie do pamięci,
sCOMA (ang. Simple Cache Only Memory Access) – jej zalety są zbliżone do
cc-NUMA, m. in. oferowana jest pamięć wspólna.
DSM wykorzystuje równie efektywnie obydwa modele – z wymianą
wiadomości i równoległością danych.
Systemy sieciowe wykorzystują pamięć rozproszoną. Rozróżnia się tutaj dwie grupy:
•
systemy rozproszone – ich węzły mogą być jednocześnie wykorzystywane przez
wielu użytkowników (np. lokalnie lub przez sieć); ich głównym bogatym
zakresem zastosowań jest realizacja usług sieciowych; dzielenie zasobów odbywa
się za pośrednictwem dysków lokalnych,
•
klastry – mają charakter bardziej dedykowany obliczeniom lub
wyspecjalizowanym usługom wysokiej dostępności; używane są do obliczeń o
wysokiej złożoności; istnieją tzw. klastry wysokiej dostępności, w których
dokonywana jest automatyczna migracja procesów w przypadku awarii jednego
z węzłów; klastry możemy podzielić pod względem sposobu użytkowania na:
dedykowane (najczęściej homogeniczne) i sieciowe (heterogeniczne), w których
komputer wirtualny jest tworzony z wykorzystaniem komputerów innych
użytkowników; jeśli chodzi o dzielenie zasobów, w klastrach wykorzystuje się
najczęściej dyski dzielone wykorzystywane przez poszczególne węzły (zwłaszcza
w k. wysokiej dostępności); warstwa komunikacyjna może być realizowana za
pomocą zwykłych protokołów (np. ATM lub FastEthernet) oraz rozwiązań
dedykowanych (np. Myrinet); klastry wysokiej dostępności polecane są dla
przedsiębiorstw przy zarządzaniu i usługach komercyjnych.
Granulacja procesów jest kolejnym kryterium służącym do podziału architektur
komputerowych. Granulacją procesów nazywamy stosunek czasu przeznaczonego
do wykonania elementarnej operacji komunikacji do czasu realizacji elementarnej
jednostki obliczeniowej. Wyróżniamy:
13
Architektury komputerowe
Opracowanie
2006/2007
•
komputery drobnoziarniste – w których granulacja jest duża, a synchronizacja
między procesami częsta (np. maszyny SIMD i SMP),
•
komputery gruboziarniste – w nich najlepsze efekty uzyskuje się poprzez
podzielenie problemu na kilka dużych zadań, słabo od siebie zależnych i rzadko
wymieniających informacje między sobą (np. sieć komputerów – klastry lub
kilku- kilkunastoprocesorowe komputery wektorowe).
Komputery MIMD plasują się pomiędzy tymi dwoma klasami. Wynika to z
rozbudowanej warstwy komunikacyjnej i rozszerzeń systemu operacyjnego.
Na tej podstawie można określić kilka teoretycznych modeli dostępu do pamięci
(fizycznie lub wirtualnie) wspólnej:
•
RAM (ang. Random Access Memory) – klasyczny model maszyny o swobodnym
dostępie do liniowej pamięci zaproponowany dla architektury von Neumana; nie
nadaje się do współczesnych architektur (nie ujmuje superskalarności czy
wykonywanie instrukcji w innej kolejności),
•
Parallel RAM – model komputera równoległego, rozszerzenie RAM na
architekturę wieloprocesorową – wspólna przestrzeń adresowa dla wszystkich
procesorów; nie uwzględnia kosztu synchronizacji dostępu do pamięci, ani
sytuacji kiedy kilka procesorów jednocześnie dowołuje się do tej samej komórki
pamięci; dlatego ze względu na obsługę operacji zapisu/odczytu pamięci
wyróżnia się cztery typy:
o EREW (ang. Exlusive Read/Exlusive Write) – niedozwolone są współbieżne
zdarzenia odczytu lub zapisu informacji z/do określonej komórki pamięci,
o CREW (ang. Concurent Read/Exlusive Write) – dozwolone są współbieżne
operacje odczytu z pamięci przez wiele procesorów przy możliwości zapisu
tylko przez jeden procesor,
o ERCW (ang. Exlusive Read/Concurent Write) – procesory mają możliwość
współbieżnego zapisu do pamięci, ale tylko jeden może w danym czasie
odczytywać zawartość danej komórki,
o CRCW (ang. Concurent Read/Concurent Write) – wszystkie procesory mogą
jednocześnie czytać i zapisywać informacje z/do pamięci.
Ze względu na sposób realizacji warstwy komunikacyjnej
komputerowym połączenia między procesorami dzielimy na:
•
w
systemie
statyczne – połączenia pomiędzy elementami przetwarzającymi mają charakter
pasywny i nie są rekonfigurowalne; najczęściej spotykane w architekturach
SIMD; wyróżnia się następujące typy takich połączeń:
o połączenia wyczerpujące – każdy procesor posiada połączenie z każdym
innym, w wyniku czego osiąga się idealną nieblokującą komunikację
pomiędzy każdą parą procesorów; możliwa jest też nieblokująca komunikacja
typu broadcast,
14
Architektury komputerowe
Opracowanie
2006/2007
o gwiazda – jeden z procesorów jest procesorem centralnym, biorącym udział w
każdym procesie transmisji i stanowiącym ograniczenie przepustowości,
o szereg lub pierścień – stosowany w przypadku transputerów, używany m. in.
przy realizacji algorytmów systolicznych,
o krata – 2- lub 3-wymiarowa, w której każdy procesor posiada połączenie z 4
lub 6 sąsiadami; jej rozszerzeniami jest siatka lub torus;
o drzewo – występuje tu pojedynczy kanał komunikacyjny pomiędzy
procesorami, co ogranicza przepustowość przy dużej liczbie procesorów;
jednym z rozwiązań jest zwiększenie przepustowości przy korzeniu (grube
drzewo),
o hipersześcian – struktura, która może być zrealizowana na dowolnej topologii;
dla a-wymiarowego sześcianu (p = 2liczba procesorów) najdłuższa ścieżka wynosi k
kroków i wzrasta logarytmiczne z rozmiarem systemu; wadą jest zależność
liczby połączeń każdego z elementów przetwarzających od wymiaru
hipersześcianu,
•
dynamiczne – implementują jedną z czterech możliwości:
o architektura magistralowa – rozwiązanie oszczędne cenowo, proste w
implementacji i umożliwiające łatwą rozbudowę systemu; wadą jest
możliwość wyczerpania pasma przepustowości przy dużej liczbie
procesorów; możliwe jest wykonanie magistral redundantnych i pakietowych
z korzyścią dla wydajności i niezawodności; typowym zastosowaniem są
serwery usług sieciowych, baz danych i obliczeniowe średniej mocy,
o przełącznica krzyżowa – zwana również wybierakiem krzyżowym to
najkosztowniejsze, lecz najwydajniejsze rozwiązanie, realizujące połączenia
nieblokujące, w tym sensie, że komunikacja między procesorem i pamięcią nie
blokuje innych połączeń tego typu; ograniczeniem jest nieliniowe
zapotrzebowanie na liczbę punktów łączących (o(k2), gdzie k jest liczbą wejść i
wyjść); jest stosowana w wieloprocesorowych komputerach wektorowych i
niektórych rozwiązaniach wieloprocesorowych maszyn równoległych,
o sieci wielostopniowe – są rozwiązaniem leżącym pomiędzy dwoma wcześniej
wymienionymi; przykładem jest sieć typu Omega, która posiada log2k stopni
przełączających, a złożoność zapotrzebowania na przełączniki jest liniowologarytmiczna, choć pewne połączenia mogą być blokowane; niezbyt
popularne rozwiązanie,
o organizacja hierarchiczna – jej stosowanie wynika z potrzeby budowania
komputerów o bardzo dużej liczbie procesorów; istnieją w niej węzły
składające się z kilku-, kilkudziesięciu procesorów, przeznaczone głównie do
pracy w modelu SMP; lokalnie w węźle stosuje się przełącznicę krzyżową lub
magistralę, co mniejsza opóźnienia i zwiększa przepustowość; komunikacja
między węzłami jest wolniejsza; jej realizacją są najczęściej komputery typu
cc-NUMA może realizować jednocześnie modele SMP (z równoległością
danych) i przesyłaniem wiadomości; jest najbardziej zaawansowana
technologicznie i stosuje się ją przy nowoczesnych algorytmach
15
Architektury komputerowe
Opracowanie
2006/2007
obliczeniowych, z heterogenicznym modelem programowania – z modelem
równoległości danych dla węzła i przesyłaniem wiadomości między węzłami.
16
Architektury komputerowe
Opracowanie
2006/2007
Metody oceny wydajności obliczeń równoległych
Wydajność obliczeniowa algorytmu sekwencyjnego (przeznaczonego do realizacji na
maszynie sekwencyjnej) jest zwykle oceniana na podstawie czasu wykonania
programu, TS, zależnego od wielkości problemu obliczeniowego określonego przez
dane wejściowe.
Czas obliczeń algorytmu równoległego, Tp, zależy nie tylko od liczby procesorów
maszyny równoległej, p, ale także od modelu programowania i rodzaju architektury.
Obliczenia równolegle nie mogą być oceniane w separacji od stosowanej
architektury.
Obliczenia równoległe możemy projektować na dwa sposoby:
•
ze stałym rozmiarem problemu, w którym wielkość problemu nie ulega zmianie
ze wzrostem liczby użytych węzłów obliczeniowych, p, a czas obliczeń, Tp, ulega
skróceniu,
•
ze zmiennym rozmiarem problemu, wzrastającym wraz ze zwiększaniem liczby
węzłów obliczeniowych najczęściej w sposób zachowujący stały czas obliczeń
(Tp = const).
Jedną z najważniejszych metryk wydajności jest czas wykonania Tp. Jest to funkcja
uzależniona m. in. od liczby procesorów (p), wielkości problemu obliczeniowego (n),
architektury komputera, liczby generowanych zadań, przyjętego modelu
programowania równoległego i innych. Na czas realizacji wpływa też:
ts – czas poświęcony na część która musi być liczona sekwencyjnie,
tpc – część która może być liczona równolegle,
tc – narzut komunikacyjny,
ti – czas bezczynności związany z brakiem danych do przetworzenia (występuje
zwłaszcza niedostatecznego zrównoważenia obciążenia między procesorami).
Czas realizacji równoległej wynosi zatem:
Tp = ts + tpc + tc + ti
Czas przeznaczony na komunikację pomiędzy procesami, tc, poświęcony jest na
wysyłanie i odbieranie wiadomości. Zazwyczaj zakłada się liniową zależność czasu
przeznaczonego na jeden komunikat, tc1, od długości komunikatu L wynosi:
tc 1 = tu + tw L
gdzie: tu – czas na inicjalizację komunikatu, tw – dotyczy czasu przesłania
komunikatu o standardowej długości.
Innymi metrykami wydajności są przyspieszenie i efektywność. Przy stałym
rozmiarze problemu przyspieszenie bezwzględne S* określa stopień skrócenia czasu
obliczeń dla realizacji równoległej w porównaniu z czasem najlepszej realizacji
sekwencyjnej TS*:
17
Architektury komputerowe
Opracowanie
2006/2007
S* =
TS*
TP
Ponieważ zazwyczaj nie znamy TS*, używamy w praktyce przyspieszenia
względnego S:
S=
T1
TP
w odniesieniu do programu równoległego liczonego na jednym procesorze (p = 1).
Przy założeniu, że tc = ti = 0, oraz oznaczając dalej tp, jako czas wykonania części
równoległej na jednym procesorze (tpc = tp/p) otrzymujemy tzw. regułę Amdahl’a:
S=
ts + t p
ts + t p / p
Z powyższego wzoru wynika fakt, iż w obecności części sekwencyjnej nie jest
możliwe uzyskanie liniowego wzrostu przyspieszenia ponieważ:
lim S = 1 + t p / t s
p→∞
Dla problemu o stałym rozmiarze efektywność względna jest określona jako:
E=
S
p
której wartość określa stopień wykorzystania architektury.
Dla problemu o skalowalnym rozmiarze zakłada się, że czas realizacji równoległej
Tp,k jest zależny od dwóch parametrów: liczby procesorów (p) i względnego
rozmiaru problemu (k). k jest wartością całkowitą określającą ile razy problem
rozwiązywany równolegle jest większy w porównaniu do problemu
rozwiązywanego sekwencyjnie. Wprowadzając dalej idealny przypadek, tc = ti = 0
oraz niezależność ts od rozmiaru problemu, a także T1,k = kTp=1 = kT1 (czyli liniową
złożoność problemu z jego rozmiarem) otrzymujemy:
Sk = k
T1
TP
Wartość skalowanego przyspieszenia ulega więc wzrostowi w porównaniu z
przyspieszeniem dla problemu o stałym rozmiarze.
Podsumowując – dla większości problemów o stałym rozmiarze obserwuje się
spadek efektywności wraz ze wzrostem liczby procesorów. Na efekt ten mają
wpływ: pogorszenie stosunku czasu obliczeń w domenach, na które podzielono
problem, do czasu komunikacji, narzut komunikacyjny i niedoskonała
dekompozycja skutkująca niezrównoważeniem obciążenia.
Istnieją algorytmy charakteryzujące się większym niż liniowe przyspieszeniem –
tzw. przyspieszeniem superliniowym. Są to m. in.: problemy, które po dekompozycji
mieszczą się w całości w pamięci podręcznej procesorów; zadania, które polegają na
znalezieniu najkrótszego czasu rozwiązania problemu.
18
Architektury komputerowe
Opracowanie
2006/2007
W praktyce korzystne jest określenie części sekwencyjnej (ang. serial fraction) f w
obliczeniach równoległych. Dla problemu o stałym rozmiarze:
f =
tp
T1
co przy założeniach podobnych do wcześniejszych daje:
f =
1/ S − 1/ p
1 − 1/ p
oraz:
1
1− f
= f +
S
p
Z powyższego wynika, że im mniejszy udział f, tym przyspieszenie bardziej zbliżone
jest do liniowego (czego należało się spodziewać).
Dla problemu o rozmiarze skalowalnym:
fk =
1/ S k − 1/ p
1 − 1/ p
19
Architektury komputerowe
Opracowanie
2006/2007
Architektury komputerowe dla zastosowań komercyjnych i
przemysłowych
W zastosowaniach
przetwarzania:
komercyjnych
wyróżnia
się
dwa
podstawowe
typy
•
przetwarzanie transakcyjne (ang. Online Transaction Processing – OLTP) – zmiana
stanu bazy danych (transakcje), obsługa zapytań i obsługa wielu użytkowników,
•
wspomaganie podejmowania decyzji i eksploracja danych (ang. Decision Support
Side of buissness – DSS) – złożony charakter niewielkiej ilości zapytań.
Cele stosowania zróżnicowanych architektur komputerowych w zależności od
zastosowań to uzyskanie:
•
największej wydajności komputera,
•
dużej efektywności wykorzystania pojedynczego węzła obliczeniowego,
•
wysokiej dostępności systemu komputerowego.
Głównymi trendami rozwoju modeli bazowanych są:
•
model scentralizowany (ang. host-terminal) – wykorzystywany głównie w
konfiguracjach z dużym komputerem centralnym typu mainframe; zarówno dane
jak i aplikacje rezydują na komputerze centralnym; użytkownik uzyskuje dostęp
do zasobów poprzez terminal o niewielkiej mocy,
•
model rozproszony (klient – serwer) – bazujący głównie na sieci komputerów z
procesorami RISC; klientami są użytkownicy korzystający z komputerów PC lub
stacji roboczych o własnych zróżnicowanych zasobach; wiele operacji
elementarnych, np. obsługa GUI, wykonują sami użytkownicy, zatem serwer
centralny jest odciążany z tych zadań,
•
model sieciowy – zastosowanie komputerów sieciowych wyposażonych jedynie
w system operacyjny i wirtualną maszynę Javy; komputery sieciowe
wykorzystują szybie łącza w celu pobrania aplikacji (apletu), wykonują je lokalnie
i korzystają z zasobów baz danych zgromadzonych na serwerach; komputer
sieciowy nie musi być mocną maszyną, w przeciwieństwie do modelu klientserwer, co wpływa na obniżenie kosztów wdrożenia,
•
przetwarzanie rozproszone (GRID Computing) – pewna wariacja modelu
sieciowego; może być rozpatrywane w dwóch kategoriach: rozdziału mocy
obliczeniowej lub decentralizacji danych; pozwalają na szybki zwrot
poniesionych nakładów, istnieje duża liczba aplikacji pozwalających na pracę w
takich środowiskach;
Spośród największych wad systemów rozproszonych wymieć można:
•
infrastruktura – klienci wykorzystują niepotrzebnie skomplikowane systemy
operacyjne oraz często niekompatybilne interfejsy ciężkiego klienta; serwery
posiadają różne konfiguracje i wykorzystują różne protokoły sieciowe dla
20
Architektury komputerowe
Opracowanie
2006/2007
współpracy z grupą klientów; zwiększenie złożoności struktury sieci prowadzi
do zmniejszenia funkcjonalności i niezawodności przetwarzania,
•
aplikacje – istnieje zbyt duża liczba zróżnicowanych, dużych aplikacji na różnych
platformach, które nie mogą być łatwo modyfikowane; aplikacje serwerów i
klientów mogą być napisane w różnych językach,
•
dane – polityka decentralizacji danych doprowadza często do nadmiernej liczby
baz danych, przechowujących dane redundantne i/lub nieaktualne,
•
utrzymanie systemu – użytkownicy mogą sami konfigurować swoje komputery
warstwy prezentacji zgodnie z ich upodobaniami, co może powodować
zmniejszenie wydajności i bezpieczeństwa; konieczne jest ponoszenie stałych
kosztów przeznaczonych na uaktualnianie systemów i aplikacji.
Podsumowując: duża złożoność, duże koszty administrowania systemem,
ograniczony standardowy poziom bezpieczeństwa danych, ochrony przed
niepowołanym systemem i dostępności, brak kompatybilności sprzętowej i
programowej elementów systemu utrudniająca eksplorację.
Wśród współczesnych trendów rozwojowych systemów sieciowych zaobserwować
można:
•
dedykowany procesor – wraz z dynamicznym rozwojem technologii związanej z
językiem Java pojawiła się pierwsza, dedykowana nowym zastosowaniom
rodzina nowoczesnych procesorów opracowana przez SUN Microsystems;
wstępnie zaproponowano trzy modele zróżnicowane pod względem wydajności i
zakresu zastosowań; wszystkie zapewniają efektywne wykonanie programu w
Javie, posiadają konfigurowane jądro procesora i dobry współczynnik wydajności
do ceny.
•
wzrost znaczenia programowania komponentowego – stanowi ono jeden ze
współczesnych paradygmatów programowania; idea polega na tworzeniu
małych, zwartych, niezależnych od otoczenia komponentów (fragmentów
oprogramowania),
wielokrotnie
wykorzystywanych
bez
konieczności
modyfikacji; złożony program składa się z niezależnych i zintegrowanych w
jedną całość komponentów, dzięki czemu zyskuje się dużą elastyczność i
niezawodność; przykładem są m. in. JavaBeans.
Spośród wcześniej omawianych architektur można wyróżnić cztery najważniejsze z
punktu widzenia zastosowań komercyjnych i przemysłowych:
•
systemy SMP – najprostsze i najpopularniejsze architektury systemów
komercyjnych; najbardziej odpowiada podstawowym celom aplikacji OLTP dla
małej i średniej wielkości baz danych, gdy transakcje nie odwołują się
jednocześnie do tych samych danych i modyfikują rozłączne dane; w przypadku
systemów DSS są dobre dla przeglądania całych tabel, co jednak wymusza
konieczność rozbudowywania zasobów sprzętowych; jej najważniejszymi
cechami są:
21
Architektury komputerowe
Opracowanie
2006/2007
o sprzętowa realizacja może wykorzystywać magistralę systemową (przy małej
liczbie procesorów) lub przełącznicę krzyżową (przy większej liczbie
procesorów),
o duża skalowalność jest uzyskiwana przez dodawanie nowych procesorów i
wymianę starszych na nowsze (łatwiejsze przy magistrali, której
przepustowość ogranicza jednocześnie zakres skalowalności) – łatwa
rozbudowa dzięki prostocie architektury,
o posiada prosty model programowania dzięki dzielonym zasobom, systemem
operacyjnym i oprogramowaniem,
o system operacyjny w sposób przeźroczysty zarządza wielozadaniowością i
wielodostępem,
o duża wydajność dla operacji na pamięci wspólnej przy
wymaganiach komunikacyjnych i synchronizacyjnych.
wysokich
Do głównych wad SMP zaliczyć należy:
o słabo nadają się do realizacji modyfikacji dużej liczby danych z różnych
instancji oddziałujących na te same bloki,
o posiadają ograniczoną skalowalność ze względu na przepustowość magistrali
systemowej lub skończone możliwości rozbudowy w przypadku przełącznicy
krzyżowej,
o pamięć operacyjna oraz magistrala są pojedynczymi punktami uszkodzeń dla
całego systemu (ang. Single Points of Failure); niektóre systemy pozwalają
kontynuować pracę przy częściowej awarii,
o maksymalna stosowana liczba procesorów to kilkadziesiąt; w zależności od
implementacji, maksymalna efektywność dla aplikacji typu komercyjnego
uzyskiwana jest najczęściej dla 20-30 procesorów.
•
architektury cc-NUMA – są bardziej rozbudowane niż SMP, a jednocześnie łączą
zalety systemów SMP i MPP, osiągając większą wydajność; najczęściej
zbudowane w strukturze hierarchicznej złożonej z wieloprocesorowych węzłów
obliczeniowych; wykorzystują jeden system operacyjny i pamięć liniową
rozproszoną pomiędzy poszczególne węzły, podsystem I/O jest dostępny
globalnie z dowolnego procesora; stosowane są głównie w obliczeniach
naukowo-technicznych wymagających wielkich mocy; ich zastosowanie w
systemach komercyjnych jest ograniczone, co wynika z niepełnego rozwoju
relacyjnych baz danych na tę architekturę i braku zapotrzebowania na aż tak
dużą moc; większe zastosowanie w systemach DSS architektura ta znajdzie
prawdopodobnie w przyszłości (hurtownie i eksploracja danych, aplikacje
buissness inteligence); do jej najważniejszych cech można zaliczyć:
o możliwość wykonywania
optymalizacji),
aplikacji
o zdolność partycjonowania zasobów
klastrowej, co wpływa na elastyczność,
22
przeznaczonych
i
tworzenia
na
wirtualnej
SMP
(po
struktury
Architektury komputerowe
Opracowanie
2006/2007
o rozszerzona skalowalność systemu (na przykład więcej niż 256 procesorów),
o jeden system operacyjny, możliwość implementacji modelu obliczeniowego
DSM na całej maszynie,
o dobra efektywność aplikacji korzystających głównie z operacji odczytu przy
niewielkiej liczbie synchronizacji.
Do głównych wad cc-NUMA można zaliczyć:
o architektura trudna w zastosowaniach do przetwarzania transakcyjnego przy
dużym udziale operacji modyfikacji zawartości pamięci i synchronizacji
obliczeń, ze względu na niejednakowy czas dostępu do pamięci,
o stosunkowo niska dostępność systemu z uwagi na istnienie pojedynczych
punktów uszkodzeń; mimo stopniowego podnoszenia niezawodności
sprzętu, m.in., przez zdolność do eliminacji elementów niesprawnych w
trakcie pracy (pamięć ECC, urządzenia typu hot swap), systemy wysokiej
dostępności wymagają dodatkowej redundancji.
•
systemy równoległe SMP – niezależny typ architektury, pośredni między SMP i
cc-NUMA, zwłaszcza dla systemów do przetwarzania komercyjnego; jako węzły
stosuje układy wieloprocesorowe z własnym systemem operacyjnym, które
zapewniają model przetwarzania typu SMP; implementowane są przeważnie na
architekturze cc-NUMA (poprzez partycjonowanie zasobów) lub bardzo dużych
SMP (poprzez rezygnację z kontroli jednym systemem operacyjnym); w
systemach komercyjnych zwraca się szczególną uwagę na optymalizację pod
kątem wysokiej dostępności, co jest uzyskiwane przez wydzielenie elementów
redundantnych; jest odpowiednia dla rozproszonych baz danych; jest to standard
w systemach DSS wielkiej skali; dla OLPT raczej mało odpowiednia z uwagi na
struktury globalne i częste uaktualnianie danych; do głównych cech PSMP
zaliczyć można:
o łatwa rozbudowa i duża skalowalność uzyskiwane przez zwiększenie liczby
procesorów lub pamięci w węźle i dodawanie nowych węzłów,
o możliwość wykorzystania równoległych systemów baz danych,
o możliwość rozbudowy w kierunku systemów wysokiej dostępności.
Największymi wadami systemów PSMP są:
o niższy poziom zabezpieczeń przed sytuacjami awaryjnymi w porównaniu do
systemów o wysokiej dostępności,
o złożone zarządzanie systemem.
•
systemy wysokiej dostępności – są budowane przy wykorzystaniu architektury
PSMP w oparciu o strukturę klastra – HAC (ang. High Avalibility Cluster); wiążą
się bezpośrednio z ideą klasy ciągłej odpornej na zdarzenia losowe i katastrofy;
przeznaczone są do uruchamiania aplikacji o charakterze podstawowym (mission
critical); zakłada się, że w ciągu jednego roku może wystąpić najwyżej 4,5h
nieplanowanego przestoju systemu komputerowego; stosuje się elementy
redundantne i mechanizmy programowe zwiększające niezawodność pracy i
23
Architektury komputerowe
Opracowanie
2006/2007
dostępność dla użytkowników; w przypadku awarii jednego z węzłów następuje
sterowana programowo migracja aplikacji na inny węzeł z zachowaniem
równoważenia obciążenia i ciągłości pracy systemu jako całości; cechy są
podobne jak dla systemów PSMP, na których są oparte, a ponadto dodać należy:
o wysoka dostępność,
o migracja zadań z uszkodzonego węzła na węzły nieuszkodzone z
zachowaniem równoważenia obciążenia i ciągłości pracy,
o możliwość wykonania prac systemowych w czasie działania systemu poprzez
ręczną migrację zadań i wyłączenie danego węzła z eksploatacji,
o większa złożoność systemu wiąże się z trudniejszą jego administracją.
Pierwotnie HAC przeznaczone były dla dużych instalacji o krytycznym
znaczeniu dla bezpieczeństwa narodowego i gospodarki światowej. Obecnie
wykorzystywane są również w mniejszych przedsięwzięciach: usługach
informatycznych, naukowo – technicznych, które wiążą się z koniecznością
realizacji usług w sposób ciągły.
Wspomnieć należy jeszcze o zastosowaniach przetwarzania 64-bitowego (głównie w
warstwie systemu operacyjnego), które wiążą się z ww. zagadnieniami:
•
adresacja – 32-bitowy procesor udostępnia adresację do 232 bajtów, czyli około 4
GB pamięci; procesor 64-bitowy pozwala zaadresować teoretycznie do 264 bajtów
(rzędu 18 EB),
•
obliczenia stałoprzecinkowe – zwiększony jest zakres zmiennych całkowitych
(typu long i pointer) i wzrasta wydajność przetwarzania dla dłuższych
reprezentacji danych,
•
większe wykorzystanie zasobów komputera przez system operacyjny –
większych zbiorów i większej ich liczby oraz obsługa większej liczby
użytkowników,
•
aplikacje; możliwa jest realizacja aplikacji o dużym zapotrzebowaniu na zasoby
systemu.
Jak widać, reprezentacja 64-bitowa przydatna jest w przypadkach, gdy wymagane
jest użycie zbiorów danych o wielkiej pojemności, bardzo dużej pamięci operacyjnej
oraz dużej przestrzeni adresowej dla aplikacji. Duża pamięć operacyjna jest
niezbędna w systemach SMP z wieloma procesorami.
Na zakończenie można zrobić podsumowanie zastosowań poszczególnych
architektur dla przetwarzania o charakterze komercyjnym i przemysłowym. Do
najważniejszych kryteriów przy wyborze architektury należą:
•
wydajność i skalowalność, sprawdzona i współczesna technologia,
•
możliwość etapowej
pilotażowej,
•
wysoka dostępność,
realizacji
inwestycji
24
poprzez
rozbudowę
instalacji
Architektury komputerowe
Opracowanie
2006/2007
•
popularność, dostępność i cena oprogramowania użytkowego,
•
wymagany poziom integracji z istniejącymi zasobami,
•
długowieczność systemu,
•
wymagane nakłady finansowe,
•
wizerunek produktu i producenta,
•
aktualne umiejętności użytkownika,
•
zakres i jakość usług producenta, serwis, usługi gwarancyjne i pogwarancyjne.
Poniższa tabela obrazuje przydatność architektur systemów komputerowych dla
danych zastosowań (w skali 1 – 4, gdzie 4 to ocena najwyższa):
SMP
cc-NUMA
PSMP
HAC
OLTP ogólnego
przeznaczenia
4
3
2
4
OLTP i DSS średniej
wielkości (do 1TB)
3
3
3
4
25
DSS dużej skali
(powyżej 1TB)
1
3/4
4
3

Podobne dokumenty