Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi
Plan wykładu 1 Komputer i jego architektura Taksonomia Flynna 2
Komputer i jego architektura Taksonomia Flynna Komputer Komputer to urzadzenie do przetwarzania danych, wyposażone w możliwość wprowadzania, przechowywania i wyprowadzania danych. Wprowadzanie i wyprowadzanie danych może być realizowane w postaci odpowiedniej dla człowieka, np. klawiatura, ekran itp. właściwej dla współpracy z jakimś obiektem, np. czujnik temperatury, grzejnik itp.
Komputer i jego architektura Taksonomia Flynna Architektura komputera Architektura komputera to sposób organizacji elementów tworzących komputer, zazwyczaj dotyczy połączeń pomiędzy pamięcią, procesorem i urządzeniami wejścia-wyjścia. Systemy komputerowe można dzielić ze względu na wiele czynników, m.in. ze względu na sposób organizacji pamięci i wykonywania programu wyróżnia się architekturę: von Neumanna, harwardzką, mieszaną.
Komputer i jego architektura Taksonomia Flynna Architektura von Neumanna Przedstawiona po raz pierwszy w 1945 roku przez Johna von Neumanna wspólnie z Johnem W. Mauchly ym i Johnem Presper Eckertem. Polega na ścisłym podziale komputera na trzy podstawowe części: 1 procesor w ramach którego wydzielona jest część sterująca, część arytmetyczno-logiczna, 2 pamięć zawierająca dane i sam program, 3 urządzenia wejścia/wyjścia.
Komputer i jego architektura Taksonomia Flynna Architektura von Neumanna System komputerowy o architekturze von Neumanna powinien: mieć skończoną i funkcjonalnie pełną listę rozkazów, mieć możliwość wprowadzenia programu do systemu komputerowego poprzez urządzenia zewnętrzne i jego przechowywanie w pamięci w sposób identyczny jak danych, dane i instrukcje w takim systemie powinny być jednakowo dostępne dla procesora, informacja jest tam przetwarzana dzięki sekwencyjnemu odczytywaniu instrukcji z pamięci komputera i wykonywaniu tych instrukcji w procesorze.
Komputer i jego architektura Taksonomia Flynna Architektura von Neumanna - podsumowanie Podane warunki pozwalają przełączać system komputerowy z wykonania jednego zadania (programu) na inne bez fizycznej ingerencji w strukturę systemu, a tym samym gwarantują jego uniwersalność. System komputerowy von Neumanna nie posiada oddzielnych pamięci do przechowywania danych i instrukcji. Instrukcje jak i dane są zakodowane w postaci liczb. Bez analizy programu trudno jest określić czy dany obszar pamięci zawiera dane czy instrukcje. Wykonywany program może się sam modyfikować traktując obszar instrukcji jako dane, a po przetworzeniu tych instrukcji (danych) zacząć je wykonywać.
Komputer i jego architektura Taksonomia Flynna Architektura harwardzka Podstawowa architektura komputerów zerowej generacji i początkowa komputerów pierwszej generacji. Pamięć danych programu jest oddzielona od pamięci rozkazów. Prostsza (w stosunku do architektury von Neumanna) budowa przekłada się na większą szybkość działania. Architektura wykorzystywana w mikrokomputerach jednoukładowych, w procesorach sygnałowych, przy dostępie procesora do pamięci cache.
Komputer i jego architektura Taksonomia Flynna Taksonomia Flynna Taksonomia Michaela J. Flynna (1968) zakłada, że komputer jest urządzeniem przetwarzającym strumienie danych na podstawie strumieni instrukcji. Wyróżnia się tu architekturę: SISD (Single Instruction Single Data) procesory skalarne, najczęściej uniprocesory von Neumanna, SIMD (Single Instruction Multiple Data) procesory wektorowe, graficzne GPU, MISD (Multiple Instruction Single Data) procesory wykorzystujące redundancję do minimalizacji błędów, MIMD (Multiple Instruction Multiple Data) systemy wieloprocesorowe, klastry i gridy.
Taksonomia Flynna Komputer i jego architektura Taksonomia Flynna
Rozszerzona taksonomia Flynna Komputer i jego architektura Taksonomia Flynna Urządzenia bez strumienia instrukcji mogą przetwarzać dane, gdyż dane mogą nieść ze sobą informacje o potrzebnym przetwarzaniu. Są to tzw. komputery sterowane przepływem danych Dataflow.
- założenia Brak licznika rozkazów operacje są wykonywane, gdy dostępne staną się argumenty rozkazów. Poszczególne operacje są wykonywane w niezależnych węzłach, których liczba zależy od konstrukcji sprzętu. Operacja jest wykonywana po dostarczeniu wszystkich argumentów, a po wykonaniu zadania wynik jest przekazywany do kolejnego węzła. Wszystkie instrukcje gotowe do wykonania, w sensie dostępności ich danych wejściowych, powinny wykonać się równolegle. Kolejność wykonania instrukcji programu nie jest wyznaczana przez programistę, lecz przez gotowość wszystkich danych wejściowych instrukcji.
- założenia
- realizacja Model zakłada, że dla każdej instrukcji gotowej do wykonania będzie dostępny odrębny procesor. W praktyce, model realizuje się 1 dysponując ograniczoną liczbą procesorów typu von Neumana. W systemie istnieje blok przeglądania instrukcji programu pod względem ich gotowości do wykonania. Spośród instrukcji gotowych, kieruje się do równoległego wykonania tylko liczbę odpowiadającą faktycznej liczbie dostępnych procesorów. Po ich wykonaniu, rozsyła się wyniki między instrukcjami i wyznacza się nowy zbiór instrukcji gotowych do wykonania. 1 Nie są współcześnie konstruowane (ok.1985 firma NEC produkowała mikroprocesor dataflow), ale podejście to jest często używane do opisu procesów informacyjnych.
- podsumowanie Komputery von Neumanna Sterowane przesyłem operacji. O wyborze rozkazu do wykonania decyduje zawartość licznika rozkazów. Komputery typu dataflow Sterowane przesyłem argumentów. O wyborze rozkazu do wykonania decyduje gotowość wszystkich danych wejściowych.
Formą języka programowania dla komputerów sterowanych przepływem danych mogą być tzw. języki pojedyńczych przypisań (ang. single assignment languages). Wykorzystuje się tu zmienne, reprezentujące dane i wyniki obliczeń, którym nadaje się wartości tylko raz w trakcie wykonywania programu. Jest tworzona tzw. kanoniczna postać algorytmu, w której występują tylko instrukcje podstawienia (przypisania) postaci:
- przykłady 1 y = ax + b 2 y = NWD(a, b) 3 (y 1, y 2,..., y n ) = pierwiastki równania 4 y 1 = O 1 (a 1 ) y 2 = O 2 (a 2, y 1 ) y 3 = O 3 (a 3, y 1 ) y 4 = O 4 (y 1, y 2, y 3 ) n a i x i = 0 i=0
Przykład realizacji algorytmu y 1 = O 1 (a 1 ) y 2 = O 2 (a 2, y 1 ) y 3 = O 3 (a 3, y 1 ) y 4 = O 4 (y 1, y 2, y 3 )
Przykład realizacji algorytmu y 1 = O 1 (a 1 ) y 2 = O 2 (a 2, y 1 ) y 3 = O 3 (a 3, y 1 ) y 4 = O 4 (y 1, y 2, y 3 )
Przykład realizacji algorytmu y 1 = O 1 (a 1 ) y 2 = O 2 (a 2, y 1 ) y 3 = O 3 (a 3, y 1 ) y 4 = O 4 (y 1, y 2, y 3 )
Przykład realizacji algorytmu y 1 = O 1 (a 1 ) y 2 = O 2 (a 2, y 1 ) y 3 = O 3 (a 3, y 1 ) y 4 = O 4 (y 1, y 2, y 3 )
Przykład realizacji algorytmu y 1 = O 1 (a 1 ) y 2 = O 2 (a 2, y 1 ) y 3 = O 3 (a 3, y 1 ) y 4 = O 4 (y 1, y 2, y 3 )
Przykład realizacji algorytmu y 1 = O 1 (a 1 ) y 2 = O 2 (a 2, y 1 ) y 3 = O 3 (a 3, y 1 ) y 4 = O 4 (y 1, y 2, y 3 )
Macierz zmiennych formy kanonicznej algorytmu Macierz kwadratowa podająca dla każdej zmiennej, zmienne dla których staje się ona w procesie realizacji algorytmu argumentem. Przykład: y 1 = O 1 (a 1 ) y 2 = O 2 (a 2, y 1 ) y 3 = O 3 (a 3, y 1 ) y 4 = O 4 (y 1, y 2, y 3 )
Macierz zmiennych formy kanonicznej algorytmu powinna być macierzą górnotrójkątną. Twierdzenie o realizowalności algorytmu 1 Jeśli macierz jest górnotrójkątna, to dany algorytm można zrealizować w systemie sterowanym przepływem argumentów. 2 Dany algorytm można zrealizować w systemie sterowanym przepływem argumentów wtedy i tylko wtedy, gdy macierz zredukowana ma przekątna zerową. A macierz zmiennych formy kanonicznej algorytmu. f r (A) = AA + A funkcja redukująca. Redukcję przeprowadzić lg 2 n razy, gdzie n wymiar macierzy.
- przykłady 1 Algorytm realizowalny: y 1 = O 1 (a 1 ) y 2 = O 2 (a 2, y 1 ) y 3 = O 3 (a 3, y 1 ) y 4 = O 4 (y 1, y 2, y 3 ) 2 Algorytm nierealizowalny: y 1 = O 1 (a 1, y 2 ) y 2 = O 2 (a 2, y 1 ) macierz górnotrójkatna macierz zredukowana nie ma zerowej przekątnej
gdzie: P = L L n, P przyspieszenie realizacji algorytmu, L całkowita liczba operacji w algorytmie w jego postaci kanonicznej, L n liczba operacji uogólnionych (operacje wykonywane równocześnie liczone są jako jedna operacja uogólniona).
- przykład1 y 1 = O 1 (a 1 ) y 2 = O 2 (a 2, y 1 ) y 3 = O 3 (a 3, y 1 ) y 4 = O 4 (y 1, y 2, y 3 ) Wyznaczenie y 2 oraz y 3 można realizować równolegle, zatem P = L L n = 4 3.
- przykład2 Obliczyć sumę elementów zbioru {a i }, dla i = 1, 2,..., 8. Algorytm 1 y 1 = a 1 + a 2 y 2 = y 1 + a 3 y 3 = y 2 + a 4 y 4 = y 3 + a 5 y 5 = y 4 + a 6 y 6 = y 5 + a 7 y 7 = y 6 + a 8 Algorytm 2 y 1 = a 1 + a 2 y 2 = a 3 + a 4 y 3 = a 5 + a 6 y 4 = a 7 + a 8 y 5 = y 1 + y 2 y 6 = y 3 + y 4 y 7 = y 5 + y 6
- przykład2 Obliczyć sumę elementów zbioru {a i }, dla i = 1, 2,..., 8. Algorytm 1 y 1 = a 1 + a 2 y 2 = y 1 + a 3 y 3 = y 2 + a 4 y 4 = y 3 + a 5 y 5 = y 4 + a 6 y 6 = y 5 + a 7 y 7 = y 6 + a 8 Algorytm 2 y 1 = a 1 + a 2 y 2 = a 3 + a 4 y 3 = a 5 + a 6 y 4 = a 7 + a 8 y 5 = y 1 + y 2 y 6 = y 3 + y 4 y 7 = y 5 + y 6 P = L L n = 7 7 = 1. P = L L n = 7 3 2, 33.
- podsumowanie Przyspieszenie zależy od sposobu organizacji algorytmu. Najkrótszy czas realizacji procesu zapisanego algorytmu otrzymuje się wtedy, gdy maksymalizuje się na każdym etapie liczbę możliwych operacji, wtedy P = L L n = n 1 log 2 n, gdzie n liczba danych wejściowych.