Architektury Komputerowe

Podobne dokumenty
Algorytmy i Struktury Danych

16. Taksonomia Flynn'a.

Architektura komputerów

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Podstawy Informatyki Systemy sterowane przepływem argumentów

Architektura komputerów

Architektura mikroprocesorów TEO 2009/2010

Dr inż. hab. Siergiej Fialko, IF-PK,

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Magistrala. Magistrala (ang. Bus) służy do przekazywania danych, adresów czy instrukcji sterujących w różne miejsca systemu komputerowego.

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Architektury komputerów Architektury i wydajność. Tomasz Dziubich

Nowoczesne technologie przetwarzania informacji

Zegar - układ wysyłający regularne impulsy o stałej szerokości (J) i częstotliwości (f)

Systemy rozproszone. na użytkownikach systemu rozproszonego wrażenie pojedynczego i zintegrowanego systemu.

Budowa komputera Komputer computer computare

LEKCJA TEMAT: Zasada działania komputera.

Klasyfikacje systemów komputerowych, modele złożoności algorytmów obliczeniowych

Algorytmy dla maszyny PRAM

Budowa Mikrokomputera

Analiza ilościowa w przetwarzaniu równoległym

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Architektura komputerów

Podstawy Techniki Mikroprocesorowej wykład 13: MIMD. Dr inż. Jacek Mazurkiewicz Katedra Informatyki Technicznej

Programowanie współbieżne Wykład 2. Iwona Kochańska

Architektura Komputerów

Spis treści. 1 Wprowadzenie. 1.1 Podstawowe pojęcia. 1 Wprowadzenie Podstawowe pojęcia Sieci komunikacyjne... 3

3.Przeglądarchitektur

Numeryczna algebra liniowa

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Architektura komputerów

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Obliczenia Wysokiej Wydajności

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

3.Przeglądarchitektur

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

Metody optymalizacji soft-procesorów NIOS

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Przetwarzanie równoległesprzęt. Rafał Walkowiak Wybór

Projektowanie. Projektowanie mikroprocesorów

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wydajność obliczeń a architektura procesorów. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Programowanie współbieżne i rozproszone

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Obliczenia Wysokiej Wydajności

Wprowadzenie do systemów operacyjnych

ARCHITEKTURA PROCESORA,

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

5. Model komunikujących się procesów, komunikaty

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Architektura komputerów

1. ARCHITEKTURY SYSTEMÓW KOMPUTEROWYCH

Budowa i zasada działania komputera. dr Artur Bartoszewski

Systemy rozproszone System rozproszony

współbieżność - zdolność do przetwarzania wielu zadań jednocześnie

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Budowa karty sieciowej; Sterowniki kart sieciowych; Specyfikacja interfejsu sterownika sieciowego; Open data link interface (ODI); Packet driver

System komputerowy. System komputerowy

Bibliografia: pl.wikipedia.org Historia i rodzaje procesorów w firmy Intel

<Nazwa firmy> <Nazwa projektu> Specyfikacja dodatkowa. Wersja <1.0>

Magistrala systemowa (System Bus)

Zaawansowane narzędzia programowania rozproszonego

Wstęp. Historia i przykłady przetwarzania współbieżnego, równoległego i rozproszonego. Przetwarzanie współbieżne, równoległe i rozproszone

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Mikroprocesory rodziny INTEL 80x86

Programowanie procesorów graficznych GPGPU

Architektura systemów komputerowych

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

Wykład 8 Systemy komputerowe ze współdzieloną pamięcią operacyjną, struktury i cechy funkcjonalne.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Strojenie systemu Linux pod k¹tem serwera bazy danych Oracle 9i

DLA SEKTORA INFORMATYCZNEGO W POLSCE

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

Stronicowanie w systemie pamięci wirtualnej

Wprowadzenie do architektury komputerów. Taksonomie architektur Podstawowe typy architektur komputerowych

SYSTEMY OPERACYJNE WYKŁAD 1 INTEGRACJA ZE SPRZĘTEM

Architektura systemów komputerowych. dr Artur Bartoszewski

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Tworzenie programów równoległych. Krzysztof Banaś Obliczenia równoległe 1

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

Projekt dotyczy stworzenia zintegrowanego, modularnego systemu informatycznego wspomagającego zarządzanie pracownikami i projektami w firmie

Historia modeli programowania

Inżynieria Programowania - Projektowanie architektoniczne

Transkrypt:

Architektury Komputerowe zagadnień egzamin 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

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

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

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ą 2n 3 /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

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

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

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

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

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

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

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 Sterowane instrukcjami Sterowane danymi SISD SIMD MIMD Sieciowe Mechanizm sterowania SMP MMP DSM Klastry Rozproszone Organizacja przestrzeni adresowej Sześcian Drzewo Krata Homo Hetero Hetero Homo Pierścień 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

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

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