5 Weiterführende Rechnerarchitekturen



Ähnliche Dokumente
Die Mikroprogrammebene eines Rechners

Johann Wolfgang Goethe-Universität

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Instruktionssatz-Architektur

J.5 Die Java Virtual Machine

Einführung in die Systemprogrammierung

Zahlensysteme: Oktal- und Hexadezimalsystem

Proseminar Technische Informatik A survey of virtualization technologies

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Computerarithmetik ( )

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Robot Karol für Delphi

Lösungsvorschlag zur 4. Übung

Technische Informatik 2 Adressierungsarten

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Einführung in PHP. (mit Aufgaben)

11.0 Rechnerarchitekturen

Version 0.3. Installation von MinGW und Eclipse CDT

4D Server v12 64-bit Version BETA VERSION

Diplomarbeit Antrittsvortrag

Mikrocomputertechnik. Adressierungsarten

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

2.2 Rechnerorganisation: Aufbau und Funktionsweise

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick

Lizenzierung von System Center 2012

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Installationsanleitung

10 Erweiterung und Portierung

Grundlagen der Rechnerarchitektur

Im Original veränderbare Word-Dateien

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

Lizenzierung von SharePoint Server 2013

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn

Rechner Architektur. Martin Gülck

Übung: Verwendung von Java-Threads

TIMI: Technische Informatik für Medieninformatiker

Grundlagen der Parallelisierung

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Mikroprozessor als universeller digitaler Baustein

Codesigned Virtual Machines

Speicher in der Cloud

I.1 Die Parrot Assemblersprache


Maik Zemann. Flynn s Taxonomie. Parallele Rechnerarchitekturen SS 2004 Technische Fakultät Universität Bielefeld. 3. Mai 2004 Flynn's Taxonomie 1

Zählen von Objekten einer bestimmten Klasse

Automatisches Parallelisieren

ASD ZSS. RZ-Süd (LfStaD) Internet

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

OPERATIONEN AUF EINER DATENBANK

OLXTeamOutlook 1.5 für Outlook 2003, 2002/XP, 2000 und 97/98

Java Virtual Machine (JVM) Bytecode

Ein Scan basierter Seitenangriff auf DES

2. Negative Dualzahlen darstellen

Hochschule Düsseldorf University of Applied Sciences HSD RISC &CISC

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13

Java für Embedded Systems

Installation der SAS Foundation Software auf Windows

Assembler und Hochsprachen

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Programmierparadigmen. Programmierparadigmen. Imperatives vs. objektorientiertes Programmieren. Programmierparadigmen. Agenda für heute, 4.

Lizenzierung von SharePoint Server 2013

L3. Datenmanipulation

Datensicherung. Beschreibung der Datensicherung

Woraus besteht ein Bild? (c) Winfried Heinkele

Benutzerkonto unter Windows 2000

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Reporting Services und SharePoint 2010 Teil 1

Buddy - Algorithmus Handbuch für Endnutzer Stand

Monitore. Klicken bearbeiten

Lernwerkstatt 9 privat- Freischaltung

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Einführung in. Logische Schaltungen

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Windows 8 Lizenzierung in Szenarien

Mikrocontroller Grundlagen. Markus Koch April 2011

CADEMIA: Einrichtung Ihres Computers unter Windows

Programmiersprachen und Programmierkonzepte

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Der Support für Windows Server 2003 endet endgültig alles was Ihnen dann noch bleibt ist diese Broschüre.

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

1. Übung - Einführung/Rechnerarchitektur

Einführung in Eclipse und Java

4 Objektorientierte Programmierung mit Java 4.1 Java-Grundlagen

Grundlagen verteilter Systeme

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Computer-Architektur Ein Überblick

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Grundbegriffe der Informatik

QUICK INSTALLATION GUIDE

Transkript:

