Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Hardware/Software-Codesign

Ähnliche Präsentationen


Präsentation zum Thema: "Hardware/Software-Codesign"—  Präsentation transkript:

1 Hardware/Software-Codesign
Performance Hardware/Software-Codesign

2 Bitcoin Mining Bitcoin Transaktionen werden in Blöcken zusammengefasst
Miner verifizieren die Blöcke Rate eine Zahl (Nonce) Führe SHA-256 aus auf einen Block mit Nonce Vergleiche ob Ergebnis < Threshold Wiederhole

3 Bitcoin Mining ArtForz 2010 Mitte Juli: erster Block
25. Juli: 80 MHash/s 4% der Blöcke der letzten 6 Tage 13. Aug: 450 MHash/s 10% der Blöcke 23. Sept: 1.5 GHash/s 15-20% laut Forum 3. Okt: 2 GHash/s 20-30% aller Bitcoins pro Tag 15. Dez: 15,75GHash/s

4 Bitcoin Mining “We should have a gentleman’s agreement to postpone the GPU arms race as long as we can for the good of the network.” - Satoshi Nakamoto, Dez 2009 “Seriously? What hardware is that?” - Satoshi Nakamoto, Okt 2010

5 Bitcoin Mining

6 Bitcoin Mining 2011/12: Problemmigration 2012: ASICs ASIC-Farms
Hochleistung-Farms nicht profitabel FPGA-Lösungen bieteten mehr GHash/s zu geringeren Stromkosten Etwa das fünffache an Effizienz 2012: ASICs Drängt alles Andere vom Markt Zehnfache Effizienz zB SC Mini Rig erreichte 1500 GHash/s ASIC-Farms

7 Was ist besser: CPU, GPU, FPGA oder ASIC?
Je nach Anwendung: Kosten Time-to-Market Platz Stromaufnahme Wartbarkeit Oft ist eine Kombination günstig

8 Warum liegen GPUs so im Trend?
Allgegenwärtigkeit OpenCL, CUDA Aufgabenbereiche Lineare Algebra Partielle Differentialgleichungen Wettervorhersage Quantenmechanik Molekulare Modellierung Kombinatorische Logik

9 FPGA vs ASIC FPGA: Time-to-market Designkomplexität Wartbarkeit
Upfront-Kosten ASIC: Full-Custom Unitkosten Chipfläche Geschwindigkeit Strombedarf

10 Wie viel schneller ist eine ASIC?
Zuchowski et al. 2003: 250nm bis 90nm Lookup Table Speedup von 12 bis 14 Wilton et al. 2005: Teilbereich in ASIC ersetzt durch FPGA Speedup von 2 Kuon und Rose 2006: 90nm CMOS SRAM-FPGA, 90nm standard-cell ASIC Benchmarks: AES, Raytracer, … Nur Logikelemente: Speedup von 3,2

11 Was versteht man unter Performance?
Geworbene Performance-Steigerung durch Übertaktung des ASUS ROG Rampage V Edition 10

12 Was versteht man unter Performance?
Latenz Response Time CPU Time User vs System CPU Time? MIPS Unterschiedliche Instruktionen Abhängig von CPI Benchmark SPEC: perl, bzip2, gcc, mcf, ...

13 Wie beeinflusst man Performance?
Intel Core Duo Intel Pentium 4

14 Wie beeinflusst man Performance?
Taktfrequenz Execution Optimization Caching Parallelisierung Abstraktion

15 Taktfrequenz

16 Taktfrequenz Critical Path kürzen Kapazitäten verkleinern
Physikalische Grenzen? Spannung erhöhen Temperatur? Degradierung?

17 Wie beeinflusst man Performance?
Taktfrequenz Execution Optimization Pipelining Branch Prediction Out-of-Order Execution Effiziente Operationen Caching Parallelisierung Abstraktion

18 Pipelining Fließband für Instruktionen Throughput, nicht Latenz
Taktperiode bestimmt durch aufwändigste Teilaufgabe 1961 IBM Stretch Fetch, Decode, Execute

