+ All Categories
Home > Documents > CPU, GPU und FPGA - eti/Vorlesung/WS1718/Informationsmaterial/... · Maximilian Bandle CPU, GPU und...

CPU, GPU und FPGA - eti/Vorlesung/WS1718/Informationsmaterial/... · Maximilian Bandle CPU, GPU und...

Date post: 06-Feb-2018
Category:
Upload: phamhanh
View: 227 times
Download: 3 times
Share this document with a friend
20
CPU, GPU und FPGA CPU, GPU und FPGA Maximilian Bandle, Bianca Forkel 21. November 2017
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


Recommended