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

Podobne dokumenty
Przetwarzanie potokowe pipelining

Architektura potokowa RISC

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

Architektura typu Single-Cycle

Architektura typu multi cycle

Architektura Systemów Komputerowych

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

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

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

Lista Rozkazów: Język komputera

Architektura Systemów Komputerowych

Przetwarzanie instrukcji w mikroprocesorach

architektura komputerów w. 4 Realizacja sterowania

Architektura komputerów

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

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

Przetwarzanie potokowe

Architektura mikroprocesorów z rdzeniem ColdFire

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

Wydajność obliczeń a architektura procesorów

Struktura i działanie jednostki centralnej

Architektura mikroprocesorów TEO 2009/2010

Architektura komputerów

Architektura systemów komputerowych. Przetwarzanie potokowe I

Metody optymalizacji soft-procesorów NIOS

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

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

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

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

Architektura komputerów

Shellcody a architektura MIPS na systemach IRIX. Adam Zabrocki.

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

1 Ogolnie o asemblerach. 2 Zarys architektury MIPS

Architektura Systemów Komputerowych

Projektowanie. Projektowanie mikroprocesorów

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

Plan wykładu. Architektura systemów komputerowych. Cezary Bolek. Składowe architektury komputera

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

Oprogramowanie komputerów wer. 9

Podstawy Techniki Mikroprocesorowej

A Machine Architecture that is Really Intuitive and Easy. Dane: notacja dwójkowa, zapis w kodzie dopełnieniowym

Architektura systemów komputerowych Laboratorium 8 Symulator SMS32 Instrukcje skoku i pętle

List s a R ozkazó z w: w Ję J z ę y z k y k k o k mp o u mp t u er e a a ( cd c. d )

Adam Korzeniewski p Katedra Systemów Multimedialnych

Architektura komputerów

Architektura Systemów Komputerowych

Architektura von Neumanna. Jak zbudowany jest współczesny komputer? Schemat architektury typowego PC-ta. Architektura PC wersja techniczna

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

Zrównoleglenie i przetwarzanie potokowe

dr inż. Jarosław Forenc

Prosty procesor dla framgentu listy rozkazów MIPSa

Budowa Mikrokomputera

1 Zarys architektury MIPS

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

Procedury. int mult (int mcand, int mlier){ int product = 0; while (mlier > 0) { product = product + mcand; mlier = mlier -1; } return product; }

Programowanie w asemblerze MIPSa

Przerwania, polling, timery - wykład 9

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]

Larrabee GPGPU. Zastosowanie, wydajność i porównanie z innymi układami

Architektura komputerów

Mikroprocesory rodziny INTEL 80x86

Energooszczędne programowanie

Programowalne układy logiczne

Technologie informacyjne wykład 2 wer. 1.2

Programowanie Niskopoziomowe

Metody obsługi zdarzeń

Procesor i jego architektura (CISC, RISC, 32/64 bity). Systemy wieloprocesorowe. wer Wojciech Myszka 16 pa«zdziernika 2008

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Page 1. Pięcio-krokowy pipeline

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Jednostka centralna. dr hab. inż. Krzysztof Patan, prof. PWSZ

Architektura komputerów. Asembler procesorów rodziny x86

Bibliografia: pl.wikipedia.org Historia i rodzaje procesorów w firmy Intel

Magistrala systemowa (System Bus)

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

Architektura systemów komputerowych Laboratorium 14 Symulator SMS32 Implementacja algorytmów

System pamięci. Pamięć wirtualna

Architektura systemów komputerowych. dr Artur Bartoszewski

Technologie Informacyjne Wykład 3

Administracja i programowanie pod Microsoft SQL Server 2000

Architektura komputerów

Kurs Zaawansowany S7. Spis treści. Dzień 1

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

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

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

Architektura systemów komputerowych. Porównanie architektury jednycyklowej i wielocyklowej Zmiany w ścieŝce danych Cykle

organizacja procesora 8086

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

System pamięci. Pamięć podręczna

Technika mikroprocesorowa I Wykład 2

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

Oprogramowanie komputerów

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

Programowanie w C++ 1 Opis procesora Sextium II. Opis procesora Sextium. materiały dydaktyczne udostępnione przez Tomasza Wierzbickiego

1. Tworzenie nowego projektu.

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

Architektury Komputerów. Tomasz Dziubich p.530, konsultacje czwartek i 11-12, dziubich@eti.pg.gda.pl

Technika mikroprocesorowa I Studia niestacjonarne rok II Wykład 2

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

Transkrypt:

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

Wynik porównania dla branch znany dopiero w fazie MEM (pod koniec EX) 4.8 Control Hazards Hazardy sterowania unieszkodliwić te rozkazy (ustawić syg. ster. na 0) PC Chapter 4 The Processor 2