5 Weiterführende Rechnerarchitekturen 5.1 Globale Rechnerklassifikation 5.2 Lokale Prozessor-Klassifikation Befehlssatz Architekturen Stack-Architektur Akkumulator- Architektur Allgemeinzweck-Register-Architekturen Klassifikation nach Umfang und Komplexität der Befehle CISC RISC 5.3 Parallelrechner-Architekturen (Klassifizierung nach Flynn) SISD: Single Instruction Single Data SIMD: Single Instruction Multiple Data MISD: Multiple Instruction Single Data MIMD: Multiple Instruction Multiple Data Ausführungsbeispiele 5.4 Architektur virtueller Maschinen 5.5 Ausblick Folie 193 5.1 Globale Rechnerklassifikation Personal Computer, Mikrorechner: Weitgehende Standardisierung BS: DOS, WINDOWS, OS/2, MAC-OS CISC / RISC - Prozessoren Workstation: Hauptanwendung: Techischwissenschaftlicher Bereich BS: UNIX-Derivate, LINUX RISC-Prozessoren Minicomputer (historisch): Mehrplatzfähig, Prozessrechner, Bürocomputer (Abteilungsrechner) Server: Dateiserver / Rechenserver E/A-orientierte Maschinen Mehrprozessorsysteme Massenspeicher meist redundant Verteilte Server Serverfarmen Großrechner (Mainframe): Einsatz in Rechenzentren Mehrprozessortechnik E/A-Kanäle mit eigenem Prozessor Batch-, Terminal- und Datenbanksysteme Superrechner Vektor- und/oder Parallelrechner, Ein oder mehre Prozessoren, z.b. Cray (SGI) T3D mit bis zu 512 Prozessoren Enge oder lose Prozessorkopplung Rechenintensive Anwendungen in Luftfahrttechnik, Automobilbau, Energiegewinnung, Meteorologie, Forschung Folie 194

5.2 Lokale Prozessor-Klassifikation Hinsichtlich der Art des Befehlssatzes können folgende Architekturen ( Befehlssatz-Architekturen ) unterschieden werden: Stack-Architektur Akkumulator-Architektur Allgemeinzweck-Register-Architekturen (General Purpose Register Architectures GPR) in den Ausprägungen: Register-Register-Maschinen Anwendung: RISC (auch Load-Store-Architektur genannt) Register-Speicher-Maschinen Anwendung: CISC Speicher-Speicher-Maschinen Bei realen Mikroprozessoren wird oft versucht, in eine vorherrschende Befehlssatz-Architektur die Vorteile anderer Befehlssatz Architekturen zu integrieren (Mischformen). Folie 195 Stack- und Akkumulator-Architektur Stack - Architektur CPU hat LIFO-Speicher (Stack), auf den man mit PUSH und POP zugreifen kann Es kann meist nur auf die oberste Speicherstelle des Stacks zugegriffen werden Sehr einfach, effiziente Codeumsetzung bei geklammerten mathematischen Ausdrücken möglich PUSH Op_A ; Op_A von Speicher Stack PUSH Op_B ; Op_B von Speicher Stack ADD ; Addiere obere Werte im Stack POP Op_C ; Op_C (= Op_A + Op_B) von StackSp. implizite Adressierung von A und B bei ADD Akkumulator - Architektur Ausgezeichnetes Register: Akku LOAD und STORE wirken nur auf Akku. Er ist als expliziter Operand an jeder Operation beteiligt. Jede Operation braucht nur eine Adresse Sehr kompaktes Befehlsformat LDA Op_A ; Op_A von Speicher Akku ADD Op_B ; Akku = Akku + Op_B STA Op_C ; Op_C (= Op_A + Op_B) AkkuSp. a a b ALU Ergebnis Speicher Speicher Stack Akku b ALU Ergebnis Folie 196

