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

Podobne dokumenty
Architektura potokowa RISC

Architektura typu Single-Cycle

Przetwarzanie potokowe pipelining

Architektura Systemów Komputerowych

Architektura komputerów

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

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

. III atyka, sem, Inform Symulator puterów Escape rchitektura kom A

Architektura typu multi cycle

Architektura Systemów Komputerowych

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 systemów komputerowych. Przetwarzanie potokowe I

Programowalne układy logiczne

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

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

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

Przetwarzanie instrukcji w mikroprocesorach

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

architektura komputerów w. 4 Realizacja sterowania

Projektowanie. Projektowanie mikroprocesorów

Architektura systemów komputerowych. dr Artur Bartoszewski

Page 1. Pięcio-krokowy pipeline

Architektura Systemów Komputerowych

Energooszczędne programowanie

Przetwarzanie potokowe

Struktura i działanie jednostki centralnej

Lista Rozkazów: Język komputera

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

Wydajność obliczeń a architektura procesorów

Metody optymalizacji soft-procesorów NIOS

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]

Przetwarzanie potokowe (cd.) oraz zaawansowane organizacje procesorów

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

Budowa i zasada działania komputera. dr Artur Bartoszewski

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

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

Architektura systemów komputerowych

Organizacja typowego mikroprocesora

Architektura komputerów

Zrównoleglenie i przetwarzanie potokowe

Architektura systemów komputerowych. dr Artur Bartoszewski

organizacja procesora 8086

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

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

Architektura mikroprocesorów TEO 2009/2010

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

Architektura komputerów

Metody Kompilacji Wykład 1 Wstęp

Projekt prostego procesora

Adam Korzeniewski p Katedra Systemów Multimedialnych

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

Analiza i Synteza Układów Cyfrowych

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

KONSTRUKCJA KOMPILATORÓW

Architektura mikroprocesorów z rdzeniem ColdFire

Podstawy Informatyki Układ sterujący

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

Architektura komputerów

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

MOŻLIWOŚCI PROGRAMOWE MIKROPROCESORÓW

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Struktury danych (I): kolejka, stos itp.

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco

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

Architektura systemów komputerowych. Moduł kontrolera

Przykładowe pytania DSP 1

dr inż. Konrad Sobolewski Politechnika Warszawska Informatyka 1

Architektura systemów komputerowych. dr Artur Bartoszewski

Architektura komputerów

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

Wstęp do Techniki Cyfrowej... Układy kombinacyjne

Programowanie Niskopoziomowe

Kompilator języka C na procesor 8051 RC51 implementacja

Architektura komputerów

Układy kombinacyjne. cz.2

Algorytm mnożenia sekwencyjnego (wariant 1)

Architektura komputerów Wykład 2

LEKCJA TEMAT: Współczesne procesory.

Architektura komputerów II - opis przedmiotu

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

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

Spis treści. Przedmowa Wykaz oznaczeń Wstęp Układy kombinacyjne... 18

Mikrokontroler ATmega32. Język symboliczny

Specyfika projektowania Mariusz Rawski

Budowa Mikrokomputera

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

Formalna weryfikacja oprogramowania w lotnictwie

Architektura systemów komputerowych. dr Artur Bartoszewski

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

PyPy's Approach to Virtual Machine Construction

Układy asynchroniczne

Jerzy Nawrocki, Wprowadzenie do informatyki

Technologie informacyjne (2) Zdzisław Szyjewski

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Uniwersytet w Białymstoku Wydział Ekonomiczno-Informatyczny w Wilnie SYLLABUS na rok akademicki 2010/2011

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

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

Transkrypt:

Rozwiązywanie konfliktów danych i sterowania w architekturze potokowej

Konflikty w przetwarzaniu potokowym Konflikt danych Data Hazard Wstrzymywanie kolejki Pipeline Stall Optymalizacja kodu (metody programowe) Forwarding (metoda sprzętowa) Konflikt sterowania Control Hazard Unieważnienie instrukcji Pipeline Flush Opóźnienie skoku Delayed Branching Wczesne wykrywanie skoku Early Branch Detection Tablica historii skoków Branch History Table Konflikt zasobów Structural Hazard powielenie sprzętu

