sprzęt komputerowy
Transkrypt
sprzęt komputerowy
Wojciech Zatorski, lab 7, gr. 38, rok 3. SPRZĘT KOMPUTEROWY Sprawozdanie nr 1 1. Symulacja potoku – przetwarzanie potokowe Przetwarzanie potokowe to inaczej praca potokowa lub pipelining - równoległe wykonywanie w procesorze poszczególnych faz cyklu rozkazowego. Jeden z układów procesora potokowego wykonuje rozkaz, a drugi, niezależny układ w tym samym czasie pobiera następny rozkaz z pamięci, co podwaja wydajność procesora. Stopień równoległości konstrukcji w architekturze RISC wynosi od trzech do siedmiu niezależnych bloków funkcjonalnych wykonujących jednocześnie pobieranie rozkazu, jego zdekodowanie, obliczanie adresu argumentu, pobranie argumentu, wykonanie operacji i przechowywanie wyniku. Przetwarzanie potokowe stosowane są we wszystkich współczesnych procesorach. Dzięki niemu można szybko wykonywać kilka instrukcji, przy czym w danej chwili każda będzie w innej fazie wykonywania. Potokowa architektura procesora jest bardzo wydajna, gdy nie występują przerwania, instrukcje warunkowe oraz przede wszystkim skoki, bowiem jest ona bardzo wrażliwa na nie. Jeżeli taka jednostka trafi na rozkaz skoku, wówczas pierwsze stopnie potoku muszą zostać opróżnione, co powoduje utratę co najmniej kilku cykli zegarowych, co jest równoważne wykonaniu kilku instrukcji. Jednakże zostały skonstruowane specjalne jednostki wykrywające skoki, które minimalizują skutki wypróżniania potoków. Układy te przewidują adres następnej instrukcji już w pierwszej fazie jej wykonywania (na podstawie adresu instrukcji). Jeśli układ przewidywania skoków dobrze je odgadnie, to zaoszczędzi czas równoważny wykonaniu kilku instrukcji. bez skoków 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 A BA CBA DCBA EDCBA FEDCB GFEDC HGFED IHGFE JIHGF KJIHG LKJIH LKJI LKJ LK L Wykonanych 12 rozkazów 2 skoki na początku 2 skoki pod koniec A BA SBA E FE GFE HGFE IHGFE JIHGF KJIHG LKJIH MLKJI NMLKJ SNMLK O A BA SBA CSBA DCSBA EDCSB H IH JIH KJIH LKJIH MLKJI NMLKJ SNMLK OSMLK POSML Wykonanych 6 rozkazów Wykonanych 7 rozkazów Wnioski: Przetwarzanie potokowe daje duży przyrost wydajności procesora, jeśli nie występują skoki, w przypadku występowania skoków wydajność spada bardzo drastycznie. Im więcej skoków tym gorsze rezultaty. Podwyższenie sprawności przetwarzania potokowego daje zastosowanie mechanizmów wykrywających skoki, im bardziej dokładny mechanizm wykrywania tym znacznie wzrasta wydajność procesora (do początku, gdy nie było skoków). 1 Przy przetwarzaniu potokowym na każdy cykl powinien przypadać jeden wykonany rozkaz ,a w przypadku przetwarzania super skalarnego, kilka. Średnia liczba wykonanych rozkazów w cyklu nazywa się wydajnością (performance). Nominalna wartość zależy od struktury potoku, ilości podetapów. Rzeczywista wartość ze względu na konflikty danych, sterowania i dostępu jest zawsze mniejsza od nominalnej. Dla dowolnego potoku można ją określić jako odwrotność średniej liczby cykli przypadających na wykonanie rozkazu. P=p((1-b-r)+r(1+d)+bn)-1 [rozkaz/cykl] p - nominalna wydajność potoku n - głębokość potoku b - częstotliwość nieprzewidzianych skoków opóźniających potok o n cykli d - liczba opóźnionych cykli z powodu konfliktu danych r - częstotliwość konfliktów danych 2. Klasyfikacja procesorów i architektur. Architektura CISC (Complex Instruction Set Computing) to architektura konwencjonalnych procesorów. Charakteryzuje się ona znaczną liczbą elementarnych rozkazów i trybów adresowania przy niewielkiej liczbie rejestrów uniwersalnych. Jest ona bardzo wolna w porównaniu do RISC-ów. Na tej architekturze były oparte pierwsze procesory z rodziny x86. Dziś w tej rodzinie nie spotka się procesora CISC, ale jest ona zastąpiona przez wewnętrzy RISC. Jednak pozostała zgodnie z zasadą "kompatybilności w tył" mała liczba rejestrów, co jest główną bolączką projektantów procesorów x86. Architektura RISC (Reduced Instruction Set Computing/Computer) wywodzi się z Berkeley (1985). Koncepcja tego typu architektury jest oparta na ograniczeniu liczby krótkich (maksymalnie dwusłowowych) rozkazów mających niewiele formatów i trybów adresowania. Procesor RISC posiada wiele rejestrów uniwersalnych (nawet powyżej 100). Działanie procesora przyśpieszają dodatkowe ulepszenia, np. przetwarzanie potokowe, czy pamięć podręczna. Instrukcje wykonują proste operacje, dzięki czemu mogą to robić szybko - każda jednostka wykonawcza jest w stanie wykonać dokładnie jedną instrukcję w jednym cyklu zegara. Lista instrukcji zawiera tylko kilka rozkazów umożliwiających dostęp do pamięci: załadowanie (load), zapis (store) oraz instrukcje semaforowe. Wszystkie pozostałe rozkazy operują wyłącznie na rejestrach to również upraszcza budowę układu. Instrukcje kodowane są w prosty sposób - każdy rozkaz ma taką samą długość (np. 32 bity). Mimo swych zalet ta architektura ma kilka wad, a najważniejszą jest znaczna komplikacja procesora przy zastosowaniu np. nie kolejnego wybierania instrukcji i innych elementów superskalarnych. Przyczyną jest niejawna równoległość przetwarzania danych. Złożone jednostki analizują relacje między poszczególnymi operacjami, co znacznie powiększa powierzchnię procesora, bo jeżeli np. dwie instrukcje korzystają z tego samego rejestru, to nie mogą zostać wykonane w tym samym czasie. Podsumowując architektura RISC jest wydajna, ale pociąga za sobą pewne komplikacje budowy. Architektura EPIC - Explicitly Paralell Instruction Coumputing - to zupełnie nowa architektura opracowana przez Intela wspólnie z Hewlett-Packard. Jest ona dość młoda. Architektura ta ma zalety procesorów VLIW, ale w odróżnieniu od niej program napisany na starszy procesor będzie działał poprawnie także na nowym procesorze o większej ilości jednostek 2 wykonawczych. Kolejne wersje procesorów EPIC będą mogły być dowolnie rozbudowywane np. o następne równolegle pracujące jednostki wykonawcze, a programy przeznaczone dla starszych układów nadal będą działały. Istnieją jednak pewne obawy, że starszy kod nie będzie wykonywany optymalnie na nowszych strukturalnie jednostkach. 3. Producent Nazwa Architektura Motorola Motorola AMD Intel Intel Intel VIA MC 68000-68060 PowerPC K6, K7 80x86 Pentium, Celeron Pentium 4 Cyrix III CISC RISC RISC/CISC CISC RISC/CISC RISC/EPIC RISC/CISC Klasyfikacja komputerów Architektura Von Neumana: Podstawowa zasada funkcjonowania komputera, którym posługujemy się w szkole lub w domu nie zmieniła się zasadniczo od ponad sześćdziesięciu lat. W 1944 roku wybitny amerykański matematyk John von Neuman sformułował założenia funkcjonowania współczesnego komputera. Brzmią one następująco: 1. Komputer powinien być wyposażony w magazyn do przechowywania danych zwany pamięcią. W pamięci zapisywane są dane zakodowane w postaci ciągu zer i jedynek. 2. Wszystkie działania arytmetyczne, logiczne i inne są wykonywane przez specjalny element zwany arytmometrem. 3. Komputer musi mieć możliwość komunikowania się ze światem zewnętrznym czyli pobierania danych i wyprowadzania wyników. 4. Komputer w czasie swej pracy realizuje ściśle algorytm zapisany przez człowieka. Algorytm ten zapisany jest przez programistę w postaci programu komputerowego zawierającego ciąg elementarnych instrukcji postępowania. Przykłady: UNIVAC, IBM 650, IAS. Architektura Harwardzka: Architektura harwardzka opiera się na użyciu dwóch oddzielnych szyn dla danych i rozkazów, dzięki czemu w trakcie pobierania argumentów wykonywanej właśnie instrukcji można równocześnie zacząć pobieranie następnego słowa rozkazowego (pre-fetch). Skraca to cykl rozkazowy i zwiększa szybkość pracy. Obszary adresowe pamięci danych i programu(wewnętrznych i czasami zewnętrznych) są rozdzielone. Pociąga to za sobą niejednoznaczność adresów, ponieważ pod tym samym adresem widzi pamięć RAM i ROM. W tym przypadku stosuje się inne rozkazy dla pamięci programu i inne dla pamięci danych. Ponadto magistrala danych i rozkazów mają różną szerokość (długość słowa), np. PIC16F87x – magistrala danych 8-bitowa, magistrala rozkazów 14-bitowa. Mapa pamięci dla architektury harwardzkiej. Wadą tego rozwiązania jest utrudniony przepływ danych z pamięci programu do obszaru pamięci operacyjnej, co uniemożliwia stosowanie jednej z podstawowych technik programistycznych (look-up tables). Innymi słowy nie jest możliwe indeksowane przesłanie danych z pamięci ROM do RAM, co oznacza np. brak możliwości budowy tabel współczynników stałych w pamięci ROM. Jedynym sposobem wbudowania stałych w program jest ukrycie ich w kodach rozkazów. Przykłady: ENIAC, ALPHA. 3