General Purpose Registers (GPR) - Architektur Register-Register-Architektur - RISC (auch Load-Store-Architektur) alle Operationen greifen nur auf Register zu, nur LOAD und STORE greifen auf Speicher zu 32 512 Register verfügbar einfaches Befehlsformat fester Länge alle Instruktionen brauchen in etwa gleich lange LOAD R1, Op_A ;lade Op_A aus Speicher in R1 LOAD R2, Op_B ;lade Op_B aus Speicher in R2 ADD R3, R1, R2 ;addiere R1 und R2, Ergbn.R3 STORE Op_C, R3 ;speicher R3Op_C (=Op_A + Op_B) Speicher Register a b ALU Ergebnis Register-Speicher-Architektur - CISC (Mischung von Akkumulator- und Load-Store-Architektur) Operationen greifen auf Register und/oder Speicher zu Befehlsformat variabler Länge mächtige Befehle stark unterschiedliche Zeiten für Instruktionsausführung MOV AX, Op_A ; Op_A von Speicher Register AX ADD AX, Op_B ; AX = AX + Op_B MOV Op_C, AX ; Op_C = AX (= Op_A + Op_B) Speicher Register a b ALU Ergebnis Folie 197 Anwendung der Prozessor-Klassen Art des Prozessors / Befehlssatzes CISC Complex Instruction Set Computer Mikroprozessoren Mikrocontroller Transputer DSP Digitale Signalprozessoren RISC Reduced Instruction Set Computer Mikroprozessoren Mikrocontroller Spezialprozessoren Numerische Co-Prozessoren Grafikcontroller / GPU I/O-Prozessoren Vorherrschende Architektur Princeton (Von Neumann) MIMD Harvard Princeton (Von Neumann) Stack-Architekturen / SIMD Princeton / Harvard / SIMD Meist wie Mikrocontroller Folie 198

Argumente für RISC An der Berkeley University wurden Anfang der 80er Jahre in einer höheren Programmiersprache geschriebene Programme untersucht. Dabei, und in weiteren Untersuchungen, stellte man u.a. folgendes fest: 20% des gesamten Befehlsvorrates waren für 60% des Mikrocodes des Steuerwerks verantwortlich, beanspruchten aber nur 0,2% der CPU-Zeit. Maschinenbefehle mit Speicherzugriff (Load, Store, Call, Return, usw.) beanspruchen den Großteil der CPU-Zeit. Einfachere Befehle wie Load, Store, Compare, Add, Sub werden häufiger angewendet als komplexere (anwendungsabhängig!). Komplexe Befehle benötigen eine aufwändigere Decodierung durch das Steuerwerk (i.d.r. mittels Mikroprogramm realisiert), werden also langsamer abgearbeitet. Festverdrahtete Steuerwerke arbeiten schneller als mikroprogrammierte Steuerwerke. Voraussetzung: Kleine Befehlssätze und regelmäßige Befehlsformate. Eingesetzte Compiler verwendeten selten die komplexen Befehle, sondern nur Subsets der umfangreichen Befehlssätze (dadurch werden die Compiler einfacher). Der Einsatz von optimierenden Compilern drängt die Programmierung in Maschinensprache zurück. Folie 199 Vergleich von CISC und RISC CISC Complex Instruction Set Computer Komplexe Instruktionen, Ausführung in mehreren Taktzyklen Jede Instruktion kann auf den Speicher zugreifen Kein oder wenig Pipelining Instruktionen werden von Mikroprogramm interpretiert Instruktionsformat variabler Länge Kompakter Code Viele Instruktionen und Adressierungsarten Die Komplexität liegt im Mikroprogramm Einfacher Registersatz RISC Reduced Instruction Set Computer Einfache Instruktionen, Ausführung in einem Taktzyklus. Nur Lade- und Speicherbefehle greifen auf den Speicher zu Intensives Pipelining Instruktionen werden durch festverdrahtete Hardware ausgeführt Instruktionen alle mit fester Länge Code weniger kompakt Wenige Instruktionen und Adressierungsarten Die Komplexität liegt im Compiler Umfangreiche Registersätze Nach A. S. Tanenbaum Zitat von Antoine de Saint-Exupery: Perfektion ist nicht erreicht, wenn nichts mehr hinzugefügt werden kann, sondern wenn nichts mehr übrig ist, was man weglassen kann. Folie 200