Wstrzymywanie kolejki Powtórzenie oraz unieważnienie niektórych faz instrukcji faza ID może być wykonywana równocześnie z WB, przy zapewnieniu synchronizacji przepływu danych wówczas wstrzymanie kolejki obejmuje tylko 2 cykle czas A) B) C) D) E) F) ADD R1,R2,R3 SUB R4,R3,R5 MUL R4,R3,R1......... IF ID A B C C C D E F A B B B C D E EX Mem WB A A A B C D B C B

Programowe wstrzymywanie kolejki Korekta kodu za pomocą instrukcji NOP (No Operation) nie jest to "metoda optymalizacji", ale wstawianie NOP może okazać się niezbędne w niektórych przypadkach, gdy brak jest innych mechanizmów sprzętowych next: LW MUL SW SUBI BNE... R1,0(R3) R1,R1,R1 R1,0(R3) R3,#4,R3 R0,R3,next next: LW NOP MUL NOP NOP SW SUBI NOP NOP BNE... R1,0(R3) R1,R1,R1 R1,0(R3) R3,#4,R3 R0,R3,next

Sprzętowe wstrzymywanie kolejki Zamiana sygnałów na nieaktywne (0) dla Ex, Mem,WB Brak taktowania rejestrów PC i IF/ID

Metody statyczne: optymalizacja podczas kompilacji programu (optimising compiler) np. gcc -On ła du Metody dynamiczne: sprzętowe ustalanie optymalnej kolejności wykonywania instrukcji go w yk dynamic scheduling se m te out of order execution az ak re speculative execution Po z Optymalizacja kodu

Statyczna optymalizacja kodu zależna od języka, niezależna od architektury Front-end optimizations transformacja do reprezentacji pośredniej częściowo zależna od języka, niezależna od architektury High-level optimizations transformacje pętli, włączanie procedur i wiele innych mało zależna od języka, mało zależna od architektury Global optimizations niezależna od języka, zależna od architektury Code optimizations lokalne i globalne metody optymalizacja kodu alokacja rejestrów do obliczeń, typy i kolejność instrukcji, etc.

Metody optymalizacji gcc -o test test.c -O1 gcc -o test test.c -O2 -march=athlon

Optymalizacja kodu - przykład Niskopoziomowa optymalizacja kodu dla architektury potokowej z Single Delay Slot next: LW MUL SW SUBI BNE... R1,0(R3) R1,R1,R1 R1,0(R3) R3,#4,R3 R0,R3,next next: LW SUBI MUL BNE SW... R1,0(R3) R3,#4,R3 R1,R1,R1 R0,R3,next R1,4(R3)

Forwarding Sprzętowa metoda rozwiązywania konfliktu danych

Forwarding Idea: transfery pomiędzy rejestrami pośrednimi

