cpu, gpu und fpga - eti/vorlesung/ws1718/informationsmaterial/... · maximilian bandle cpu, gpu und...

20
CPU, GPU und FPGA CPU, GPU und FPGA Maximilian Bandle, Bianca Forkel 21. November 2017

Upload: phamhanh

Post on 06-Feb-2018

227 views

Category:

Documents


3 download

TRANSCRIPT

CPU, GPU und FPGA

CPU, GPU und FPGAMaximilian Bandle, Bianca Forkel

21. November 2017

Maximilian Bandle

CPU, GPU und FPGA

CPU, GPU und FPGA

•CPU: Central Processing Unit

•GPU: Graphical Processing Unit

•FPGA: Field Programmable Gate Array

Inhalt

2

Maximilian Bandle

CPU, GPU und FPGA

CPU

• Bisher in Vorlesung betrachtet • Über Assembler/Maschinensprache frei programmierbare

Verarbeitungseinheit

• Zentraler Bestandteil eines Computers • Rechenwerk (ALU) • Leitwerk • Speichermanager (MMU)

Central Processing Unit

3

Maximilian Bandle

CPU, GPU und FPGA

CPUCachehierarchie

4

Register

Prozessorcache

Arbeitsspeicher (RAM)

Festplatte/SSD

Archivspeicher

Bytes

K-M Bytes

G Bytes

T Bytes

ns

< 10ns

< 100ns

ms

Größe Zugriffszeit

Faktor 104

Maximilian Bandle

CPU, GPU und FPGA

CPU

• Übergang fließend

• Bei Mikrocontroller alles auf Chip enthalten • Evtl. nur Oszillator (Taktgeber) und Speicher extern

• Basiert häufig auf älteren Bauformen von Prozessoren • Entworfen für Steuerung von Systemen • Kein richtiges Betriebssystem - nur Bootloader

• Populär geworden in Maker-Szene durch Arduino und Co.

Abgrenzung von Mikrocontrollern

5

Maximilian Bandle

CPU, GPU und FPGA

FPU

• Entworfen für Fließkomma Berechnungen • Lookup Tabellen (LUT) mit vordefinierten Werten z.B. für Division

-> Pentium-FDIV-Bug (Fehler in LUT) • Mathematischer Koprozessor • Kann meist effizient auf Matrizen arbeiten • Heutzutage in CPU integriert da Funktionen allgemein verwendet

werden

• Programmierbar durch spezielle Assembler Befehle

Floating Point Unit

6

Maximilian Bandle

CPU, GPU und FPGA

SIMD

• Vektor Instruktionen um Programme zu parallelisieren • Gleichzeitiges Bearbeiten mehrerer Elemente in sogenannten Lanes • In jedem 64 Bit Prozessor verbaut (SSE in Intel & AMD)

• Seit Skylake Server bis zu 512 Bit (8x64bit) parallel bearbeiten

• Diverse Operationen unterstützt • Logische Operationen (Shifts, Rotationen) • Mathematische Operationen • Vergleiche • Spezielle String Befehle (zB Substring Suche)

Single Instruction Multiple Data

7

Maximilian Bandle

CPU, GPU und FPGA

SIMD vs non SIMD CodeFiltern von Elementen

8

uint32_t scalar(int32_t* in, int32_t inCount, int32_t x, int32_t* out) { uint32_t outPos = 0; // Initialisiere Ausgabe for (int32_t i=0; i < inCount; i++) { if (in[i] < x) { out[outPos++] = in[i]; } // Speichere wenn passend

} return outPos;

}

uint32_t scalar(int32_t* in, int32_t inCount, int32_t x, int32_t* out) { uint32_t outPos = 0; // Initialisiere Ausgabe for (int32_t i=0; i < inCount; i++) { uint32_t inTmp = in[i]; // Wert speichern bool vergleich = inTmp < x; // Vergleichen if (vergleich) { // Wenn passend zum Vergleich out[outPos] = inTmp; // Speichern} outPos+=vergleich; // Neuen Treffen zählen

} return outPos;

}

Maximilian Bandle

CPU, GPU und FPGA

SIMD vs non SIMD CodeFiltern von Elementen

9

uint32_t scalar(int32_t* in, int32_t inCount, int32_t x, int32_t* out) { uint32_t outPos = 0; // Initialisiere Ausgabe for (int32_t i=0; i < inCount; i++) { uint32_t inTmp = in[i]; // Wert speichern bool vergleich = inTmp < x; // Vergleichen if (vergleich) { // Wenn passend zum Vergleich out[outPos] = inTmp; // Speichern} outPos+=vergleich; // Neuen Treffen zählen

} return outPos;

} uint32_t SIMD(int32_t* in, int32_t inCount, int32_t x, int32_t* out) { uint32_t outPos = 0;__m512i cmp = _mm512_set1_epi32(x); // Vektor mit Vergleichswerten for (int32_t i=0; i<inCount; i+=16) { // 16 pro Durchlauf __m512i inV = _mm512_loadu_si512(in + i); // 16 Werte laden__mmask16 mask = _mm512_cmplt_epi32_mask(inV, cmp); // Mit Maske vergleichen _mm512_mask_compressstoreu_epi32(out + outPos, mask, inV); // Speichern outPos += __builtin_popcount(mask); // Treffer zählen und hochzählen

} return outPos;

}