RISC Beispiel: POWER-PC (Apple/MacIntosh) PowerPC 603 Mikroprozessoren: z.b. von IBM als PPC603 Serie und von Motorola als MPC603 - Serie User Programmiermodell (Auszug): 64 Bit 32 oder 64 Bit (je nach Prozessorausf.) Bild: PowerPC ec603e (G2) von Motorola Weitere Beispiele für RISC-Prozessoren: Intel i860, SPARC, Alpha, MIPS R4000 (IBM, Motorola) Quelle: Motorola / 1998 Folie 201 Zusammenfassung der Eigenschaften von RISC Bis zu zweifache Leistung wie CISC bei gleicher Technologie ( Daumenregel, manchmal werden auch höhere Werte genannt). Die Realisierung des Steuerwerks kann durch festverdrahtete Logik erfolgen, da die Befehle einfach sind. Zur Minimierung von Speicherzugriffen werden viele CPU-interne Register vorgesehen. Es werden einfache, schnell zu verarbeitende Maschinenbefehle geschaffen, welche sich besonders gut für Pipelining eignen. Kennzeichen sind: Feste Befehlslänge und feste Bearbeitungszeit. Häufig vorkommende Anweisungen von Hochsprachenprogrammen werden möglichst effektiv auf einfache Maschinenbefehle abgebildet. Compiler für RISC-Prozessoren müssen neben der Umsetzung von Hochsprachen in Maschinenbefehle auch für die korrekte Beschickung und effiziente Ausnutzung der Befehlspipeline und der Register sorgen. Die Komplexität der Mikroprogramme von CISC-Prozessoren wird bei RISC-Prozessoren auf die Maschinenprogrammebene gehoben. Stand der Technik: Pentium (PC) CISC mit RISC-Ansätzen PowerPC (MacIntosh) RISC mit CISC-Erweiterungen Folie 202

5.3 Parallelrechnerarchitekturen M.J. Flynn (1966) betrachtet die Anzahl der gleichzeitig zu verarbeitenden Daten und gleichzeitig ausführbaren Instruktionen (also die Art des Befehlsund Datenstroms) und unterscheidet bei Rechnern genau vier Grundtypen: Single-Instruction, Single Data (SISD): Es gibt nur einen sequentiell abgearbeiteten Befehlsstrom und einen entsprechenden sequentiellen Datenstrom. Single-Instruction, Multiple Data (SIMD): Ein einziger sequentiell abgearbeiteter Befehlsstrom steuert einen mehrfachen parallelen Datenstrom. Multiple-Instruction, Single Date (MISD): Hier würden mehrere Steuerwerke einen einzigen Datenstrom steuern. Multiple-Instruction Multiple Data (MIMD): Hier geschieht die Abarbeitung sowohl befehls- als auch datenparallel. Befehlsstrom Datenstrom Single Data Mulitiple Data Single Multiple Instruction Instruction SISD SIMD MISD MIMD Literaturhinweise: Flynn, M.J.: Computer Architecture. Jones and Bartlet, 1995 Flynn, M.J.: Some Computer Organizations and their Effectiveness. IEEE Transactions on Computers 21, 1972, pp 948-960 Folie 203 SISD-Rechner Leitwerk Speicher Befehlsstrom Datenstrom Informationsfluss beim SISD-Rechner Zu den SISD-Rechnern zählen alle Einzelrechner, die eigenständig zur Lösung ihrer Aufgaben eingesetzt werden, also CISC- und RISC- Rechner die meisten Mikroprozessoren (Intel-Serie bis mindestens 80486) fast alle Mainframe-Computer Fast alle Minicomputer der 80er Jahre. Pipeline-Prozessoren werden allgemein dazugezählt. Bei einem "echten" SISD-Rechner werden auch die I/O-Vorgänge vom Prozessor selbst erledigt oder allenfalls durch intelligente Controller unterstützt. Folie 204

1 1 2 2 Leitwerk 3 Programmspeicher Datenstrom 3 n-1 n-1 Hauptspeicher SIMD-Rechner Befehlsstrom n n Es gibt nur einen Befehlsstrom, der mehrere parallele Datenströme steuert. Es existiert nur ein Leitwerk zur Befehlsentschlüsselung. Es werden parallel mehrere e benutzt. Das Verteilen der Befehlsinformation an die einzelnen Einheiten nennt man Instruction Broadcasting". Jede Verarbeitungseinheit verfügt über einen eigenen bidirektionalen Zugriffspfad zum Hauptspeicher. Damit liegt eine Erweiterung der von Neumann Struktur vor. Beispiele für SIMD-Rechner sind: Vektorrechner, wenn der Vektorrechner parallele e mit parallelem Speicherzugriff besitzt. Werden die einzelnen Komponenten des Vektors dagegen nur nacheinander auf die Stufen einer einzigen Pipeline projiziert, so ist die Maschine ein SISD-Rechner. VLIW-Prozessoren (very long instruction word processor). Ein einziger Befehl kann typischerweise 5 bis 10 Operatoren haben, die über parallel laufende Funktionseinheiten miteinander verbunden werden. Anwendung: Spezialprozessoren zur Komprimierung und Dekomprimierung von Bilddaten eingesetzt. MMX-Einheit von Intel-Prozessoren Folie 205 Finite-Elemente-Simulation auf einem Vektorrechner (Cray) Simulation von Blechumform-Prozessen: Erster Vektorrechner: Cray 1 Folie 206

