Umsetzung in aktuellen Prozessoren



Ähnliche Dokumente
CISC ( Complex Instruction Set Computer ) mächtige Instruktionssätze zur Unterstützung von Hochsprachenkonstrukten

früher: CISC ( Complex Instruction Set Computer )

Teil 1: Prozessorstrukturen

Teil 1: Prozessorstrukturen

Die Mikroprogrammebene eines Rechners

Codesigned Virtual Machines

in vielen technischen und wissenschaftlichen Anwendungen erforderlich: hohe Präzision große Dynamik möglich durch Verwendung von Gleitkommazahlen

Kap 4. 4 Die Mikroprogrammebene eines Rechners

moderne Prozessoren Jan Krüger

Computer-Architektur Ein Überblick

Algorithmen zur Integer-Multiplikation

Binäre Division. Binäre Division (Forts.)

Mikroprozessor als universeller digitaler Baustein

Lösungsvorschlag zur 4. Übung

Einführung in die Programmierung mit C++

Musterlösung 2. Mikroprozessor & Eingebettete Systeme 1

Computerarithmetik ( )

Teil VIII Von Neumann Rechner 1

Zahlendarstellungen und Rechnerarithmetik*

Installationsanleitung

Musterlösung 2. Mikroprozessor & Eingebettete Systeme 1

Informationssysteme Gleitkommazahlen nach dem IEEE-Standard 754. Berechnung von Gleitkommazahlen aus Dezimalzahlen. HSLU T&A Informatik HS10

4D Server v12 64-bit Version BETA VERSION

Technische Informatik 2 Adressierungsarten

Grundlagen der Parallelisierung

Einführung in die Systemprogrammierung

Optimierungen der Lattice Boltzmann Methode auf x86-64 basierten Architekturen

Instruktionssatz-Architektur

Seminar Parallele Rechnerarchitekturen SS04 \ SIMD Implementierung aktueller Prozessoren 2 (Dominik Tamm) \ Inhalt. Seite 1

Binäre Gleitkommazahlen

Hardware/Software-Codesign

A1 Desktop Security Installationshilfe. Symantec Endpoint Protection 12.1 für Windows/Mac

1. Das dekadische Ziffernsystem (Dezimalsystem) Eine ganze Zahl z kann man als Summe von Potenzen zur Basis 10 darstellen:

Computeranwendung in der Chemie Informatik für Chemiker(innen)

Anleitung zur Nutzung des SharePort Utility

Processors for mobile devices

Teil 1: Prozessorstrukturen

L3. Datenmanipulation

Grundlagen der Technischen Informatik Wintersemester 12/13 J. Kaiser, IVS-EOS

Anleitung zur Nutzung des SharePort Plus

Einführung in die Informatik I

BERNINA ArtLink V7.0N Installationsanleitung der Sticksoftware

Das Rechnermodell - Funktion

Java Einführung Operatoren Kapitel 2 und 3

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 16

Grundlagen der Rechnerarchitektur

Dezimalkomma (decimal point) rechts von Stelle mit Wertigkeit 100 nachfolgende Stellen haben Wertigkeit 10-1, 10-2, etc.

OpenMP am Beispiel der Matrizenmultiplikation

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Mikrocontroller Grundlagen. Markus Koch April 2011

Systemvoraussetzungen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Rechner Architektur. Martin Gülck

Übersicht. Nebenläufige Programmierung. Praxis und Semantik. Einleitung. Sequentielle und nebenläufige Programmierung. Warum ist. interessant?

2 Darstellung von Zahlen und Zeichen

Einführung in die Programmierung

Visio Grundlagen. Linda York. 1. Ausgabe, Oktober 2013

Galaxy V7 in Deutsch ist ab sofort frei gegeben. Die Versionen Französisch, Italienisch und Englisch folgen spätestens Ende Oktober 2012.

Kapitel 1. Zahlendarstellung. Prof. Dr. Dirk W. Hoffmann. Hochschule Karlsruhe w University of Applied Sciences w Fakultät für Informatik

INDEX. Netzwerk Überblick. Benötigte Komponenten für: Windows Server Windows Server 2008 R2. Windows Server 2012

Gleitkommaarithmetik und Pivotsuche bei Gauß-Elimination. Lehrstuhl für Angewandte Mathematik Wintersemester 2009/

3 Rechnen und Schaltnetze

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Technische Voraussetzungen

5. Übung: Binäres Rechnen und Fließkommazahlen Abteilung Verteilte Systeme, Universität Ulm

