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