Beispiel VLIW-Architektur Compiler wertet vorhandene Datenfluss-Informationen zur optimalen Ausnutzung der internen parallelen Einheiten aus. Statische Ansteuerung der Einheiten durch fest reservierte Teile des Instruktionswortes Compiler muss gesamte Parallelisierung vornehmen! Sehr langer Befehlscode, meist 128 oder 256 Bit (bis zu 1024 Bit). Große Speicherbandbreite und umfangreiche Registerbänke erforderlich. Very Long Instruction Word: Unterbefehl 1 Unterbefehl 2 ADD SUB VLIW Verarbeitungsstufen: VLIW holen Unterbefehl n MUL VLIW dekodieren Register lesen Register lesen Register lesen Operation ausführen () Register Schreiben Operation ausführen () Register Schreiben Operation ausführen () Register Schreiben Folie 207 MISD-Rechner Leitwerk 1 Leitwerk 2 Leitwerk 3 Leitwerk n - 1 Leitwerk n Befehlsstrom 1 2 3 n-1 n Datenstrom 1 2 3 Hauptspeicher n-1 n Programmspeicher Mehrere e bearbeiten einen Datenstrom ( Fließbandprinzip ) Struktur erinnert an Pipelining: Die Gesamtaufgabe wird in aufeinanderfolgende Teilschritte zerlegt. Daher werden die Pipelineprozessoren oft als MISD-Systeme bezeichnet (falls man sie nicht SISD zurechnet). Softwaretechnisch umgesetzt ist eine solche Betriebsweise auf Betriebssystemebene beispielsweise in UNIX-Systemen, wenn mittels des "pipe"- Befehls ständig ein Rechenprozess einen anderen mit Daten versorgt. Folie 208

Filtern von Videodaten Beispiel MISD-Pipelinerechner Zum Filtern von Videodaten wird der Gesamtfilter in aufeinanderfolgende Teilfilter zerlegt Jeder Teilfilter wird von einem Pipelineprozessor verarbeitet höchste Verarbeitungsleistungen bei akzeptablem Hardwareaufwand. Kamera Analog/Digital Wandlung Prozessor 1 Prozessor 2 Prozessor 3 Gefilterte Videodaten Folie 209 MIMD-Rechner Leitwerk 1 Leitwerk 2 Leitwerk 3 Leitwerk n - 1 Leitwerk n Befehlsstrom 1 2 3 werk n-1 Rechen- Datenstrom n 1 2 Parallele Bearbeitung von Befehlen und Daten Ein Leitwerk und das von ihm gesteuerte fasst man unter dem Begriff "Prozessor" zusammen Anwendung: Ein moderner PC hat mit Video-Karten, Sound-Karten etc. ein erhebliches Maß an Parallelarbeit implementiert. Der Hauptprozessor selbst hat (ab Pentium bzw. AMD K5) ein erhebliches Maß an Parallelverarbeitung. PCs und Server mit mehr als einer CPU sind Stand der Technik. Mehrprozessorsysteme, Parallelrechnersysteme, Supercomputer. 3 Hauptspeicher n-1 n Programmspeicher Folie 210

