Wykład jest przygotowany dla IV semestru kierunku Elektronika i Telekomunikacja. Studia I stopnia Dr inż. Małgorzata Langer Architektura komputerów Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie Innowacyjna dydaktyka bez ograniczeń zintegrowany rozwój Politechniki Łódzkiej zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnych Zadanie nr 30 Dostosowanie kierunku Elektronika i Telekomunikacja do potrzeb rynku pracy i gospodarki opartej na wiedzy 90-924 Łódź, ul. Żeromskiego 116, tel. 042 631 28 83 www.kapitalludzki.p.lodz.pl
Rozszerzone funkcje i algorytmy procesorów Algorytmy szybkiego liczenia Przetwarzanie równoległe Nakładki systemu Bufory instrukcji i wykorzystanie pamięci podręcznej Przerwania Pamięć dzielona 2
Przyśpieszenie dodawania i odejmowania Pseudo-równoległy sumator musi czekać na przetworzenie przeniesienia do najbardziej znaczącego bitu (tzw. Ripple). Rozwiązaniem jest algorytm CARRY LOOK-AHEAD (CLA) Dla każdych 2 bitów o tej samej wadze (a i ; b i ) można zdefiniować funkcje: - generuj G i = a. i b i (przeniesienie jest generowane tylko dla (a. i b i )=1 - P i = a i + b i (suma logiczna) Suma dla każdego bitu: S i =P i + C i-1 (C przeniesienie) Przeniesienie dla każdego bitu: C i = G i + P i C i-1 G i P są generowane symultanicznie; jeżeli są dostępne wszystkie sygnały wejściowe C i-1 w jednym kroku oblicza się wszystkie S i ; podobnie C i czyli dodawanie dowolnie długich liczb w 3 krokach 3
Mnożenie Mnożenie zasadniczo jest wielokrotnym dodawaniem bardzo wolne W systemach binarnych mnożenie przez potęgę 2 można zastąpić przesuwaniem w rejestrze Szybszy od wielokrotnego dodawania może być system porównywalny z pisemnym mnożeniem : 1 0 1 1 x 1 1 0 1 daje cząstkowe iloczyny: 1 0 1 1 0 0 0 0 1 0 1 1 1 0 1 1 1 0 0 0 1 1 1 1 ILOCZYN Każdy niezerowy iloczyn cząstkowy to przesunięcie w lewo 4
Dzielenie Jest to wielokrotne odejmowanie wolne Można je zastąpić przesuwaniem i dodawaniem Załóżmy, że dzielimy liczby całkowite: X (dzielna) przez Y (dzielnik), uzyskując n-bitowy iloraz (Q) i resztę R; reszta spełnia warunek 0 < R < Y Przykładowy algorytm: Trial & error - z lewej strony dzielnej dopisujemy n-1 zer i odejmujemy (podpisując od lewej strony) dzielnik; jeżeli wynik jest ujemny dodajemy go z powrotem i najbardziej znaczący bit ilorazu = 0, jeżeli dodatni =1 i nie dodajemy; przesuwamy dzielnik w prawo, aż najmniej znaczące bity dzielnika i dzielnej będą w tej samej kolumnie Inny algorytm: Nonrestoring division 5
Algorytmy typu pipelining (przesyłanie potokowe; kanały pośredniczące) Przykład: dodawanie liczb zmiennoprzecinkowych (0.5 x 10-3 ) + (0.75 x 10-2 ) = krok pierwszy: wyrównanie wykładników: 0.05 x 10-2 + 0.75 x 10-2 krok drugi: dodanie mantysy: = 0.80 x 10-2 jeżeli mantysa byłaby większa niż 1, trzeba byłoby dodać krok trzeci normalizacja mantysy PIPELINE każdy z tych trzech kroków otrzymuje swoje oddzielne sygnały sterujące i posiada rejestry do przechowywania danych pomiędzy krokami; kiedy operandy wędrują do kroku następnego w kroku poprzednim mogą już być przetwarzane następne liczby! Przy N krokach przyspieszenie wynosi 3N/(3+N-1) 6
VLIW very long instruction word W architekturach VLIW bardzo długie słowo może zawierać kilka (4 do 8) instrukcji. Po pobraniu słowa, instrukcje te mogą być rozdzielone pomiędzy różne obwody, do przetworzenia równoległego (procesory superskalarne, takie jak Pentium) Przykład: dodawanie iloczynów (cząstkowe składniki iloczyny mogą być obliczane równolegle) Architektury takie wymagają bardzo złożonych kompilatorów; jeżeli zmieni się konfiguracja sprzętu NALEŻY DOKONAĆ PONOWNEJ KOMPILACJI 7
Koprocesor Dodatkowy procesor, mający zaimplementowane sprzętowo funkcje algebraiczne i niektóre logiczne, co znacznie przyspiesza ich wykonywanie Procesory peryferyjne Przejmują większość czynności ci związanych zanych z I/O 8
Systemy wieloprocesorowe Struktura Cray X-MP/4 9
Przyspieszenie cyklu instrukcji Cykl czasowy procesora (czas głównego cyklu major cycle time) zależy od czasu transferu rejestrów w strukturze magistrali. Jeżeli jest kilka magistrali, można jednocześnie obsługiwać kilka rejestrów, co implikuje SYMULTANICZNE GENEROWANIE SYGNAŁÓW STERUJĄCYCH W synchronicznych HCU (Hardwired Control Unit) cykl procesora jest zdefiniowany przez najwolniejszy transfer rejestru. Nawet najszybszy transfer zajmie więc tyle samo czasu pełen cykl W asynchronicznych zakończenie jednego transferu uruchamia następny, dlatego asynchroniczny HCU może być szybszy niż synchroniczny (jednak jest dużo trudniejszy w zaprojektowaniu i wykorzystywaniu, dlatego w praktyce używa się synchronicznych) MCU (Microprogrammed CU) jest jeszcze wolniejszy, bo czas wykonania mikroinstrukcji to suma czasu cyklu procesora plus czas dostępu do CROM 10
Nakładanie się instrukcji Procesor może wykonywać fazę pobierania następnej instrukcji, gdy odbywa się faza wykonywania poprzedniej Skoro instrukcja wymaga działania trzech faz: pobrać zdekodować (lub obliczyć adres) wykonać; jednostka sterująca musi posiadać trzy niezależne moduły po jednym dla każdej fazy wtedy można nakładać na siebie przetwarzanie instrukcji; czasem występuje więcej faz, np. prefetch pobieranie do pamięci cache Jest to struktura w algorytmie pipeline WYKONAJ (execute) I 1 I 2 I 3 I 4 E 1 E 2 E 3 E 4... Zakończone cykle instrukcji DEKODUJ D 1 D 2 D 3 D 4 D 5 POBIERZ (fetch) F 1 F 2 F 3 F 4 F 5 F 6... czas t 1 t 2 t 3 t 4 t 5 t 6 11
Nakładanie się instrukcji Optymalnie od trzeciego cyklu czasowego (t 3 ) kanał (pipeline) jest pełny i na każdy przedział czasowy zostaje zakończona jedna instrukcja W praktyce nie zawsze można dokonywać każdej instrukcji w jednakowym czasie i potrzebne są rejestry tymczasowe Jeżeli eli instrukcje są wykonywane w innej kolejności niż pojawiają się w programie (instrukcje rozgałęzione, instrukcje skoku), należy albo unieważnić instrukcje, które po takiej instrukcji już weszły w fazę pobierania lub dekodowania (często stosowane przy instrukcji warunkowej, bo przecież warunek do skoku może nie zostać spełniony i strumień popłynie dalej ), albo nie pobierać instrukcji po pojawieniu się instrukcji wyboru, dopóki nie będzie znany adres następnej instrukcji 12
... Problemy pojawiające się przy równoległym wykonywaniu podczas instrukcji rozgałęzionych nazywane są control hazards Dla równoległego wykonywania instrukcji (architektury superskalarne) potrzebne są algorytmy optymalizacji sterowania Opisane mechanizmy nakładania się faz stosowane są również w MCU, często współpracującymi cymi ze strukturami RISC Stosowane są pipeline z 6 fazami wykonywania instrukcji: FETCH (FI) DECODE (DI) - CALCULATE ADDRESS (CA) FETCH OPERANDS (FO) EXECUTE (EX) STORE RESULTS (ST) Sterownik kanału musi oszacować wymagania np. na ilość rejestrów, zanim instrukcja wejdzie do struktury pipeline, aby uniknąć kolizji (structural hazards) 13
... Data interlocks jeżeli dane dzielone są pomiędzy fazy w pipeline; tzn nie można dokonać obliczenia jeżeli jeden z etapów pracuje na danym zasobie a drugi musi czekać na zakończenie tej operacji. Przykład: Sekwencja instrukcji wykonywana jest w schemacie pipeline: 14
Hazard danych MPY pobiera operand R2 w cyklu 6, gdy instrukcja LOAD jest dopiero wykonywana, pobierze więc błędne dane! Rozwiązanie: wewnętrzne przekierowanie (internal forwarding) danych (mechanizm odczytu kieruje R2 do ALU RÓWNOCZEŚNIE z zapisem do R2, Hazard danych występuje w sąsiadujących siaduj instrukcjach read/write; write/read; albo write/write, które przy równoległym wykonywaniu mogą zmienić kolejność i współdzielony zasób jest błędny dla instrukcji, która miała być wykonana jako pierwsza a została wyprzedzona przez instrukcję następną, lub instrukcja odczytu, która miała nastąpić po zapisie, pobiera zawartość jeszcze nie zmienionego zapisem zasobu. 15
Gałęzie warunkowe Przewidywanie gałęzi (Branch Prediction) - podczas kompilacji zostają przewidziane dwie tymczasowe ścieżki - sekwencje instrukcji jedna dla warunku spełnionego i druga dla niespełnionego aż do znacznika końca pętli. Po dojściu do znacznika wyniki tymczasowe stają się stałe lub są odrzucane (algorytm stosowany w procesorach Intel) Opóźnione wejście w gałęzie (Delayed Branching) (stosowane w MCU, zwłaszcza w RISC) instrukcja docelowa (po wyborze) jest tylko pobrana, a wykonywane są wszystkie następne i dopiero po nich docelowa wchodzi w fazę wykonywania. Kompilator zmienia kolejność instrukcji w przypadku instrukcji rozgałęzionych tak, aby znalazła się jeszcze wcześniej w pipeline niż w programie. Zmniejsza to później czas koniecznego opóźnienia, gdy trzeba czekać na wynik warunku 16
Gałęzie warunkowe... Bufor przewidywania gałęzi mały bufor pamięci, indeksowany adresem instrukcji rozgałęzienia. Zawiera 1 bit na instrukcję wskazujący, czy gałąź została wybrana, czy nie. Kanał pobiera kolejną instrukcję w oparciu o ten bit przewidywania. Idealnie byłoby, gdyby bufor był wystarczająco duży, aby 1 bit przypadał na każdą warunkową instrukcję w programie. W praktyce jest to nierealne i ponieważ do jednego bitu jest przypisanych więcej instrukcji warunkowych, może to stać się powodem błędów. Inna nazwa bufora Tabela historii dekodowania Technika historii gałęzi w tabeli historii przechowuje się najbardziej prawdopodobny (domyślny) adres przeznaczenia dla każdej gałęzi (na przykład wybrany przy ostatnim wykonywaniu programu) i po pobraniu instrukcji wyboru, dalsze wykonywanie przebiega tą gałęzią, z dużą szansą na sukces. 17
Przerwania Ponieważ wiele instrukcji jednocześnie jest wykonywanych w sposób nakładkowy, sprzęt i oprogramowanie do obsługi przerwań jest dość skomplikowane. Precyzyjny system przerwań jeżeli instrukcja nr I generuje przerwanie - wykonywane są wszystkie instrukcje, które zostały już pobrane i są w kanałach (czyli I-1 ; I-2 itd...) a wstrzymane te, które są następne (I+1 ; I+2,..). Ale przy systemie opóźnionego wejścia w gałęzie, kolejność instrukcji może być przemieszana. Zrestartowane muszą zostać również gałęzie wstrzymane. To wymusza utrzymywanie wielu liczników programów. Dodatkowo kilka instrukcji może jednocześnie generować przerwania, których kolejność wykonywania może być różna (rozwiązanie stosuje się wektor stanu dla każdej instrukcji w kanale) 18
Odroczenie instrukcji (Instruction Deferral) Technika, która zapobiega konfliktowi danych w kanale. Przetwarza się tak wiele instrukcji, jak jest możliwe na bieżąco i odracza się ich zakończenie aż do rozwiązania konfliktu danych. Całościowy przepływ instrukcji jest większy niż całkowite opóźnianie wszystkich możliwych etapów w kanale 19
Tryby pracy procesora Kernel mode (tryb jądra systemu) tryb najwyższego uprzywilejowania w systemie; OS (w najbardziej wewnętrznym jądrze ) ma dostęp i może zmienić dowolny rejestr. OS przełącza się w tryb jądra przy obsłudze błędu lub wyjątku Supervisor mode (tryb nadzoru) mniej przywilejów, wykorzystywany do mniej krytycznych części OS. Przeznaczony dla systemów warstwowych prawdziwe jądro OS pracuje w trybie jądra, a pozostałe części (warstwy) OS - w trybie nadzoru; OS ma również dostęp do pamięci użytkowników, ale nie do adresów zastrzeżonych dla trybu Kernel User mode (tryb użytkownika) najmniej uprzywilejowany zapobiega wzajemnemu przeszkadzaniu sobie przez użytkowników, nie ma dostępu do zastrzeżonych adresów 20
Przetwarzanie równoległe Jeżeli aplikacja pozwala na opracowanie algorytmów przetwarzania ze stopniem równoległości A, język kodowania algorytmu na stopień L, kompilatory pozostają przy stopniu równoległości C a struktura sprzętu czyli konstrukcja maszyny pozwala na H, aby przetwarzanie było najbardziej wydajne, musi być spełniona relacja: H > C > L > A 21
Podział komputerów ze względu na ilość strumieni SISD (Single Instruction stream, Single Data stream) pojedynczy strumień i instrukcji i danych; maszyny jednostrumieniowe, zawsze z jednym procesorem SIMD (Single Instruction, Multiple Data) - pojedynczy strumień i instrukcji i wiele strumieni danych architektury, które posiadają wiele koprocesorów sterowanych przez jedną jednostkę sterującą (inna nazwa procesory wektorowe, procesory macierzowe) MISD (Multiple Instruction, Single Data) pojedynczy strumień danych jest pod jednoczesnym działaniem wielu strumieni instrukcji (m.in. wszystkie systemy pipeline) MIMD (Multiple Instruction, Multiple Data) wiele procesorów (systemy wieloprocesorowe), każdy wykonuje swój strumień instrukcji i przetwarza swój strumień danych, alokowanych do niego, albo jeden procesor ale z pełnymi równoległymi kanałami i równoległymi I/O 22
MISD - struktura 23
SIMD - struktura 24
Wiele strumieni danych zagadnienia sieci lokalnych Protokoły routingu statyczne i dynamiczne Routing to mechanizm, który ustanawia ścieżkę pomiędzy dwoma węzłami transmisji komunikatów Ścieżka może być ustanawiana na transmisję dedykowana (przełączalna fizyczne połączenie na całą transmisję), lub na pakiet W węźle pakiety mogą być wstawiane w bufor (z różną obsługą kolejek) przed następnym skokiem Topologie sieci (drzewo, pierścień, gwiazda, sieć połączeń z najbliższymi sąsiadami, sieć zupełna i niezupełna, ) topologie statyczne i dynamiczne Połączenia magistralą i matrycą 25
MIMD - struktura 26
MIMD... Po awarii jednego z procesorów (fizycznych lub logicznych), jego obciążenie przejmuje inny procesor większa niezawodność i odporność na awarie globalne Praca n procesorów nawet przy pełnym obciążeniu nie jest n razy szybsza niż jednego, gdyż dochodzi czas: - komunikacji pomiędzy procesorami - synchronizacji pracy (przy równoległym wykonywaniu niektórych instrukcji) - pusty tracony (niektóre procesory muszą poczekać na inne) - układania pracy procesora (scheduling) czyli alokacja zadań dla procesora Sekwencja zadań wykonywanych przez jeden procesor tworzy WĄTEK (thread) 27
Architektura dzielonej pamięci 28
Architektura przepływu danych Obliczenia są data-driven (gdy dane operandy są dostępne) lub control driven (instrukcje wywołują pobieranie danych) Data driven wymaga gotowych funkcjonalnych jednostek wykonujących określone działania Obok: obliczanie pierwiastków równania kwadratowego, jeżeli podane są a, b, c 29
Architektura maszyny sterowanej przepływem danych 30
KONIEC CZĘŚCI DZIEWIĄTEJ Dr inż. Małgorzata Langer Architektura komputerów Prezentacja multimedialna współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie Innowacyjna dydaktyka bez ograniczeń zintegrowany rozwój Politechniki Łódzkiej zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnych Zadanie nr 30 Dostosowanie kierunku Elektronika i Telekomunikacja do potrzeb rynku pracy i gospodarki opartej na wiedzy 90-924 Łódź, ul. Żeromskiego 116, tel. 042 631 28 83 www.kapitalludzki.p.lodz.pl