Maximilian Bandle

CPU, GPU und FPGA

SIMD vs non SIMD CodeFiltern von Elementen

10

Zeit

in M

illise

kund

en

0

15

30

45

60

Selektivität

1% 10% 50% 90% 99%

2,52,21,61,01,0

8,4

16,6

53,5

20,814,7

Skalar SIMD

Maximilian Bandle

CPU, GPU und FPGA

GPU

•Entworfen für Grafikanzeige und Grafikverarbeitung

• Hochparalleles Rechnen gleichartiger Aufgaben • Schlecht bei Branches (if) da beide Pfade ausgeführt werden

• Nur ein Ergebnis wird genutzt • Für Vektor und Matrix-Operationen mit Gleitkommazahlen ausgelegt

•Programmierung durch spezielle Schnittstellen: z.B. DirectX (Windows), OpenGL, Vulkan

• Inzwischen Basismodelle in den meisten Prozessoren integeriert • Viele Laptops besitzen keine gesonderte GPU

Graphical Processing Unit

11

Maximilian Bandle

CPU, GPU und FPGA

GPGPU

• Verwendung der GPU über die Grafikverarbeitung hinaus • Vor allem wissenschaftliches Rechnen, für Simulationen • Hohe Parallelität (nicht unbedingt vorteilhaft!) • Limitierte Auswahl an Operatoren im Vergleich zu CPU

• Programmierung durch spezielle Schnittstellen, z.B. CUDA, OpenCL

General Purpose GPU

12

Maximilian Bandle

CPU, GPU und FPGA

FPGA

• FPGAs sind (frei) programmierbare Logikschaltungen

• Nutzer beschreibt seinen eigenen Mikrochip

• Konfiguration eines FPGAs ist nicht fest: Neu Konfigurierbar

Field Programmable Gate Arrays

13

Maximilian Bandle

CPU, GPU und FPGA

FPGACPU vs FPGA

14

Code Assembler

out = !a; not eax

VHDL Logik

out <= not a;

Kompilieren

Synthetisieren

Maximilian Bandle

CPU, GPU und FPGA

FPGA

• Aufgaben die eine CPU nicht gut kann • z.B. Signalverwaltung, Echtzeit Anwendungen

• Design der Hardware zur Lösung eines Problems • Bei CPU ist Hardware vorgegeben

• Flexibles Design eines Chips • Beheben von Fehlern im Design

• Produktion eines Mikrochips von vielen ist billig (Cent - Bereich) • ABER Firma & Produktion des ersten ist teuer

(Millionen - Milliarden)

Wieso brauche ich ein FPGA?

15

Maximilian Bandle

CPU, GPU und FPGA

FPGA

• Mikrochip - Produzenten • Simulation eines Chips in Entwicklung

• High Performance Computing • Spezielle Algorithmen

• Digitaltechnik • Filter, Signalanalyse

• Rüstungsindustrie • Flugstabilisierung, Cruise-Missile

Wer verwendet FPGAs

16

Maximilian Bandle

CPU, GPU und FPGA

FPGA

• Parallelität • Jeder Prozess im FPGA arbeitet parallel zu allen anderen

• Pipelining • Jeder Datensatz selbst wird sequentiell bearbeitet

• Anpassung an Daten • Je nach Problem kann die Hardware angepasst werden

• Datendurchsatz • Daten liegen direkt an den Operatoren (Kein Programm /

Betriebssystem dazwischen)

Vorteile

17

Maximilian Bandle

CPU, GPU und FPGA

FPGA

• Ungenutzte oder schlecht genutzte Kapazität • Alle (auch wenig genutzte) Optionen sind in Hardware synthetisiert

• Warten auf Zeit oder Daten • Je mehr gewartet werden muss desto geringer ist die Performanz

• Langsame Taktung • Maximal 500 MHz (ca Faktor 5-10 langsamer als CPU)

➡ Je ähnlicher das FPGA einem Prozessor wird, desto schlechter ist die Performanz

Nachteile

18

Maximilian Bandle

CPU, GPU und FPGA

FPGA

• Kombination von Prozessor und FPGA auf einem Board • FPGA in Kombination mit ARM Chip • Aufteilen der Aufgaben

• Prozessor mit integriertem FPGA Coprozessor • Angekündigt von Intel nach Kauf von Altera • Direkter verbunden - vergleichbar zu integrierter GPU

Aktuelle Entwicklungen

19

Maximilian Bandle

CPU, GPU und FPGA

FPGA

• Direkt im AnschlussFPGA Anwendung: Lighthouse Tracking

• Nächste Woche Kurzeinführung VHDL: FPGA Programmierung

Ausblick

20