Ograniczanie skutków haz. st. Przesuńmy układy potrzebne rozkazom branch do fazy ID stage Obliczanie adresu skoku Porównanie rejestru Przykład: (branch się wykonuje) 36: 40: 44: 48: 52: 56: 72: sub beq and or add slt... lw $10, $1, $12, $13, $14, $15, $4, $3, $2, $2, $4, $6, $8 7 $5 $6 $2 $7 $4, 50($7) Chapter 4 The Processor 3

Przesunięte układy dla branch Chapter 4 The Processor 4

Przykład cd. Chapter 4 The Processor 5

Hazardy danych i branch Jesli rejestry do porównanie pochodzą z drugiej lub trzeciej poprzedzającej instrukcji ALU add $1, $2, $3 IF add $4, $5, $6 ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM beq $1, $4, target WB Używamy forwardingu Chapter 4 The Processor 6

Hazardy danych i branch Jeśli rejestry do porównania pochodzą z poprzedniej instrukcji ALU lub instrukcji lw sprzed dwóch cykli lw Potrzebne opóźnienie o cykl... $1, addr IF add $4, $5, $6 beq stalled beq $1, $4, target ID EX MEM WB IF ID EX MEM WB IF ID ID EX MEM WB Chapter 4 The Processor 7

Hazardy danych i branche Jeśli rejestr do porównania pochodzi z poprzedniej instrukcji lw lw Potrzebne opóźnienie o 2 cykle! $1, addr IF beq stalled beq stalled beq $1, $0, target ID EX IF ID MEM WB ID ID EX MEM WB Chapter 4 The Processor 8

Dynamiczna predykcja skoków W dłuższych potokach lub rozwiązaniach superskalarnych branch penalty dotkliwsza Używa się dynamicznej predykcji Branch prediction buffer (aka branch history table) Indeksowany adresami ostatnich skoków Zapisuje się wynik skoku (wykonany/nie wykonany) Po napotkaniu skoku Zajrzyj do tabeli i załóż wynik jak poprzednio Zacznij pobierać kolejny rozkaz zgodnie z predykcją W razie pomyłki napraw szkody i zmień wpis w tabeli Chapter 4 The Processor 9

Predyktor 1-bitowy Dwa błędy w pętli wewnątrznej: outer: inner: beq,, inner beq,, outer Przy ostatniej iteracji pętli wewnętrznej Przy pierwszej iterazji pętli wewnętrzenj w następnej iteracji pętli zewnętrznej Chapter 4 The Processor 10

Predyktor 2-bitory Zmienia predykcje tylko po dwóch kolejnych błędach Chapter 4 The Processor 11

Obliczanie adresu skoku Nawet z predykcją trzeba obliczyć adres skoku Potrzebne opóźnienie przy skoku wykonywanym Specjalny bufor adresów skoków Rodzaj cache dla adresów skoków Odczytywany podczas pobieranie instrukcji Jeśli adres jest w buforze i przewidujemy skok możemy natychmiast pobrać odpowiedni rozkaz Chapter 4 The Processor 12

,,Nieoczekiwane zdarzenia wymagające zmiany naturalnego przepływu rozkazów Różne użycie obu terminów w różnych architekturach Wyjątek Powstaje wewnątrz procesora np. niezdefiniowany opcode, przepełnienie,... Przerwanie 4.9 Exceptions Wyjątki i przerwania Z kontrolera wejścia-wyjścia Zaplanowanie ich obsługi bez utraty efektywności procesora jest sporym wyzwaniem Chapter 4 The Processor 13

Obsługa wyjątków W MIPS obsługiwane przez System Control Coprocessor (CP0) Zapisz PC rozkazu powodującego wyjątek (lub w czasie którego wystąpiło przerwanie) W MIPS: Exception Program Counter (EPC) Zapisz rodzaj problemu W MIPS: specjalny 32-bitowy rejestr (Cause register) W naszym przykładzie założymy, że Cause reg. 1bitowy: 0 niezdefiniowany opcode, 1 przepełnienie arytmetyczne Skocz do programu obsługi wyjątków (adres 8000 00180) Chapter 4 The Processor 14

Alternatywne rozwiązanie Przerwania wektorowe Np.: Adres,,krótkiej'' procedury obsługi zależy od rodzaju problemu Niezdefiniowany opcode: C000 0000 Przepełnienie: C000 0020 : C000 0040,,Krótka'' procedura obsługi Obsługuje w pełni przerwanie lub Zapisuje potrzebne informacje i skacze do prawdziwej procedury obsługi Chapter 4 The Processor 15

