Architektury komputerów (1) Architektura Systemów Komputerowych mgr inż. Michał Misiak
Agenda Historia komputerów Architektury komputerów Jednostki wydajności Super komputery
Historia maszyn obliczeniowych Jednym z najstarszych urządzeń do przetwarzania informacji był abak Używany przez starożytnych Egipcjan, Greków i Rzymian Pierwszy znany, bardziej skomplikowany przyrząd służący do obliczeń pochodzi z ok. 80 wieku p.n.e. Przeznaczony był prawdopodobnie do obliczeń nawigacyjnych W 967r. Gerbert Aurillac (papieź Sylwester II) skonstruował (abak) liczydło
Pałeczki Nepera Matematyk szkocki John Neper wynalazł logarytm Korzystając z pałeczek i koncepcji logarytmu udało mu się przyśpieszyć żmudne obliczenia 1622 - matematycy angielscy E. Gunter i W. Oughtred wynaleźli suwak logarytmiczny
Pierwsza maszyna licząca W 1930r. V. Bush skonstruował analogowy analizator równań różniczkowych Najbardziej złożona maszyna mechaniczna jaka kiedykolwiek działała Pierwszym cyfrowym mechanicznym urządzeniem liczącym była czterodziałaniowa maszyna licząca niemieckiego astronoma i matematyka W. Schickharda.
Młynek arytmetyczny 1882 - Charles Babbage angielski matematyk zaprojektował i częściowo skonstruował maszynę licząca metodą różnic skończonych. 1833 opracował projekt maszyny analitycznej „młynkiem arytmetycznym” działającej na zasadzie zbliżonej do zasady działania współczesnych komputerów. Funkcjonalność: podstawowe działania matematyczne, zapamiętywać dane wejściowe, pośrednie oraz wyniki obliczeń. Wprowadzaniu i wyprowadzaniu danych służyły karty dziurkowane. Projekt nie doczekał się realizacji z powodu niskiego poziomu ówczesnej techniki.
ENIAC 1946r. w USA zbudowano maszynę liczącą, do której budowy użyto lamp elektronowych ENIAC - Elektronic Numerical Integrator and Computer ENIAC był elektronicznym sumatorem i kalkulatorem cyfrowym 18 tysięcy lamp elektronowych Waga 30 ton. Pamięć: 20 liczb dwudziestocyfrowych ENIAC wykonywał 5000 dodawań na 1s
Architektura komputera (Stallings) Architektura komputera – to wszystkie elementy, które widoczne są dla programisty i mają wpływ na wykonanie programu lista rozkazów sposób reprezentacji liczb metody adresowania argumentów Koncepcja połączenia ze sobą: pamięci, procesora i urządzeń wej-wyj.
Organizacja komputera (Stallings) Organizacja komputera – to sposób realizacji architektury. Zmienia się bardzo szybko wraz z rozwojem technologii. Składnikami organizacji komputera są: sposób realizacji instrukcji specyficzne rozwiązania sprzętowe zależne od dostawcy sposób wykonania poszczególnych elementów
Architektura von Neuman Pamięć adresy dane i rozkazy Jednostka sterująca Jednostka Arytmetyczno Logiczna Program Counter rozkazy Accumulator Memory Address Register multiplier-quotier instrukcje Rejestry Instruction Buffer Register memory buffer register wyj wej
Architektura von Neuman System zbudowany o architekturę von Neuman powinien się charakteryzować: skończoną i funkcjonalnie pełną listą rozkazów umożliwiać wprowadzanie programu do systemu komputerowego po przez urz. zewnętrzne i przechowywania go w pamięci dane i instrukcje powinny być jednoznacznie dostępne dla procesora informacja przetwarzana dzięki sekwencyjnemu wykonywaniu instrukcji z pamięci komputera System nie posiada oddzielnych pamięci dla danych i instrukcji
Architektura współczesnego komputera Procesor z co najmniej jedną jednostką artymentyczno-logiczną, jednostką sterującą i rejestrami Pamięć operacyjna Urządzenia wejścia-wyjścia Układ bezpośredniego dostępu do pamięci (DMA, Direcotry Memory Access) Układ przerwań
Procesor Układ logiczny pracujący sekwencyjnie potrafiący pobierać dane z pamięci, interpretować je i wykonywać jako ciąg rozkazów Zbudowany z wielu warstw półprzewodnikowych zawierających tranzystory Współczesne procesy wykonane są w technice nawet 65 nm Typowe rozkazy mikroprocesora: Kopiowanie danych: pamięć – rejestr, pamięć-pamięć Działania arytmetyczne Działania na bitach: AND, OR, XOR, NOR, NOT Skoki: warunkowe i bezwarunkowe
Budowa procesora Rejestry do przechowywania danych i wyników Licznik rozkazów Rejestr instrukcji Wskaźnik stosu Jedna lub wiele jednostek arytmetyczno-logicznych do wykonywania obliczeń na danych Układ sterujący przebiegiem wykonania programu Parametry określające procesor: Długość słowa np. 32, 64 bity na którym wykonywane są obliczenia Szybkość wykonywania programu: częstotliwość taktowania Proste rejestry mają jeden zwany akumulatorem
Architektura Princeton i Harward Architektura Princeton – podobnie jak w przypadku arch. von Neuman’a wspólna hierarchia pamięci programu i danych Architektura Harward – pamięć danych jest oddzielona od pamięci rozkazów Stosowane są w celu zwiększenia wydajności w pamięciach podręcznych i systemach wbudowanych Arch. Harwardzka stosowana w jednoukładowych, gdzie występuje separacja danych od rozkazów zapisanych w pamięci ROM
Arch. Princeton i Arch. Harvard program dane program i dane Procesor Procesor Arch. Harvard Arch. Princeton
Taksonomia Flynna Klasyfikacja architektura zaproponowana przez M. Flynna w latach ’60. Opiera się o koncepcje, że komputer przetwarza strumienie danych w oparciu o listę instrukcji Klasyfikuje komputery ze względu na liczbę strumieni instrukcji i danych Klasyfikacja aktualnie ma znaczenie historyczne
Taksonomia Flynna Liczba strumieni danych 1 n Liczba strumieni instrukcji SISD Single Instruction stream Single Data stream SIMD Multiple Data streams MISD Multiple Instruction streams MIMD Multiple Data Streams
Opis klasyfikacji Flynna SISD (Single Instruction, Single Data) - przetwarzany jest jeden strumień danych przez jeden wykonywany program - komputery skalarne/sekwencyjne. SIMD (Single Instruction, Multiple Data) - przetwarzanych jest wiele strumieni danych przez jeden wykonywany program - komputery wektorowe. MISD (Multiple Instruction, Single Data) - wiele równolegle wykonywanych programów przetwarza jednocześnie jeden wspólny strumień danych. Systemy wykorzystujące redundancję (wielokrotne wykonywanie tych samych obliczeń) do minimalizacji błędów. MIMD (Multiple Instruction, Multiple Data) - równolegle wykonywanych jest wiele programów, z których każdy przetwarza własne strumienie danych - przykładem mogą być komputery wieloprocesorowe, a także klastry i gridy.
Architektury wieloprocesorowe Superkomputer Klaster, ang. cluster Siatka, ang. grid
Architektury wieloprocesorowe SMP (Symmetric Multi-Processing), UMA (Uniform Memory Access, Uniform Memory Architecture) – wszystkie procesory maja równoprawny dostęp do wspólnej pamieci; NUMA (Non-Uniform Memory Access, Non-Uniform Memory Architecture) – dostęp do pamięci lokalnej jest bardziej efektywny niż dostęp do pamięci innych procesorów; COMA (Cache Only Memory Architecture) – pamięć lokalna pełni funkcje pamięci podręcznej dla wszystkich procesorów; architektury mieszane.
Symmetric Multiprocessing Współdzielenie pamięci oraz urządzeń wej-wyj Przypisanie procesora do wykonania zadania w celu równoważenia obciążenia Większa efektywność aplikacji współbieżnych Uniks, Windows NT, BeOS
Non-Uniform Memory Access Spójna logicznie przestrzeń adresowa, przy podzielonej fizycznie pamięci Procesor uzyskuje szybciej dostęp do swojej lokalnej pamięci i do pamięci pozostałych procesorów lub pamięci współdzielonej
Cache only memory architecture Pamięć lokalna używana jest jako pamięć cache Efektywniejsze wykorzystanie zasobów pamięci
Jednostki obliczeniowe FLOPS – (FLoating point Operations Per Second) jest to liczba operacji zmiennoprzecinkowych na sekundę. FLOPS określa wydajność układów realizujących obliczenia zmiennoprzecinkowe Aktualnie większość maszyn zawiera jednostkę FPU odpowiedzialną za realizację operacji zmiennoprzecinkowych Najszybsze komputery osiągają wydajność liczoną w PFLOPS
Superkomputery Ranking TOP 500 Do mierzenia wydajność wykorzystywany jest HPLinpack http://pl.wikipedia.org/wiki/TOP500 W Polsce najszybszy komputer znajduje się w Centrum Informatycznym Trójmiejskiej Akademickiej Sieci Komputerowej i osiągnął wydajność: 1,117 TFLOPS-a
Zapraszam na kolejne wykłady ;) Dziękuje! Zapraszam na kolejne wykłady ;)