Architektura Systemów Komputerowych



Podobne dokumenty
4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.02 Rok akad. 2011/ / 35

Wprowadzenie do architektury komputerów. Budowa jednostki wykonawczej procesora Potokowa jednostka wykonawcza Przetwarzanie wielopotokowe

Przetwarzanie potokowe pipelining

Architektura Systemów Komputerowych

Architektura Systemów Komputerowych

Architektura potokowa RISC

Architektura komputerów, Informatyka, sem.iii. Rozwiązywanie konfliktów danych i sterowania w architekturze potokowej

Programowanie Niskopoziomowe

Architektura komputerów

Logiczny model komputera i działanie procesora. Część 1.

Organizacja typowego mikroprocesora

Architektura mikroprocesorów z rdzeniem ColdFire

architektura komputerów w. 4 Realizacja sterowania

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK SP.01 Rok akad. 2011/ / 27

Budowa i zasada działania komputera. dr Artur Bartoszewski

Architektura systemów komputerowych. Przetwarzanie potokowe I

Programowalne układy logiczne

Adam Korzeniewski p Katedra Systemów Multimedialnych

Wydajność obliczeń a architektura procesorów. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Projektowanie. Projektowanie mikroprocesorów

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

Witold Komorowski: RISC. Witold Komorowski, dr inż.

Architektura typu Single-Cycle

Wstęp do informatyki. Architektura co to jest? Architektura Model komputera. Od układów logicznych do CPU. Automat skończony. Maszyny Turinga (1936)

Architektura komputerów

LEKCJA TEMAT: Zasada działania komputera.

Technika mikroprocesorowa. Linia rozwojowa procesorów firmy Intel w latach

dr inż. Jarosław Forenc

Architektura komputerów

Metody optymalizacji soft-procesorów NIOS

Budowa Mikrokomputera

Zrównoleglenie i przetwarzanie potokowe

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Pytania. W obecnie wykorzystywanych komputerach osobistych jest stosowana architektura: jednoszynowa. pamięciowo-centryczna.

Architektura mikroprocesorów TEO 2009/2010

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH. Klasyczny cykl pracy procesora sekwencyjnego. współczesne architektury. c Dr inż.

Architektura komputera

Architektura Systemów Komputerowych

Mikroprocesor Operacje wejścia / wyjścia

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

Układ wykonawczy, instrukcje i adresowanie. Dariusz Chaberski

Bramki logiczne Podstawowe składniki wszystkich układów logicznych

Zarządzanie pamięcią operacyjną

Architektura systemów komputerowych. dr Artur Bartoszewski

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

ARCHITEKTURA PROCESORA,

Architektura systemów komputerowych

Materiały do wykładu. 4. Mikroprocesor. Marcin Peczarski. Instytut Informatyki Uniwersytet Warszawski

Lista Rozkazów: Język komputera

organizacja procesora 8086

Architektura komputerów

Architektura systemów komputerowych. dr Artur Bartoszewski

Architektura komputerów

Przykładowe pytania DSP 1

Stronicowanie w systemie pamięci wirtualnej

Budowa systemów komputerowych

Architektura Systemów Komputerowych

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Wydajność obliczeń a architektura procesorów

LEKCJA TEMAT: Współczesne procesory.

Rejestry procesora. Nazwa ilość bitów. AX 16 (accumulator) rejestr akumulatora. BX 16 (base) rejestr bazowy. CX 16 (count) rejestr licznika

Zegar - układ wysyłający regularne impulsy o stałej szerokości (J) i częstotliwości (f)

PAMIĘCI. Część 1. Przygotował: Ryszard Kijanka

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych. Instytut Telekomunikacji Zakład Podstaw Telekomunikacji

Magistrala systemowa (System Bus)

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Magistrala. Magistrala (ang. Bus) służy do przekazywania danych, adresów czy instrukcji sterujących w różne miejsca systemu komputerowego.

Lista, Stos, Kolejka, Tablica Asocjacyjna

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

Programowanie współbieżne Wykład 2. Iwona Kochańska

Architektura komputerów. Układy wejścia-wyjścia komputera

Architektura Systemów Komputerowych. Architektura potokowa Klasyfikacja architektur równoległych

Budowa komputera Komputer computer computare

Architektura Systemów Komputerowych. Jednostka ALU Przestrzeń adresowa Tryby adresowania

