Porównaj CISC, RISC, EPIC. CISC Complex Instruction Set duża liczba rozkazów (instrukcji) mała optymalizacja niektóre rozkazy potrzebują dużej liczby cykli procesora do wykonania występowanie złożonych, specjalistycznych rozkazów duża liczba trybów adresowania do pamięci może się odwoływać bezpośrednio duża liczba rozkazów mniejsza od procesorów RISC częstotliwość taktowania procesora powolne działanie dekodera rozkazów Procesory rodziny CISC AMD x86 M68000 Zredukowana liczba rozkazów do niezbędnego minimum upraszcza to znacznie konstrukcję procesora. Redukcja trybów adresowania większość operacji wykonuje się wg schematu: rejestrc = rejestra operacja rejestrb. Ograniczenie komunikacji pomiędzy pamięcią a procesorem. Do przesyłania danych pomiędzy pamięcią a rejestrami służą instrukcje Load (załaduj z pamięci) oraz store (zapisz do pamięci); pozostałe instrukcje operują wyłącznie na rejestrach. Schemat działania załaduj daną z pamięci do rejestru, na zawartości rejestru wykonaj działanie, przepisz wynik z rejestru do pamięci. Zwiększenie liczby rejestrów (np. 32, 192, 256, x86 jest 8), co również ma wpływ na zmniejszenie liczby odwołań do pamięci Podejście RISC wprowadzono na początku lat 80tych XX wieku (projekt IBM 801, architektury MIPS i Berkeley RISC). Ważniejsze współczesne architektury RISC: MIPS SPARC ARM
EPIC Czysta architektura CISC oraz RISC posiada swoje wady, dlatego obecnie wykorzystuje się technologię ich łączenia: Procesory Intela z punktu widzenia programisty widziane są jako CISC, ale ich rdzeń jest RISC owy Rozkazy CISC są rozbijane na mikrorozkazy, które są następnie wykonywane przez RISC owy blok wykonawczy grupowanie instrukcji i oznaczanie ich wzajemnych relacji już na etapie kompilacji programu. Instrukcje są zamknięte w tzw. paczkach (po trzy instrukcje), które są ładowane do procesora równocześnie, w jednym takcie zegara. Dodatkowo część poleceń wykonywana jest równolegle Wypada jeszcze wiedziec, ze istnieje jeszcze cos takiego jak VLIW Very Long Instruction Word),a wywodzi się od RISCa Podaj sposoby organizacji pamięci dla maszyn wieloprocesorowych. Kuzwa no nie wiem, nie moge znalezc. Opisz benchmark Linpack. Linpack został zaprojektowany w latach 70. i na początku lat 80. jako zestaw procedur języka Fortran, które analizują i rozwiązują równania liniowe oraz liniowe problemy o złożoności przynajmniej kwadratowej. Ponadto w pakiecie zaimplementowano rozwiązywanie układów równań w postaci różnych macierzy (m.in. trójkątnych, o nieokreślonej symetrii). Sam Linpack został oparty na innym pakiecie (BLAS poziom 1), który zawiera podstawowe operacje na wektorach. Obecnie Linpack jest wypierany przez Lapack, który został zaprojektowany tak by wydajniej pracować w systemach z pamięcią współdzieloną. 3.2 Ogólny opis benchmarku Linpack Benchmark został wprowadzony przez Jack a Dongarra w 1979 roku. Początkowym przeznaczeniem była pomoc użytkownikom w oszacowaniu czasu niezbędnego do wykonania obliczeń. Ten zestaw testów wydajności polega na obliczeniu rzadkiego układu równań, czyli takiego, który po zapisaniu w postaci macierzy będzie posiadał wiele zer. Możliwe jest modyfikowanie rozmiaru macierzy oraz kompilacja benchmarku w sposób zoptymalizowany pod daną architekturę systemu. Proces optymalizacji nie wpływa na całościową wydajność systemu, z wyłączeniem systemów dedykowanych do rozwiązywania tego typu układów równań. Jeśli problem jest regularny uzyskana wydajność jest bardzo wysoka, i otrzymany wynik daje dobre przybliżenie maksymalnej wydajności. Mierząc wydajność dla problemów o różnym rozmiarze n (rozmiar używanej macierzy) otrzymuje się wyłącznie maksymalną wydajność dla problemu o rozmiarze n oraz dla problemu o rozmiarz 1/2 n, gdzie bierze się pod uwagę połowę otrzymanej maksymalnej wydajności. W raportach z testów podaje się maksymalną teoretyczną wydajność, maksymalną rzeczywistą wydajność dla problemu o rozmiarze n i dla problemu o rozmiarze 1/2 n. Wszystkie algorytmy wykonują operacje na licznach zmiennoprzecinkowych podwójnej precyzji. Takie wymogi wykluczają możliwość stosowania bardzo szybkich algorytmów mnożenia macie-
rzy, metod działający z precyzją mniejszą niż maksymalna możliwa (zakłada się 64-bitową arytemtykę) oraz stosowanie przybliżeń. Benchmark jest złożony z 3 testów opisanych poniżej. Linpack Fortran n = 100 benchmark. W przypadku n = 100 stosuje się program napisany w Fortranie, który znajduje się pod adresem http://www.netlib.org/benchmark/linpackd. Rozmiar macierzy 100 x 100 może wydawać się dzisiaj śmieszny, natomiast w momencie powstawania benchmarku wartość ta była podyktowana rozmiarem dostępnej pamięci (np. superkomputer Cray-1 posiadał 8 MB). Aby wynik był wiarygodny nie można stosować żadnych zmian w kodzie. Jedyną dozwoloną formą wpływania na wydajność jest optymalizacja kompilacji. Sam benchmark Linpack dla n=100 opiera się na dwóch procedurach: DGEFA i DGESL. Pierwsza procedura odpowiada za algorytm dekompozycji LU z częściowym obrotem macierzy, natomiast druga używa otrzymanych wyników do rozwiązania układów równań liniowych. Linpack n = 1000 benchmark. W przypadku n = 1000 możliwości zasady pomiaru wydajności są dużo mniej restrykcyjne. Można stosować dowolne algorytmy napisane w dowolnym języku. Wymogiem dla metody jest wyliczenie rozwiązania i zwrócenie go z zadaną dokładnością. Sterownik niezbędny do uruchomienia benchmarku, napisany w Fortranie znajduje się pod adresem http://www.netlib.org/benchmark/1000d. //praca jakis leszczy z aghu Omów MIMD, SIMD, SISD. SISD (single instrucion single data[dejtau]:d) -jeden wykonywalny program, przetwarza jeden strumien danych -maszyny sekwencyjne budowane w oparciu o architektur von neumana -ciag instrukcji, jest wykonywany sekwencyjne(program), który zawieraja się w jednym procesorze i jednym bloku pamieci operacyjnej -mozna odpalac na nich niektore elementy rownoleglosci (np., przetwarzanie potokowe) SIMD(single instrucion multiple data) SIMD SM SIMD DM SIMD SM-SIMD: Są to komputery wektorowe jeden procesor operuje na tablicy z danymi glownym skladnikiem jest procesor wektorowy, który rownolegle wykonuje ciagi tych samych operacji gdy komputer zaczyna wykonywac jakis rozkaz, kazdy procesor uczestniczacy pobiera dane, a po skonczeniu przetwarzanaia(rozkazu), wysyla wyniki do TEJ SAMEJ globalne pamieci Przykłady komputerow: Cray 1 (1976) CDC Cyber 205 (1981) Hitachi S3600 (1994) DM-SIMD: są to tablice procesorow takie cusik, składa się z jednego procesora glownego(mozgu),sterujacego, oraz szeregu prostych procesorkow, kazdy wyposazony w swoja lokalna pamiec procesory polaczone są bezposrednio tylko ze swoimi sunsiadami tak jak wyzej, kazdy procesor wykonuje te same instrukcje, na tych samych danych na
swojej pamieci lokalnej(wszystkie rozkazy wydawane przez proc sterujacy) wymiana danych nastepuje pomiedzy sosiadaujacymi procesorami(left, right,up, down[oraz back, front dla 3D]); rozwiazanie stosowane w latach 70 do początku lat 80 pomiedzy nimi jest jeszcze MISD,ale nie wymieniony w pytaniu MIMD Multiple Instruction, MultipleData Równolegle wykonywanych jest wiele programów, z których każdy przetwarza własne strumienie danych Najbardziej popularna grupa systemów rownoległych MIMD SM MIMD DM SIMD SM MIMD (Shared Memory MIMD) SMP, wieloprocesory DM SIMD (Distributed Memory SIMD) MPP, wielokomputery, klastry, gridy Opisz benchmark SPEC. Nazwa SPEC pochodzi od nazwy organizacji The Standard Performance Evaluation Corporation, która zajmuje się tworzenie, rozwojem, akceptacją i standardyzacją zestawów benchamarków, które mogą być wykorzystywane w wysoko wydajnych komputerach i serwerach najnowszej generacji. Benchmarki są pisane w językach niezależnych od stosowanej platformy (naczęściej C i Fortran). Organizacja SPEC powstała w 1988 roku. Składa się z najważniejszych producentów sprzętu i oprogramowania na rynku. Benchmark SPEC składa się z części mierzących wydajność w następujących kategoriach: 1. CPU 2. Grafika/Aplikacje graficzne 3. MPI/OPM 4. Java Klient/Serwer 5. Serwery poczty 6. Sieciowe systemy plików 7. Zasilanie 8. SIP 9. Wirtualizacja 10. Serwery stron www Taksonomia Flynn'a. Taksonomia Flynna (angielskie Flynn's taxonomy), schemat klasyfikacji systemów komputerowych zaproponowany przez M. J. Flynna w 1972, stosowany do dzisiaj, choć już niewystarczający.
Stosownie do liczby strumieni instrukcji i danych taksonomia Flynna wyróżnia następujące klasy komputerów: SISD (Single Instruction Stream Single Data Stream) klasyczne i powszechnie stosowane komputery sekwencyjne (PC) SIMD (Single Instruction Stream Multiple Data Stream) te same operacje wykonywane są na różnych danych SM SIMD (Shared Memory pamięć wspólna) komputery wektorowe DM SIMD (Distributed Memory pamięć lokalna) tablice procesorów MISD (Multiple Instruction Stream Single Data Stream) maszyny wykonujące różne operacje na tych samych danych (nie spotykane) MIMD (Multiple Instruction Stream Multiple Data Stream) poszczególne procesory wykonują różne operacje na różnych danych, stanowiących część tego samego zadania obliczeniowego SM MIMD maszyny z pamięcią wspólną DM MIMD maszyny z pamięcią lokalną Reguła Amdahl'a. Nie ma czegoś takiego jak regula na googlu, to wklejam prawo: Prawo Amdahla to sformułowana przez Gene'a Amdahla zależność mówiąca, że jeśli część procesu zajmująca aktualnie czasu zostanie przyspieszona n-krotnie, to cały proces zostanie przyspieszony jedynie razy. Oznacza to, że nawet jeśli uda się bardzo mocno przyspieszyć jakąś część procesu, to ta część, której przyspieszyć się nie uda, stanie się dominującym składnikiem całkowitego czasu (to samo można powiedzieć o koszcie, pojemności dysku optycznego, transferze sieciowym itd.). Na przykład jeśli 10% czasu procesora zajmuje dostęp do pamięci, a 90% zajmują operacje arytmetyczne i operacje te przyspieszone zostaną 10-krotnie (przy niezmienionym czasie dostępu do pamięci), to po tej zmianie procesor będzie operował tylko szybciej. Jeśli przyspieszy się je nawet 100-krotnie, wzrost wydajności będzie wynosił razy tylko razy, pomimo że prawie wyeliminowany został czas przedtem dominującego składnika czasu operacji matematycznych. Nowym dominującym składnikiem stał się bowiem czas dostępu do pamięci.