Instruktionen pro Takt

Das Maschinenmodell Datenrepräsentation

Hinweise zur Installation der USB Treiber für Windows XP 32bit

Windows Server 2008 (R2): Anwendungsplattform

Anleitung mtan (SMS-Authentisierung) mit SSLVPN.TG.CH

Technische Voraussetzungen

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München

Wir unterscheiden folgende drei Schritte im Design paralleler Algorithmen:

Installation von Solid Edge ST4

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Ausgewählte Kapitel eingebetteter Systeme

Zahlensysteme: Oktal- und Hexadezimalsystem

Grundlagen der Rechnerarchitektur

Daten verarbeiten. Binärzahlen

Hochschule München, FK 03 FA SS Ingenieurinformatik

Client-Systemanforderungen für Brainloop Secure Dataroom ab Version 8.30

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

Technische Informatik - Eine Einführung

Systemvoraussetzungen GS-Programme 2012

Technische Erläuterungen

Daten, Informationen, Kodierung. Binärkodierung

, WS2012 Übungsgruppen: Mo.,

Johann Wolfgang Goethe-Universität

Übungen zu C++ Kapitel 1

Prozessor HC680 fiktiv

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Das Prinzip an einem alltäglichen Beispiel

Einführung in die C++ Programmierung für Ingenieure

Zeichen bei Zahlen entschlüsseln

Berühmt berüchtigte Softwarefehler. Der Pentium Division-Bug. vorgetragen von: Sebastian Knieschewski

EXPANDIT. ExpandIT Client Control Kurzanleitung. utilities. be prepared speed up go mobile. Stand

OS Datensysteme GmbH

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

Systemvoraussetzungen: DOMUS NAVI für DOMUS 4000 Stand 02/15

Elektrische Logigsystem mit Rückführung

Transkript:

Kapitel 8: Umsetzung in aktuellen Prozessoren 4 Realisierung elementarer Funktionen Reihenentwicklung Konvergenzverfahren 5 Unkonventionelle Zahlensysteme redundante Zahlensysteme Restklassen-Zahlensysteme logarithmische Zahlensysteme 6 Intervall-Arithmetik 7 Rechnen mit Zahlen beliebig hoher Stellenzahl 8 Umsetzung in aktuellen Prozessoren x86 Gleitkomma-Einheiten in AMD Athlon und Intel Pentium SIMD-Einheiten: MMX, SSE, 3DNow! und SSE2 1 Umsetzung in aktuellen Prozessoren Fallstudie 1: SIMD-Einheiten moderner Mikroprozessoren Architekturen Befehlssätze Fallstudie 2: IA-32 IA-32 FPU Intel Pentium 4 AMD Athlon XP Fallstudie 3: Itanium 2 Architektur FPU 2

Fallstudie 1: SIMD-Einheiten Idee: viele Berechnungen benötigen nicht die volle Wortbreite b eines modernen Prozessors Abbildung von p Subworten der Breite b/p auf ein Datenwort und Implementierung von datenparallelen Operationen, die auf allen p Subworten simultan arbeiten Beispiel: Berechnung der quadrierten Euklidischen Distanz x j n i 1 ( v i c ij ) 2 auf einer SIMD-Einheit für p=4 (SIMD = Single Instruction, Multiple Data) 3 Architektur von SIMD-Einheiten verfügbar seit Parallelitätsgrad p SIMD-Datentypen Anzahl Register Registerbreite b Anzahl Instr. Latenzzeit arithm. Operationen (Takte) MMX Pentium II 2 8 8/16/32 Bit 8 (FP) 64 Bit 57 2 : 8 SSE Pentium III 4 8 (neu) 128 Bit 70 4 6 /, : 22 32 SSE2 Pentium 4 2 16 8/16/32/64 Bit / double 8 (SSE) 128 Bit 144 2 8 /, : 35 62 3DNow! (AMD) K6/Athlon 2 8 (FP) 64 Bit 21/45 3 4 AltiVec (Motorola) PowerPC G4 4 16 8/16/32 Bit 32 (neu) 128 Bit 162 1 5 algorithmische Voraussetzungen für eine effiziente Nutzung: eingeschränkte Präzision ausreichend Operationen auf p benachbarten Vektorkomponenten x i, x i+1,..., x i+p 1 erforderlich 4