Obsługa wyjątków Odczytaj Cause reg., przekarz sterowanie do odpowiedniej podprocedury obsługi Określ rodzaj problemu Jeśli program,,restartowalny'' Wykonaj odpowiednie czynności,,naprawcze'' Użyj EPC aby wrócić do programu W przeciwnym przypadku Zatrzymaj program Zgłoś błąd podając dane z EPC, Cause reg., Chapter 4 The Processor 16

Wyjątki w potoku Kolejny rodzaj hazardu sterowania Rozważamy przepełniene w faze EX rozkazu add add $1, $2, $1 Zatrzyma zapis do rejsestru $1 Dokończ wcześniejsze instrukcje Wyczyść kolejne instrukcje z potoku Ustaw wartości rejestrów Cause i EPC Ustwa PC na adres procedury obsługi Podobne do źle przewidzianego skoku W podobny sposób rozwiązywane Chapter 4 The Processor 17

Potok z wyjątkami Chapter 4 The Processor 18

Wyjątki restartowalne Wyjątki restartowalne Potok czyszczony Wyjątek obsługiwany, potem powrót do rozkazu powodującego wyjątek Rozkaz ponownie pobierany PC zapisywany w rejestrze EPC Identyfikuje przerwany rozkaz Tak naprawdę zapisywane jest PC + 4 Procedura obsługi bierze to pod uwagę Chapter 4 The Processor 19

Przykład wyjątku Exception on add in 40 44 48 4C 50 54 sub and or add slt lw $11, $12, $13, $1, $15, $16, $2, $4 $2, $5 $2, $6 $2, $1 $6, $7 50($7) Handler 80000180 80000184 sw sw $25, 1000($0) $26, 1004($0) Chapter 4 The Processor 20

Przykład wyjątku Chapter 4 The Processor 21

Przykład wyjątku Chapter 4 The Processor 22

Wiele wyjątków na raz W potkoku jednocześnie kilka rozkazów Mogą jednocześnie powodować wyjątki Proste rozwiązanie: obsłuż najpierw wyjątek z najstarszego rozkazu,,wyczyść'' kolejne rozkazy W złożonych potokach Wiele rozkazów startuje równocześnie Wykonywane są,,out-of-order'' Obsługa wyjątków bardzo skomplikowana Chapter 4 The Processor 23

Przetwarzanie potokowe: wiele rozkazów wykonywanych równolegle (różne fazy) Jak zwiększyć ILP? Dłuższy potok Mniej pracy w jednej fazie krótszy cykl zegarowy Muliple issue Zwielokrotnienie potoku W jednym cyklu starutje kilka rozkazów Instructions Per Cycle (IPC) liczba cykl przeciętnie kończonych w jednym cyklu; Cycles Per Instruction co ile cykli przeciętnie kończy się jeden rozkaz. Np., 4GHz 4-drożny multiple-issue 4.10 Parallelism via Instructions Instruction-Level Parallelism (ILP) optymalne CPI = 0.25, optymalne IPC = 4 W praktyce IPC I CPI gorsze z powodu hazardów Chapter 4 The Processor 24

Multiple Issue Static multiple issue Kompilator grupuje rozkazy Pakuje je w,,paczki''; rozkazy z paczki mogą być wykonane równolegle Kompilator dba o unikanie hazardów Dynamic multiple issue CPU wybiera, które rozkazy rozpocząć w danym cyklu Kompilator może pomagać odpowiednio ustawiając rozkazy CPU rozwiązuje hazardy w czasie rzeczywistym (używając skomplikowanych technik) Chapter 4 The Processor 25

Spekulacja,Zgadnij co zrobić z rozkazem Rozpocznij operacje jak najszybciej Sprawdź, czy zgadnięcie się udało Jeśli tak: dokończ rozkaz Jeśli nie: wycofaj rozkaz i zrób to co trzeba Częste w przypadku static oraz dynamic multiple issue Przykłady Spekulacje na temat wykonania skoku Spekulacja na temat lw Wycofaj się jeśli dana lokacja uległa zmianie Chapter 4 The Processor 26

Spekulacja soft./sprzętowa Kompilator może przeorganizować rozkazy np. przesunąć lw przed branch Może dodać rozkazy,,naprawiające'' w przypadku błędnego zgadnięcia Sprzęt może szukać rozkazów do wykonania Buforuje wyniki dopóki nie jest pewien, że są potrzebne Czyści bufory w przypadu błędnego zgadnięcia Chapter 4 The Processor 27

Spekulacja a wyjątki Co jeśli spekulatywnie wykonywany rozkaz jest przerywany wyjątkiem np. spekulatywny load Spekulacja statyczna ISA może wspierać wycofywanie wyjątków Spekulacja dynamiczna Można buforować wyjątki aż do zakończenia rozkazu (które może nie następić) Chapter 4 The Processor 28