Architektura komputera. Dane i rozkazy przechowywane są w tej samej pamięci umożliwiającej zapis i odczyt

MIKROKONTROLERY I MIKROPROCESORY

UTK Można stwierdzić, że wszystkie działania i operacje zachodzące w systemie są sterowane bądź inicjowane przez mikroprocesor.

Programowanie Niskopoziomowe

dr inż. Rafał Klaus Zajęcia finansowane z projektu "Rozwój i doskonalenie kształcenia i ich zastosowań w przemyśle" POKL

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Architektura i administracja systemów operacyjnych

Podstawy techniki cyfrowej Układy wejścia-wyjścia. mgr inż. Bogdan Pietrzak ZSR CKP Świdwin

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Procesory firmy ARM i MIPS

Architektura komputerów

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy Techniki Mikroprocesorowej

Struktura i działanie jednostki centralnej

Wprowadzenie do architektury komputerów. Model programowy procesora i jego struktura Procesory CISC i RISC

Architektura komputerów. Komputer Procesor Mikroprocesor koncepcja Johna von Neumanna

Transkrypt:

Architektura Systemów Komputerowych Wykład 7: Potokowe jednostki wykonawcze Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie

Plan Budowa potoku Problemy synchronizacji i opóźnienia w potokach Superpotok Opóźnienia w superpotoku Potokowe realizacje procesorów CISC

Potokowa jednostka wykonawcza MIPS R3000 Jeden z pierwszych mikroprocesorów RISC, ok 1985 5 stopni potoku: IF, RD, ALU, MEM, WB Stopnie IF i WB pracują przez pół cyklu wykonanie instrukcji zajmuje czas czterech cykli zegara, złożony z połówkowego cyklu IF, pełnych cykli RD, ALU i MEM oraz połówki cyklu WB ma to wpływ na wielkość opóźnień (więcej w dalszej części wykładu) Architektura Harvard-Princeton rozdzielone górne warstwy hierarchii pamięci, wspólna pamięć operacyjna

Potok MIPS R3000 IF IM RD R ALU MEM DM WB

Budowa i działanie potoku MIPS R3000 Na końcu każdego stopnia (oprócz WB) jest umieszczony rejestr typu D Aktualizacja PC i rejestrów uniwersalnych następuje w połowie cyklu zegara pobranie instrukcji zaczyna się w połowie cyklu zapis wyniku do rejestru następuje w połowie cyklu odczyt danej z rejestru następuje w drugiej połowie fazy RD Wszystkie sygnały potrzebne do dokończenia wykonania instrukcji są zapamiętywane w rejestrach i przekazywane do kolejnych stopni potoku, w tym. m.in.: sygnały sterujące numer rejestru docelowego

Wykonanie sekwencji instrukcji w potoku Instrukcja Cykl T1 T2 T3 T4 T5 T6 T7 T8 T9 I1 IF RD ALU MEM WB I2 IF RD ALU MEM WB I3 IF RD ALU MEM WB I4 IF RD ALU MEM WB I5 IF RD ALU MEM WB I6 IF RD ALU MEM I7 IF RD ALU

Synchronizacja potoku Rozpatrzmy wykonanie sekwencji instrukcji: addu $4, $3, $2 addu $6, $5, $4 druga instrukcja korzysta z argumentu źródłowego w rejestrze $4 rejestr ten jest rejestrem docelowym pierwszej instrukcji instrukcja zapisuje wynik w stopniu WB odczyt argumentów następuje w stopniu RD kiedy druga instrukcja znajduje się w stopniu RD, pierwsza przebywa w stopniu ALU zapis wyniku przez pierwszą instrukcję nastąpi w dwa cykle później Problem: jaką wartość $4 pobierze druga instrukcja? byłaby to wartość niezaktualizowana przez pierwszą instrukcję nie ma pewności, czy wykonanie programu użytkowego nie zostanie przerwane pomiędzy pierwszą i drugą instrukcją, a następnie wznowione (w takiej sytuacji pierwsza instrukcja zakończy się i zapisze wynik)