19 Pipelining Classic RISC ARM Intel
Fetch, Decode, Execute, Memory, Writeback ARM ARM7: Fetch, Decode, Execute Krait: 11 Stages Intel 15+ Stages Dynamisches Scheduling Wert auf Branch Prediction

20 Pipelining Data Hazards

21 Wie beeinflusst man Performance?
Taktfrequenz Execution Optimization Pipelining Branch Prediction Out-of-Order Execution Effiziente Operationen Caching Parallelisierung Abstraktion

22 Branch Prediction Instruktionen werden zu jedem Takt geladen
Wo werden Branches ausgewertet?

23 Branch Prediction 2-bit Counter Pattern History Table
Nur gut für sehr konsistente branches Pattern History Table Global oder lokal n-bit History (Schieberegister) 2n 2-bit Counter

24 Branch Prediction Loop Counter Return Stack Buffer
Speichert pro Branch: Ob Branch Schleifenverhalten aufweist Periode der Schleife und jetzigen Standpunkt Taken/not taken bei Schleifenende Return Stack Buffer LIFO von return-Adressen Instruktionen können nach CALL geladen werden, bevor RET Instruktion erfolgt Muss gegen return-Adresse am Stack kontrolliert werden

25 Branch Prediction Beispiel Nehalem:
17 Taktzyklen Misprediction Penalty Loop- und nicht-Loop-Branches separat 32 Loop Counter für Periode bis zu 64 Nested Loops werden richtig predicted Zwei 18-bit History für nicht-Loop-Branches Return Stack Buffer der Größe 16

26 Wie beeinflusst man Performance?
Taktfrequenz Execution Optimization Pipelining Branch Prediction Out-of-Order Execution Effiziente Operationen Caching Parallelisierung Abstraktion

27 Out-of-Order Execution
Instruktionen warten in einem Buffer Ergebnisse von Operationen warten in einem Buffer Chip designers are under so much pressure to deliver ever-faster CPUs that they’ll risk changing the meaning of your program, and possibly break it, in order to make it run faster. - Herb Sutter, The Free Lunch Is Over

28 Wie beeinflusst man Performance?
Taktfrequenz Execution Optimization Pipelining Branch Prediction Out-of-Order Execution Effiziente Operationen Caching Parallelisierung Abstraktion

29 Effiziente Operationen
Optimierte Algorithmen vorhandene Hardware Ergebnismenge Ergebnisfolge int sum = 0; for(int i = 1; i <= n; i++) { sum += i; } return sum; return n*(n+1)/2; return sum_table[n]; sum += n; return sum;

30 Effiziente Operationen
Compileroptimierung Peephole ersetzt mehrere/längere Instruktionen durch einfachere Local strukturiert Basic Blocks um Loop Loop unrolling, invariant code motion, distribution, … Interprocedural Inlining, constant propagation, … Language-dependent Machine-dependent zB XOR a, a um einen Register auf 0 zu setzen

31 Effiziente Operationen
Beispiele aus gcc –O, -O2, -O3 -fomit-frame-pointer -foptimize-strlen -fipa-cp -ftree-loop-distribution -fprefetch-loop-arrays -fguess-branch-probability -funroll-all-loops

32 Effiziente Operationen
Treiberauswahl Benchmarking von nVidia GTX 480 Treibern in Just Cause 2

33 Effiziente Operationen
Realisierung in Hardware AES Verschlüsselung x86 Befehlssatzerweiterung 2008 FPU Library vs Coprozessor vs integriert ARM Jazelle: Hardware-unterstütze JVM

34 Wie beeinflusst man Performance?
Taktfrequenz Execution Optimization Caching Parallelisierung Abstraktion

35 Caching Optimierung der Speicherzugriffe Hit/Miss Hierarchie
Register (~1 ns) L1 Cache (2-8 ns) L2 Cache (5-12 ns) RAM (10-60 ns) HDD (3-10 ms) Write-Through Write-Back

36 Caching

37 Caching

38 Wie beeinflusst man Performance?
Taktfrequenz Execution Optimization Caching Parallelisierung Multicore Hardware Software Abstraktion