Beispiel MIMD: Parallelrechnersysteme Beispiel: Top 500 des Supercomputing (Jahr 2000) Nr. 1: IBM ASCI White SP Power 3. 375 MHz, 8.192 Prozessoren, 4.938 Gflops, Lawrence Livermore Nat. Lab. Verteilter Adressraum Nach Karl, W.: Uni Karlsruhe-Informatik Folie 211 Beispiel MIMD: Sega Spielekonsole Der 68000 Prozessor (16-Bit Prozessor mit 32-Bit Registern, Fa. Motorola) führt das Hauptprogramm aus Dabei nutzt er den Z80-Prozessor (8-Bit Prozessor, Fa. Zilog) für nebenläufige Aufgaben Der 68000-Prozessor lädt Programme in den Z80-Prozessor, welche dann unabhängig vom 68000-Prozessor ausgeführt werden. 68000 Prozessor Z80 Prozessor Hauptspeicher Interface für Spielekassetten Systembus Programmierbarer Sound-Generator Sound-Synthese Baustein Digital/Analog Umsetzer für Audio und Video Interface für Bedienkonsole Folie 212

5.4 Architektur virtueller Maschinen Interpreter Abstrakte Maschinen Eigenschaften der JVM JVM Implementierungen Java Umgebungen Architektur der JVM Interne Architektur Wesentliche Bestandteile Speichermodell Befehlssatz Arithmetik, Floating Point Sprünge und Schleifen Methodenaufrufe Folie 213 Compiler und Interpreter Compiler Hohe Ausführungsgeschwindigkeit des erzeugten Programms. Quellcode ist vor Manipulationen geschützt, da er zur Programmausführung nicht benötigt wird. (Besserer Urheberschutz) Fehlersuche schwieriger, da die symbolischen Bezüge zum Quelltext bei der Compilation verloren gehen. Zusätzliche Arbeitsschritte Compilation, Link, Load erforderlich (erschwert die Programmentwicklung). Verwendung vorgefertigter Teillösungen aus Programmbibliotheken leicht möglich (Modulare Programmierung). Interpreter Niedrige Ausführungsgeschwindigkeit, da der Quelltext immer wieder neu interpretiert wird. Programme können nur im Quelltext weitergegeben werden (Sicherheitsmängel, fehlender Urheberschutz) Debugging einfach (Einzelschrittausführung, Ansehen von Variablenständen während der Ausführung, Tracing etc.) Programmentwicklung einfach, da in Entwicklung befindliche Programme unmittelbar ausgeführt werden können. Verwendung vorgefertigter Teillösungen aus Programmbibliotheken nur bedingt bzw. gar nicht möglich. Folie 214

Interpreter in virtuellen Maschinen Verzahnung von Übersetzung und Ausführung des Programms Übersetzung in Interpreter-Code Interpreter interpretiert zur Laufzeit den Interpreter-Code Prozessor + Interpreter = abstrakte oder virtuelle Maschine Vorteile: Portablilität ( Übertragbarkeit) Fehlersuche und -diagnostik Speicherplatzersparnis Nachteile: geringere Effizienz (aber: dynamische Übersetzung, JIT) Interpreter sind dann sinnvoll, wenn aufwendiges Laufzeitsystem vorliegt. Compiler erzeugen Programme. Interpreter führen Programme aus. Folie 215 Abstrakte Maschinen Abstrakte Maschinen interpretieren einen abstrakten Befehlssatz. Beispiele für abstrakte Befehlssätze zur Realisierung von (UCSD-) Pascal, PROLOG, LISP, FORTH, Smalltalk und Java. Programme werden in Befehle der abstrakten Befehlssätze übersetzt, nicht direkt in Maschinenbefehle realer Maschinen. Z.B. PASCAL Abstrakte Maschine Reale Maschine Übersetzung Interpretation, Übersetzung oder Realisierung in Hardware Lediglich der Interpreter der abstrakten Befehlssätze muss für verschiedene Maschinen jeweils neu erzeugt werden. Nachteil: niedrigere Ausführungsgeschwindigkeit. Folie 216

Eigenschaften der JVM Die JVM ist eine Kellermaschine / Stackmaschine Operationscodes in einem Byte kodiert ( Bytecode) Typische Befehle: lade integer auf den Stack, addiere die obersten Stackelemente, starte nebenläufige Ausführung, synchronisiere nebenläufige Ausführung, Befehle zur Realisierung der Objektorientierung Byte-Code ist sehr kompakt (ca. 1/3 des Speicherbedarfs von RISC-Code). Besonders interessant für eingebettete Systeme interessant, bei denen Programme zusammen mit den Prozessor auf einem Chip gespeichert werden müssen. Anwendungen, bei denen Programme über das Internet geladen werden. Folie 217 JVM Implementierungen Java Java Java Java JVM Byte Code Byte Code Java JVM Byte Code Byte Code Just-In-Time Compiler Java JVM Byte Code Byte Code Direkte Ausführung Interpreter Binärer Maschinencode für CPU x Betriebssystem Irgendeine CPU Betriebssystem CPU x Betriebssystem Z.B. picojava (Fa. Sun) Folie 218