Hazard R-A-W Nie da się jednoznacznie określić, jaką wartość rejestru pobierze druga instrukcja jeżeli pomiędzy pierwszą i drugą instrukcją nastąpi np. przełączenie procesów, druga instrukcja pobierze wartość zaktualizowaną przez pierwszą Zachowanie programu jest niedeterministyczne sytuację taką nazywamy HAZARDEM Ponieważ hazard wynika z umieszczenia w programie instrukcji odczytującej rejestr po instrukcji zapisującej rejestr, ten typ hazardu jest określany jako odczyt po zapisie (read-after-write hazard albo RAW hazard) Konieczne jest wprowadzenie determinizmu w zachowaniu procesora, czyli usunięcie hazardu

Usuwanie hazardu R-A-W (1) Metoda administracyjna skutek wykonania instrukcji korzystającej z danego rejestru jako źródłowego wcześniej niż w trzy instrukcje po instrukcji zapisującej rejestr zostaje opisany w dokumentacji procesora jako nieokreślony programiście nie wolno użyć takiej sekwencji instrukcji wada metody bardzo często trzeba w programie wstawiać instrukcje puste

Usuwanie hazardu R-A-W (2) Wstrzymywanie potoku po wykryciu hazardu układ kombinacyjny porównuje numery rejestrów źródłowych instrukcji w stopniu RD z numerami rejestrów docelowych instrukcji w stopniu ALU i MEM w przypadku wykrycia zgodności, instrukcja zostaje zatrzymana w stopniu RD stopnie IF i RD stoją pozostałe stopnie pracują normalnie, ze stopnia RD do ALU jest wstrzykiwana instrukcja pusta program wykonuje się poprawnie, bez konieczności dodawania instrukcji pustych zależności między instrukcjami powodują opóźnienia w programach często występują sekwencje instrukcji zależnych

Działanie potoku MIPS R3000 - przypomnienie Zapis rejestru następuje w połowie cyklu, który instrukcja spędza w stopniu WB Odczyt rejestru źródłowego rozpoczyna się w połowie cyklu, który instrukcja spędza w stopniu RD Dana zapisana przez instrukcję znajdującą się w stopniu WB może być odczytana w tym samym cyklu przez instrukcję znajdującą się w stopniu RD Wystarczą dwa cykle odstępu pomiędzy parą instrukcji zależnych

Usuwanie hazardu R-A-W (3) obejścia Wynik operacji arytmetycznej jest dostępny już w stopniu ALU wartość wyniku instrukcji jest gotowa, gdy następna instrukcja przebywa w stopniu RD Obejścia to szyny poprowadzone ze stopni ALU i MEM do stopnia RD po obejściu jest przesyłany numer rejestru docelowego i wynik instrukcji Logika odczytu w stopniu RD: numer rejestru źródłowego jest porównywany z numerami rejestrów na obejściach Priorytety: obejście z ALU, obejście z MEM, fizyczny rejestr procesora Obejście ze stopnia WB jest zbędne Obejścia eliminują hazard RAW bez wprowadzania opóźnień! w R3000 zastosowano obejścia wg. opisanego schematu

Obejścia - działanie IF IM addu $6, $5, $4 $4 R addu $4, $3, $2 addu $5, $7, $8 $5 DM WB

Opóźnienie wynikające z dostępu do pamięci Zakładamy, że procesor został wyposażony w obejścia eliminujące hazard RAW Rozważmy sekwencję instrukcji: lw $4, add $6, $5, $4 tym razem hazard RAW wynika z odwołania do pamięci dana odczytana z pamięci będzie dostępna w stopniu MEM obejścia redukują opóźnienie, ale go nie eliminują! dana ze stopnia MEM może być przekazana obejściem kiedy instrukcja używająca danej jest w stopniu RD, instrukcja ładowania jest dopiero w stopniu ALU Problem ten jest nazywany opóźnieniem pomiędzy załadowaniem danej z pamięci i jej użyciem (load-use penalty)

Opóźnienie wynikające z dostępu do pamięci Hazard wynikający z opóźnienia nie może zostać wyeliminowany bez opóźnień W MIPS R3000 instrukcja korzystająca z danej pobranej z pamięci nie może być umieszczona bezpośrednio za instrukcją ładowania zastosowano metodę administracyjną w późniejszych wersjach MIPS, w tym w architekturze MIPS32 hazard jest usuwany sprzętowo, poprzez wstrzymanie początku potoku