Static Multiple Issue Kompilator grupuje rozkazy w paczki Cała paczka może być rozpoczęta w jednym cyklu Rozkazy w jednej paczce nie mogą być dowolne (ograniczone zasoby, hazardy) Można myśleć, że jedna paczka to pojedynczy,,bardzo długi'' rozkaz Specyfikujacy kilka równoległych czynności Very Long Instruction Word (VLIW) Chapter 4 The Processor 29

Planowanie Static Multiple Issue Kompilator usuwa wszystkie lub część hazardów Przeorganizowuje rozkazy aby umeścić je w paczkach Nie ma zależności w paczce Mogą być pomiędzy paczkami W różnych ISAs różne rozwiązania; kompilator musi je znać! Czasem (często) trzeba wstawić rozkaz pusty NOP Chapter 4 The Processor 30

MIPS: Static Dual Issue Dwa rozkazy w paczce Jeden rozkaz ALU/branch, jeden rozkaz load/store Wyrównanie do 64-bitów ALU/branch, potem load/store; NOP w niewykorz. polach Address Instruction type Pipeline Stages n ALU/branch IF ID EX MEM WB n+4 Load/store IF ID EX MEM WB n+8 ALU/branch IF ID EX MEM WB n + 12 Load/store IF ID EX MEM WB n + 16 ALU/branch IF ID EX MEM WB n + 20 Load/store IF ID EX MEM WB Chapter 4 The Processor 31

MIPS: Static Dual Issue Chapter 4 The Processor 32

Hazardy w Dual-Issue MIPS Mamy większą równoległość Hazard EX Forwarding rozwiązywał je w pojedynczym potoku Teraz nie możemy użyć wyniku ALU dla load/store z tej samej paczki Load-use hazard add $t0, $s0, $s1 load $s2, 0($t0) Rodzielane na dwie paczki Wciąż jeden cykl opóźnienia, ale teraz opóźniamy obie instrukcje z paczki Wymagane,,agresywniejsze'' planowanie Chapter 4 The Processor 33

Przykład planowania Planujemy program dla dual-issue MIPS Loop: lw addu sw addi bne $t0, $t0, $t0, $s1, $s1, 0($s1) $t0, $s2 0($s1) $s1, 4 $zero, Loop # # # # # $t0=array element add scalar in $s2 store result decrement pointer branch $s1!=0 Chapter 4 The Processor 34

Przykład planowania cd. Loop: ALU/branch Load/store Cykle nop lw 1 addi $s1, $s1, 4 nop 2 addu $t0, $t0, $s2 nop 3 bne sw $s1, $zero, Loop $t0, 0($s1) $t0, 4($s1) IPC = 5/4 = 1.25 (por. opt. IPC = 2) 4

Rozwijanie pętli Rozwijamy ciało pętli (redukuje to m.in. pracę przy sprawdzaniu warunku pętli) Używamy różnych rejestrów dla różnych etapów,,rozwinięcia'',,register renaming Unikaj niesionych przez pętle,,antyzależności SW a po nim LW z tym samym rejestrem aka name dependence Chapter 4 The Processor 36

Rozwijanie pętli - przykład ALU/branch Load/store cycle lw $t0, 0($s1) 1 nop lw $t1, 12($s1) 2 addu $t0, $t0, $s2 lw $t2, 8($s1) 3 addu $t1, $t1, $s2 lw $t3, 4($s1) 4 addu $t2, $t2, $s2 sw $t0, 16($s1) 5 Loop: addi $s1, $s1, 16 Wskaźnik bliższy optymalnemu (1.75) koszt: rejestry addu $t3, $t4, $s2 sw $t1, 12($s1) 6 Chapter 4 The Processor 37 I długość kodu

Dynamic Multiple Issue Procesory,,superskalarne'' CPU decyduje czy uruchomć 0, 1, 2, rozkazy w danym cyklu Stara się unikać hazardów Kompilator nie musi dbać o unikanie hazardów Ale może wciąż pomagać O poprawność dba CPU Chapter 4 The Processor 38

Planowanie dynamiczne Pozwalamy CPU wykonywać rozkazy outof-order aby uniknąć przestojów Ale wyniki do pamięci/rejestrów idą po kolei! Np.: lw $t0, 20($s2) addu $t1, $t0, $t2 sub $s4, $s4, $t3 slti $t5, $s4, 20 Może rozpocząć sub gdy addu czeka na lw Chapter 4 The Processor 39

Dynamically Scheduled CPU Preserves dependencies Hold pending operands Results also sent to any waiting reservation stations Reorders buffer for register writes Can supply operands for issued instructions Chapter 4 The Processor 40

Core i7 Pipeline Chapter 4 The Processor 41