Prozessor für Network Computer Pico Java (Fa. Sun) Internet Chip für Netzwerk-Anwendungen (PDAs, Pagers etc.) Zellular-Telefon und Telekommunikations-Prozessoren Traditionelle "embedded" Anwendungen Anforderungen an Produkte für "embedded"-märkte Robuste Programme Graceful Recovery vs. Crash Komplexe Programme durch Teams entwickelt OO-Sprachen und -Entwicklungsumgebungen Wiederbenutzung von Codes von einer Produktgeneration zur nächsten Portabler Code Geringe Systemkosten (Prozessor, ROM, DRAM etc.) Hohe Rechenleistung Geringe Leistungsaufnahme, d.h. geringe Erwärmung der CPU Folie 219 JAVA - Umgebungen Folie 220

Interne Architektur der JVM Folie 221 Wesentliche Bestandteile der JVM method area Einmal vorhanden je virtueller Maschine, wird gemeinsam von allen Threads benutzt; enthält klassenspezifische Daten (Typinformation). heap Einmal vorhanden je virtueller Maschine, wird gemeinsam von allen Threads benutzt; enthält die dynamisch erzeugten Objekte. Java VM stacks Threadspezifisch. Enthält Zustand von nicht-nativen Methodenaufrufen, deren lokale Variablen, Übergabeparameter, den möglichen Rückgabewert sowie Methoden-interne Berechnungsergebnisse. pc registers Threadspezifisch; enthält für jeden Zeitpunkt der Ausführung einer nicht-nativen Methode die Adresse der derzeit ausgeführten Instruktion. Während der Abarbeitung nativer Methoden ist der Wert auf undefined gesetzt. Konkrete Größe des virtuellen pc-registers hängt von der Adresslänge der realen Plattform ab. native method stack Implementierungsspezifischer Speicherbereich zur Behandlung von nativen Methodenaufrufen. runtime constant pool Klassen- oder Schnittstellenspezifisch. Enthält verschiedene Konstanten, die zur Übersetzungszeit feststehen und in der constant_pool Tabelle der class-datei abgelegt sind. Die Funktion dieses Bereichs ähnelt dem einer konventionellen Symboltabelle. Folie 222

JVM Instruktionssatz und Datentypen Java Instruktions-Satz gut 200 OpCodes (jeweils 8 Bits) 25 Variationen 3 reservierte OpCodes 0, 1, 2, 3,... Operanden keine Register-Spezifikationen elementare und komplexe Instruktionen lokale Variable relativ zu Basiszeiger sehr kompakter Code ( ~ 1.8 Bytes) Datentypen byte short integer long float double char object returnaddress Folie 223 Speichermodell der JVM Folie 224

Struktur des Befehlssatzes Folie 225 Arithmetik mit der JVM Folie 226

JVM Laufzeitumgebung: Floating Point (IEEE 754) Folie 227 Sprünge und Schleifen Folie 228

Methodenaufrufe Folie 229 5.5 Ausblick Rechnerarchitekturen Vermehrte Bedeutung von Multimediaoperationen: Verarbeitung von Datenströmen. Zusätzliche Instruktionen und/oder spezielle Recheneinheiten. Mediaprozessoren (Signalprozessoren, Videoprozessoren). VLIW-Prozessoren: Explizite Parallelität in den Instruktionen. Einfachere Hardware, komplexere Compiler. Vor allem für regelmäßige Programme (Multimediaverarbeitung) geeignet. Mehrprozessorsysteme Simultanes Multithreading (Hyperthreading) Zwei, vier oder noch mehr virtuelle CPU-Kerne auf einem Chip Multi-Core-Designs Zwei, vier oder noch mehr komplette Prozessoren auf einem Chip Folie 230