Instrukcje skoków w potoku Określenie warunku skoku i obliczenie adresu docelowego następuje w stopniu ALU, w połowie cyklu W tym czasie w stopniu RD przebywa już instrukcja zapisana w programie za instrukcją skoku Instrukcja skoku może mieć wpływ dopiero na pobranie kolejnej instrukcji instrukcja pobrana po instrukcji skoku może zostać anulowana, ale zajmuje czas procesora Opóźnienie skoków w architekturze potokowej wynika z odległości pomiędzy stopniem, w którym następuje skok (ALU) i stopniem pobrania instrukcji

Redukcja opóźnienia skoków w potoku Technika redukcji opóźnienia używana w krótkich potokach polega na zredefiniowaniu instrukcji skoku Skok opóźniony (delayed branch) wykonaj instrukcję umieszczoną za skokiem i skocz Za skokiem można umieścić dowolną instrukcję, która ma być wykonana przed skokiem i od której nie zależy wykonanie skoku Miejsce za instrukcję skoku, zawierające instrukcje wykonywane niezależnie od realizacji skoku, nazywa się slotem opóźnienia (delay slot) Przy slocie opóźnienia o rozmiarze jednej instrukcji prawdopodobieństwo wypełnienia slotu przez kompilator użyteczną instrukcją jest rzędu 90% w razie braku takiej instrukcji w slocie umieszcza się instrukcję pustą

Wydajność potoku Teoretyczna wydajność potoku jeden cykl na instrukcję Czynniki powodujące opóźnienia: wewnątrz potoku: hazardy usuwane inaczej niż przez obejścia ładowanie danych z pamięci skoki na zewnątrz potoku dostępy do hierarchii pamięci, których realizacja wymaga więcej niż 1 cyklu Praktyczna wydajność osiągana przez procesory potokowe ok. 1.2 cyklu na instrukcję

Przyspieszanie potoku Przy wzroście częstotliwości pracy odwołania do pamięci nie mogą być wykonane w jednym cyklu każde odwołanie powoduje wstrzymanie potoku, przez co potok działa wolniej, niż przy mniejszej częstotliwości Złożoność niektórych stopni potoku uniemożliwia podniesienie częstotliwości pracy Rozwiązaniem jest przebudowanie potoku poprzez zwiększenie liczby stopni i zmianę szczegółów współpracy z pamięcią Potok wydłużony, o długości powyżej 6 stopni jest nazywany superpotokiem

Budowa superpotoku MIPS R4000 IF IS IM R RD EX DF DS DM DTC WB

Superpotok MIPS R4000 R4000 rok 1989 pierwszy mikroprocesor 64-bitowy Zgodny programowo na poziomie binarnym z R3000 Superpotok 8-stopniowy IF Instruction First początek pobrania instrukcji IS Instruction Second zakończenie pobrania instrukcji RD Read odczyt argumentów EX Execute odpowiednik ALU w R3000 DF Data First początek odwołania do danych DS Data Second zakończenie transakcji z pamięcią danych DTC Data Tag Check finalizacja odwołania WB Write Back zapis wyniku do rejestru

Współpraca z pamięcią Odwołania do pamięci rozbite na dwie fazy Pamięć ma budowę potokową dostęp następuje w dwóch cyklach zegara taki podział cyklu dostępu jest naturalny z punktu widzenia budowy wewnętrznej pamięci (dodatkowy rejestr na wyjściu matrycy pamięci) równocześnie wykonywane są dwa dostępy do pamięci (druga połowa pierwszego i pierwsza drugiego)

Opóźnienia i synchronizacja superpotoku Topologia superpotoku jest taka sama jak potoku brak nowych problemów synchronizacyjnych Większa liczba stopni powoduje zwiększenie odległości, z których wynikają hazardy i opóźnienia opóźnienia mierzone w cyklach są większe, niż w przypadku krótkiego potoku potrzebna większa liczba obejść Opóźnienie pomiędzy załadowaniem danej i jej użyciem oraz opóźnienie skoków znacznie większe, niż w krótkim potoku

Opóźnienie danych w superpotokach Przy zastosowaniu obejść opóźnienie wynosi 3 cykle Nie jest ono szczególnie krytyczne procesory potokowe mają zwykle wiele rejestrów skalarne obiekty lokalne procedury są umieszczone w rejestrach Odwołania do pamięci: przeładowanie rejestrów w epilogu procedury zawartość rejestrów potrzebna po wykonaniu kilku instrukcji dostęp do struktur danych (np. tablic) dane często potrzebne natychmiast opóźnienie spowalnia wykonanie programu Wyższa częstotliwość pracy powoduje, że opóźnienia występujące na zewnątrz potoku (wyrażone w cyklach) są większe