39 Multicore “More than Moore” Hyperthreading Multicore
Mai 2004 streicht Intel das Tejas-Projekt Hyperthreading Parallelität mehrerer Threads auf einem Kern Multicore Mehrere Kerne Unterstützung von Software/Betriebssystem nötig

40 Wie beeinflusst man Performance?
Taktfrequenz Execution Optimization Caching Parallelisierung Multicore Hardware Software Abstraktion

41 Hardware Vervielfachung der Einheiten Verteilte Systeme
zB Vektorarithmetik (AVX, MMX, SIMD) Verteilte Systeme Overhead durch Message-Passing “Jupiter” TUWien 36x2 8-Core Opteron 6134 Verbunden über Ethernet Switch

42 Wie beeinflusst man Performance?
Taktfrequenz Execution Optimization Caching Parallelisierung Multicore Hardware Software Abstraktion

43 Software Revolution der Entwicklungsparadgigmen
Zunehmend aufwändige Programme; die Hardware kommt nicht mit Abstraktion für Developer: Threads, Fork, … Cilk, pThreads, MPI, … Nachteile: Synchronisierung Race Conditions Deadlocks Amdahl’s Law

44 Wie beeinflusst man Performance?
Taktfrequenz Execution Optimization Caching Parallelisierung Abstraktion

45 Abstraktion Memory Protection Scheduling Unified Shader Model
Verbessert Wall-Clock Execution Time Unified Shader Model Jede Einheit kann alle Befehle ausführen Notwendig durch sich ändernde Anforderungen DX11/DX12 Draw Calls Schlechtes Batching führte zu Stutters

46 Quellen Preshing.com. A Look Back at Single-Threaded CPU Performance cpu-performance/ Herb Sutter. The Free Lunch Is Over Joel Hruska. The Death of CPU scaling: From one core to many – and why we’re still stuck https://www.extremetech.com/computing/ the-death-of- cpu-scaling-from-one-core-to-many-and-why-were-still-stuck Mark Bohr et al. The High-k Solution solution D. Patterson, J. Hennessey. Computer Architecture and Design

47 Quellen Gnu.org. Options That Control Optimization.
https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html Arm Architecture Overview. https://web.eecs.umich.edu/~prabal/teaching/eecs373- f11/readings/ARM_Architecture_Overview.pdf UMB.edu. CS641 Class 25 Pipelining. Jeff Brown. Pipelining: Branch Hazards https://cseweb.ucsd.edu/classes/su06/cse141/slides/s11- chazard_adv-1up.pdf Agner Fog. The microarchitecture of Intel, AMD and VIA CPUs

48 Quellen cs.Washington.edu. 2006.
https://courses.cs.washington.edu/courses/csep548/06au/lectures /introOOO.pdf Jon Stokes. Understanding CPU caching and performance J. Palacios, J. Triska. A Comparison of Modern GPU and CPU Architectures: And the Common Convergence of Both Scott Michaud. What Exactly is a Draw Call (and What Can It Do)? https://www.pcper.com/reviews/Editorial/What-Exactly-Draw-Call- and-What-Can-It-Do I. Kuon, J. Rose. Measuring the Gap between FPGAs and ASICs

49 Quellen Xilinx. FPGA vs. ASIC. https://www.xilinx.com/fpga/asic.htm
Hilbert Hagedoorn. Radeon HD 5970 Overclocking Guide https://www.guru3d.com/articles-pages/radeon-hd overclocking-guide,1.html Vincent Hindriksen. The 13 application areas where OpenCL can be used https://streamcomputing.eu/blog/ /the-application- areas-opencl-can-be-used/ Anand Lal Shimpi. Nehalem Part 3: The Cache Debate, LGA and the 32nm Future Forklog.net. The Brief History of Bitcoin Mining: How It All Started

50 Quellen Tim Swanson. How ArtForz changed the history of Bitcoin mining


Herunterladen ppt "Hardware/Software-Codesign"

Ähnliche Präsentationen


Google-Anzeigen