Instruktionssätze von SIMD-Einheiten 8 8 16 16 32 32 64 64 FP FP 16 16 32 32 FP FP 16 16 16 16 16 + 16 16 FP FP FP min / max Reduktion mit load / store pack merge / unpack permutation MMX 8[m], 8[sat] 16[m], 16[sat] 32[m] 16[h], 16[l] 32[m] 64 8,16[l,sat] 8,16,32 SSE 8,16, 16,32,128 32 16,32 SSE2 8[m], 8[sat] 16[m], 16[sat] 32[m] 64[m] double 16[h], 16[l] 64 double 32[m] 8,16,double 16,32,64,128 8,16[l,sat] 8,16,32,64 16,32,64 3DNow! (AMD) 16[h,r] 8,16, 16,64 32 16,32 AltiVec (Motorola) 8[m], 8[sat] 16[m], 16[sat] 32[m], 32[sat] 16[h,r], 32 16[h,r,sat] 32[sat] 8,16,32, 8,16,32 16,32,128 8,16[l,sat] 16,32 8 5 SIMD-Multiplikation Beispiel: Implementierung einer 16 16 32 Bit Festkomma-Multiplikation auf SIMD-Einheiten 6

Programmierung von SIMD-Einheiten Möglichkeiten der Programmierung: Maschinensprache Inline-Assembling Bibliotheken allgemein, z.b. Small Matrix Library für SSE anwendungsspezifisch, z.b. vdsp für AltiVec Gnu C Compiler ab Version 3.1: SIMD-Datentypen und Makros für MMX, SSE, 3DNow! und AltiVec Intel C++ Compiler ab Version 6.0: SIMD-Datentypen und Makros für MMX, SSE und SSE2 Vektorisierer für einfache Schleifen keine prozessorunabhängige Programmierung möglich! 7 Fallstudie 2: IA-32 FPU in der IA-32 Software-Architektur ist folgende Gleitkomma- Einheit definiert (auch als x87 FPU bezeichnet) : Programmiermodell besteht aus: Stack aus acht 80-Bit Registern Status-Register enthält u.a. Zeiger auf Stack (TOP) arithmetische Operationen verknüpfen Elemente an den Positionen TOP und TOP +i Tag-Register kennzeichnet NaN, Zero, Valid, Empty für heutige High-Performance CPUs nicht mehr adäquat! (zu wenige Register, kein IEEE-Standard, Overhead für Stack-Manipulation) 8

Intel Pentium 4 Architektur des Intel Pentium 4: Superskalarität: jeweils 3 -Instruktionen aus Trace-Cache werden auf 6 Funktionseinheiten verteilt Integer-Arithmetik: 2 ALU 1 Slow ALU 128 interne Register FP-Arithmetik: 1 FMUL/FADD 1 FSTORE 128 interne FP-Register 9 Intel Pentium 4 (Forts.) Instruktionspipeline: 20-stufig für Integer- und Gleitkomma-Arithmetik Ausführungszeiten einiger arithmetischer Befehle mit Register- Operanden: Integer-Multiplikation (auf FPU): 14 Takte, Durchsatz: 1 je 3 Takte Integer-Division: 56-70 Takte, Durchsatz: 1 je 23 Takte sonstige Integer-Befehle: i.a. im Mittel ½ Takt, Durchsatz: 2 je Takt Gleitkomma-Addition: 5 Takte, Durchsatz: 1 je Takt Gleitkomma-Multiplikation: 7 Takte, Durchsatz: 1 je 2 Takte Gleitkomma-Division (32/64 Bit): 23/38 Takte Berechnung von sqrt(x): (32/64 Bit): 23/38 Takte Berechnung von sin(x), cos(x), tan(x): 160-240 Takte Berechnung von 2 x 1: 90-150 Takte Berechnung von y ld(x): 140-190 Takte kein Pipelining 10

AMD Athlon XP Architektur des AMD Athlon XP: Superskalarität: 3-fache Befehls- Dekodierung, parallele Ausführung auf 9 Funktionseinheiten Integer-Arithmetik: 3 x ALU FP-Arithmetik: 1 FMUL 1 FADD 1 FSTORE 88 FP-Register 11 AMD Athlon XP (Forts.) Instruktionspipeline: 10-stufig für Integer-Arithmetik 15-stufig für Gleitkomma-Arithmetik Ausführungszeiten einiger arithmetischer Befehle mit Register- Operanden (Latenz-Zeit, Durchsatz i.a. 1 je Takt!) Integer-Multiplikation (16/32 Bit): 6/7 Takte Integer-Division (16/32 Bit): 24/40 Takte, kein Pipelining sonstige Integer-Befehle: i.a. 1 Takt Gleitkomma-Addition (32/64 Bit): 4 Takte Gleitkomma-Multiplikation (32/64 Bit): 4 Takte Gleitkomma-Division (32/64 Bit): 16/24 Takte Berechnung von sqrt(x): (32/64 Bit): 19/27 Takte Berechnung von sin(x), cos(x), tan(x): 96-216 Takte Berechnung von 2 x 1: 99 Takte Berechnung von y ld(x): 116-126 Takte kein Pipelining 12