Opóźnienie skoków w superpotokach Rozmiar slotu opóźnienia w superpotokach jest większy niż w krótkich potokach dla MIPS R4000 2 Prawdopodobieństwo wypełnienia całego slotu użytecznymi instrukcjami nie przekracza 20% Skok opóźniony o dwa cykle nie jest dobrym rozwiązaniem problemu opóźnienia skoków dodatkowo powstawałby problem zgodności wstecznej oprogramowania W superpotokach niepowstałych na bazie wcześniejszych implementacji potokowych nie stosuje się skoków opóźnionych Właściwą metodą redukcji opóźnienia w superpotokach jest przewidywanie skoków

Wydajność superpotoków Większe i częstsze opóźnienia powodują że wydajność wyrażona w cyklach na instrukcję jest gorsza, niż w przypadku krótkich potoków typowa wydajność wynosi ok. 1,5 cyklu na instrukcję Większa wartość CPI jest kompensowana wzrostem częstotliwości pracy przyrost wydajności wynikający z wydłużenia potoku przy zachowaniu parametrów technologicznych wynosi ok. 50%

Potokowa realizacja procesora CISC Architektura potokowa daje się łatwo zastosować, gdy: sekwencja czynności jest stała dla wszystkich instrukcji niektóre fazy niektórych instrukcji mogą być puste instrukcje mają stałą długość i ich dekodowanie jest proste instrukcja realizuje co najwyżej jedno odwołanie do pamięci danych instrukcja ma jeden argument docelowy Postulaty te nie są spełnione w modelach programowych CISC Możliwości realizacji potokowej CISC budowa potoku zdolnego do wykonywania instrukcji CISC podział procesora na dwie części: jednostka pobierająca instrukcje CISC i transkodująca je na prymitywny RISC jednostka wykonawcza RISC

Potok CISC Potok przebudowany tak, by mógł wykonywać instrukcje CISC kilka stopni na początku potoku zajmuje się pobieraniem instrukcji, dekodowaniem ich i wyliczaniem adresu efektywnego instrukcje o zmiennych długościach wymagają skomplikowanego dekodera, niekiedy działającego w kilku cyklach stopień odczytu argumentów pobiera argumenty z rejestrów lub pamięci stopień wykonania o skomplikowanej budowie wykonuje poszczególne instrukcje w różnej liczbie cykli stopień zapisu zapisuje wynik do rejestru lub pamięci skomplikowany interfejs pamięci z dwiema ścieżkami dostępu Wydajność: średni czas wykonania instrukcji około dwóch cykli potok często zatrzymuje się Przykłady Intel i486, Motorola MC68040 koniec lat 80tych XX w.

Potok CISC Intel i486 Fetch ID1 ID2 EX WB Fetch pobranie instrukcji do bufora instrukcji ID1 wstępne dekodowanie, określenie długości ID2 obliczanie adresów EX wymiana z pamięcią, odczyt rejestrów, operacja arytmetyczna lub logiczna stopień bardzo skomplikowany, w wielu instrukcjach wykonanie wielofazowe WB zapis wyniku do rejestrów

Procesor z transkodowaniem instrukcji Jednostka transkodująca pobiera instrukcje CISC i zamienia je na sekwencje instrukcji podobnych do RISC dla prostych instrukcji translacja 1:1 nieco bardziej złożone instrukcje zamieniane na 2 4 instrukcji RISC instrukcje skomplikowane wykonywane jako procedury pobierane z pamięci ROM umieszczonej w procesorze Jednostka wykonawcza wykonuje instrukcje typu RISC różnice w stosunku do czystego RISC występujące w niektórych realizacjach: Przykłady: instrukcje arytmetyczne z jednym odwołaniem do argumentu w pamięci operacje stosowe (dwa argumenty docelowe, w tym SP) pierwsze realizacje NexGen Nx586, IDT C6 (1995 1997) obecnie wszystkie procesory x86 działają na tej zasadzie

Procesor z transkodowaniem instrukcji IDT C6 Bufor instrukcji x86 Translator Kolejka instrukcji RISC Pamięć ROM z procedurami RISC Dekodowanie Obliczanie adresu Wykonanie Zapis wyniku

DZIĘKUJĘ ZA UWAGĘ!