Transfery (bez forwarding'u) Tylko "w przód" oraz końcowa modyfikacja rejestru

Transfery (z forwarding'iem) EX/MEM ALU MEM/WB ALU

Forwarding Sprzętowa eliminacja prawie wszystkich konfliktów danych (pomiędzy wybranymi fazami) Transfery najbardziej aktualnych wartości rejestrów z faz Ex i Mem na wejście ALU Blok logiki kombinacyjnej porównujący (komparatory): numery rejestrów które będą modyfikowane (Ex/Mem.Rd lub Mem/WB.Rd) numery rejestrów, które są operandami dla ALU (ID/Ex.Rs lub ID/Ex.Rt) Plik rejestrów jest modyfikowany zgodnie z kolejnością instrukcji w programie

Forwarding Multipleksery na wejściu ALU są sterowane wyłącznie przed układ forwarding'u Forwarding jest niewidoczny dla jednostki sterującej i nie zwiększa jej komplikacji W przypadku "głębokiej kolejki" komplikacja forwarding'u ogranicza jego stosowalność

Architektura z forwarding'iem (tutaj jeszcze bez instrukcji skoków)

Forwarding w działaniu (1)

Forwarding w działaniu (2)

Forwarding w działaniu (3)

Forwarding w działaniu (4)

Forwarding korekta dla ALUsrc Sygnałem ALUSrc steruje jednostka centralna Niezależność sterowania i forwarding'u wymaga niezależnych multiplekserów

"Trudne" konflikty danych Forwarding nie rozwiązuje wszystkich konfliktów danych Read After Write (RAW) tutaj: LW & ADD

"Trudne" konflikty danych Konieczne jest sprzętowe wstrzymanie kolejki

Sprzętowe wstrzymywanie kolejki Detekcja "trudnych" konflików danych możliwa jest tylko w fazie dekodowania (ID) Konieczny jest dodatkowy układ wykrywania konflików typu Read After Load (w omawianej architekturze) Układ detekcji konfliktów i wstrzymywania kolejki powinien być niezależny od sterowania i forwarding'u Blok logiki kombinacyjnej wykrywający: instrukcję Load w fazie Ex i numer rejestru do zmiany (ID/Ex.MemRead oraz ID/Ex.Rt) instrukcję R-type lub Store w razie ID i numery operandów (IF/ID.Rs oraz IF/ID.Rt)

Sprzętowe wstrzymywanie kolejki

Wstrzymywanie kolejki - w działaniu (1)

Wstrzymywanie kolejki - w działaniu (2)

Wstrzymywanie kolejki - w działaniu (3)

Wstrzymywanie kolejki - w działaniu (4)

Wstrzymywanie kolejki - w działaniu (5)

Wstrzymywanie kolejki - w działaniu (6)

Konflikt sterowania Każdy skok powoduje zmianę kolejności wykonywania instrukcji zaburza kolejkę i zmniejsza wydajność (CPI > 1) Skoki warunkowe wymagają dodatkowo policzenia warunku skoku, co opóźnia decyzję o skoku Wykonanie skoku wymaga (zwykle) unieważnienia kilku instrukcji, które już znajdują się w procesorze Efektywne metody redukcji konfliktów sterowania: obliczanie warunku skoku w jak najwcześniejszej fazie (Early Branch Detection) przewidywanie zachowania instrukcji skoku na podstawie jej ostatnich wykonań (Branch History Table)

Konflikt sterowania Wykorzystanie warunku skoku dopiero w 5 fazie skutkuje pobraniem 3 zbędnych instrukcji

Wczesne wykrywanie skoków

Wczesne wykrywanie skoków Przesunięcie obliczania warunku i adresu skoku do fazy ID powoduje, ze tylko jedna niepewna instrukcja jest pobrana przez procesor (w fazie IF) Obliczanie warunku skoku w fazie ID może dotyczyć tylko prostych (szybkich) obliczeń, np. porównanie Trzeba zapewnić dodatkowy sumator w fazie ID dedykowany do obliczania adresu skoku Unieważnienie instrukcji w fazie IF sprowadza się do zerowania rejestru IF/ID, co jest równoznaczne z zamianą instrukcji na NOP zakładamy, że NOP ma opcode 0 i reszta też jest 0

Wczesne wykrywanie w działaniu (1)

Wczesne wykrywanie w działaniu (2)

Tablica historii skoków (BHT) W BHT zapamiętywane są adresy ostatnio wykonywanych instrukcji skoków i adresy, do których skoki zostały wykonane Tablica skoków (jump table) jump next instr_next IF ID EX IF ID EX MEM WB Podczas pobieranie instrukcji skoku, adres następnej instrukcji jest odczytywany z tablicy skoków (o ile wcześniej już wystąpił) Metoda pozwala zredukować nietrafione instrukcje. do przypadków zakończenia lub rozpoczęcia pętli w programach, czyli sytuacji stosunkowo rzadkich