Intel Pentium 4 vs. AMD Athlon XP Leistung bei Linpack Benchmark: (für n n-matrix) Leistung der FPU bei kleinem n maßgebend bei großem n ist Speicherleistung von Bedeutung Quelle: www.tech-report.com 13 Fallstudie 3: Intel Itanium 2 Itanium 2 Architektur: 6 Integer- ALUs 128 Int-Register 2 FPUs 128 FP-Register 14

Intel Itanium 2 (Forts.) EPIC-Konzept: 128-Bit Instruktionswort ( Bundle ) drei 41-Bit Instruktionen ein 5-Bit Template, in dem festgelegt wird, 1) welche Instruktionen unabhängig und somit parallel ausführbar sind (durch Einfügen eines Stop Bits S zwischen abhängigen Befehlen) 2) von welchen Funktionseinheiten die drei Instruktionen ausgeführt werden (M=Memory, I=Complex Integer, A=Integer ALU, F=Floating Point, B=Branch) 6-fache Befehlsparallelität: Itanium 2 Prozessor kann bis zu 6 Befehle aus zwei Bundles gleichzeitig beginnen 15 Intel Itanium 2 (Forts.) Instruktionspipeline 8-stufig für Integer-Arithmetik 11-stufik für Gleitkomma-Arithmetik Prädikate: fast alle arithmetischen Instruktionen mittels Prädikate bedingt ausführbar Beispiel: (p1) add r1=r2,r3 erspart Verzweigungen 64 Prädikat-Register (1 Bit) für Ergebnisse von Vergleichsbefehlen Integer-ALU keine Unterstützung von Multiplikation und Division! ( FPU) andere arithmetische Operationen wahlweise auf 1 64 Bit oder SIMD-artig auf in 64 Bit gepackte Daten 16

Intel Itanium 2 (Forts.) FPU: zwei FP-Befehle je Takt möglich, da zwei FPUs vorhanden 82 Bit Intern-Darstellung (Vorzeichen, 17 Bit Exponent, 64 Bit Mantisse) 128 FP-Register f0 bis f127 (mit f0 = 0.0, f1 = 1.0 fest verdrahtet) Hardware-Unterstützung für FMA-Befehl (FP Multiply and Accumulate) ohne Rundung des Zwischenergebnisses 4-stufige FP-Pipeline keine direkte Hardwareunterstützung für FP-Division und sqrt(x)-funktion, statt dessen: 1) FRCPA-Befehl (FP Reciprocal Approximation) berechnet näherungsweise 1/b mit Fehler 2 8 2) FRSQRTA-Befehl (FP Reciprocal Square Root Approximation) berechnet näherungsweise 1/ b mit Fehler 2 8 keinerlei Hardware-Unterstützung für weitere elementare Funktionen! 17 Vergleich Intel Itanium 2 / AMD Opteron Superskalarität Pipelinestufen ISA Reorder Buffer Size Funktionseinheiten SIMD-Erweiterungen Register Caches (I, D, L2, L3) Anzahl Transistoren E/A-Bandbreite Taktfrequenz SPECint2000 SPECfp2000 Itanium 2 6-fach 8 (11 für FP-Instr.) IA-64 ( in order ) 6 I-ALUs, 2 FPUs, 4 Load/Store 6 I-SIMD, 2 FP-SIMD 128 Int, 128 FP 16k, 16k, 256k, 1.5M-6M 220M 6,4 GByte/s 1.3-1.5 GHz 1322 (1.5 GHz) 2119 (1.5 GHz) Opteron 3-fach 12 (17 für FP-Instr.) x86-64 72 3 I-ALUs, 3 FPUs, 2 Load/Store MMX + 3DNow! + SSE +SSE2 16 Int, 8 FP, 16 SIMD 64k, 64k, 1M 100M 6,4 GByte/s Speicher + 3 Hypertransport (3.2 GByte/s je R.) 1.4-2.2 GHz 1405 (2.2 GHz) 1505 (2.2 GHz) 18