Docstoc

1 . Klassifikation zerlegt eine

Document Sample
1 . Klassifikation zerlegt eine Powered By Docstoc
					1 . Klassifikation: zerlegt eine Menge von Objekten in Klassen
    Taxonomie: Einteilung nach übergeordneten Gesichtspunkten

Klassifikation nach Flynn: Eine Maschine bearbeitet zu einem Zeitpunkt mehr als einen
(1.Aussage)Befehl / (2.Aussage) einen Datenwert.

-> 4 Klassen
„0“, „0“= SISD (Single Instruction Single Data) (1-Prozessorsysteme)
“0”, “1”= SIMD (Single Instruction Multiple Data) (Feldrechner, Vektormaschinen)
“1”, “0”= MISD (Redundante Systeme)
“1”,”1” = MIMD (Multiprozessorsysteme)

Taxonomie nach Giloi: Operationsprinzipien

    1. Von-Neumann: Starres 2-Phasen Schema der Programmabarbeitung; Hardware
       versteht nur 0 und 1
    2. impliziter Parallelismus: man nutzt die gegebenen Möglichkeiten zur parallelen
       Ausführung bestimmter Aktivitäten (Anweisungen, Threads, Prozesse)
    3. expliziter Parallelismus: es ist von vornherein Parallelarbeit vorgezeichnet;
       Datenstruktur in Form von Feldern
2. Konzepte der Parallelarbeit
2.1 Piplineverarbeitung in RISC: im Idealfall kann Durchsatz um Anzahl der Pipline-Stufen
erhöht werden, aber in der Praxis nicht erreicht.

   1. Datenfluss-Konflike: Wenn Ergebnis der Instruktion1 in Instruktion2
      weiterverarbeitet werden muss, so müssen „stalls“ (No Operation) eingefügt werden.
      -> Mehr Zyklen die Folge. Umsortieren kann Stalls in 90% aller Fälle verhindern und
      so wieder Zyklen verkürzen.
   2. Steuerfluss-Konflikte: Zunächst Sprungbefehl ausgeführt werden, dann wird Adresse
      des Folgebefehls berechnet

2.1.3 Hardware zur Konfliktauflösung:
    1. Forwarding (Bypassing): Ergebnisse von Operationen werden sofort nach Execute-
       Phase wieder als Eingabe zur ALU zurückgeführt
    2. Branch-Target-Puffer: Verzweige-Ziel-Puffer; Speicher in denen die Adressen
       bekannter Verzweigungen mit vorausgesagtem neuen Befehlszähler vorgehalten
       werden; Meist Nutzung 2-Bit-Voraussageschema (Pentium)
    3. Scoreboard: verwaltet alle Informationen in Hardware-Tabelle; Lassen sich alle
       Probleme erkennen und auflösen

2.2 Daten- und Programmparallelität:
    1. Explizite Datenparallelität: strukturierte Datenmengen wie Felder; Es ist von
       vornherein bekannt inwieweit Aktionen parallel ausgeführt werden
    2. Implizite Programmparallelität: wenn in Programm Menge von Aktionen gibt, bei
       denen die Reihenfolge keine Bedeutung hat

   Datenabhängigkeit:
   1. Flussabhängigkeit (flow dependence): Read After Write
   2. Ausgangsdatenabhängikeit (output dependence): write after write
   3. Antidatenabhängikeit (anti dependence): write after read
2.3 Ebenen der Parallelarbeit:

   1.   Maschinenbefehle z.B. Superskalare Rechner -> Parallelität niedrig
   2.   Anweisungen z.B. enggekoppelte MPS -> niedrig (Schleifen hoch)
   3.   Datenstrukturen z.B. Vektormaschinen -> hoch
   4.   Prozesse z.B. Workstation -> hoch

2.4 Maschinenbefehlsebene      Piplining Verarbeitung der Befehle

2.5 Anweisungs- und Datenstrukturebene

Def. Basisblöcke: eine Folge von Programmanweisungen, die unmittelbar nach der
Sprunganweisung beginnt und mit der nächsten endet.

Datenabhängigkeit in Schleifen: können schleifenunabhängig (loop indipendent) oder
schleifenspezifisch (loop carried) sein

Schleifenparallelisierung: hauptsächliche Quelle der Parallelarbeit, wird von Compilern…

   1. Vektorisierung: wird von Compilern der Vektormaschinen durchgeführt
   2. Schleifeniteration: a) Do all Loops – keine Abhängigkeiten
                        b) Do Across Loops – Abhängigkeiten zw. den Iterationen
                        c) Do Serial Loops – Schleifen die keine Parallelisierung zulassen

2.6 Prozessebene: Grundproblem ist die Kommunikationslatenz; ist die Zeit wo ein
Rechnerknoten nicht arbeiten kann weil er auf eine Kommunikation wartet
Effizienzproblem löst man mit möglichst großen Prozessen die bei der Ausführung große
Kommunikationsobjekte austauschen, so dass wenige Kommunikationsvorgänge entstehen.

2.7 Synchronisation von Parallelarbeit

   1. Fork-Join-Synchronisation: Fork entspricht Verzweigung mit Marke, Adresse,
      Zustand Zähler; Join dekrementiert Zähler und fragt auf 0 ab
   2. Barrieren-Synchronisation: Semaphore zur Sicherung kritischer Abschnitte
      (mehrere Prozesse nicht gleichzeitig schreiben auf Datei) und zum belegen bzw.
      freigeben von Betriebsmitteln
   3. Synchronisation über Monitore: gemeinsame Daten, Zugriffsoperationen zu einer
      Einheit, dem Monitor gekapselt. Zu einem Zeitpunkt darf nur 1 Prozess Monitor
      betreten.
   4. Synchronisation kooperierender Prozesse: Netzwerk von Knoten, die durch
      Kommunikationskanäle verbunden sind.

3 Klassen für Kommunikation zwischen Prozessen:

1. RPC (Remote Procedure Call): Parallele Prozesse sind entweder Clients oder Server

2. Rendezvous: „Bitte“ um Kommunikation

P1 sendet und wartet bis P2 empfangen hat, P1 wartet auf antwort bis P2 sendet. Danach
wieder unabhängig voneinander.
3. No-Wait-Send: Sendeprozess führt nach senden seine Arbeit erstmal fort, eventuell muss er
auf Anwort warten.
2.8 Probleme bei der Prozess-Synchronisation: bei MIMD-Systemen

   1. Erzeuger/Verbraucher Problem (Bounded-Buffer P.)
   - Ein Prozess erzeugt Daten und schreibt in Puffer, anderer Prozess liest Daten aus Puffer
     und verarbeitet sie. Problem dabei: Erzeuger schneller als Verbraucher oder umgekehrt.
   Lösung über 2 boolesche Semaphore
   2. Readers-Writers-Problem: Es können gleichzeitig mehrere Prozesse auf
       gemeinsame Datei schreiben. Es darf zu einem Zeitpunkt nur ein Schreibprozess
       Zugang zu den Daten haben

2.8.3 Allgemeine Programmierfehler:

   1. inkonsistente Daten: Datum genau dann inkonsistent wenn es nach Abarbeitung nicht
       den Wert hat, den es nach sequentieller Abarbeitung erhalten hätte
   1.a verlorener Update (Lost Update Problem)
       2 Prozesse erhöhen Geld von Müller parallel und je nach Verzahnung der
       Speicherzugriffe kommen unterschiedliche Ergebnisse raus.
   1.b inkonsistente Analyse
   1.c unbestätigte Abhängigkeit; bei Datenbanken. Wenn Transaktion A Daten ändert und B
       diese liest, A dann scheitert, dann hat B falsche Daten -> Roll back
   2. Verklemmungen
   2.a Deadlock; Eine Gruppe von Prozessen wartet auf Eintreten einer Bedingung, die nur
       von Gruppe selbst hergestellt werden kann (Prozess muss Betriebsmittel auf einmal
       anfordern mit Absicherung durch Semaphore; dafür mehr Aufwand)
   2.b Livelock; Verklemmung aktiver Prozesse, die z.B. in einer Schleife Warteoperationen
        ausführen

2.8.4 Lastbalancierung:
Schlechte Verteilung von Prozessen auf Prozessoren verursacht Effizienzverluste

   1. statische Lastbalancierung: statische Verteilung; Zur Laufzeit findet keine
      Verlagerung statt
   2. dynamische Lastbalancierung: Umgruppierung bereits zugeordneter Prozesse zur
      Laufzeit in Abhängigkeit der Prozessorlast

       3 Methoden: Empfänger-Initiative – Prozessoren mit geringer Last fordern weitere
                                          Prozesse an
                   Sender-Initiative – Prozessoren mit hoher Last versuchen Prozesse
                                       Abzugeben
                   Hybride Methode – Umschalten zwischen 1 und 2 in Abhängigkeit zur
                                        Systemlast

2.9 Prozedurale MIMD-Programmiersprachen: Ada, Concurrent Pascal, Linda, Modula-P
2.10 Prozedurale SIMD-Programmiersprachen: Fortran 90/95, Parallaxis, MPL, C*

3. Parallel-Architekturen: Superskalare und VLIW-Prozessoren
Beziehen Ihre Leistung aus der Parallelarbeit mehrerer Funktionseinheiten

Funktionseinheit: kann ein Maschinenbefehl ausführen; spezieller Datenprozessor, zur
Ausführung von Gleitpunkt- oder Ganzzahloperationen
Unterschiede beider Architekturen: bei superskalaren Prozessoren, Steuerung der
parallelen Abarbeitung von Maschinenbefehlen erfolgt dynamisch (zur Laufzeit) und bei
VLIW-Prozessoren, Maschinenbefehle werden zur Übersetzungszeit vom Compiler
parallelisiert und damit auf die einzelnen Funktionseinheiten starr verteilt

Superskalare Prozessoren:
          - In-Order-Execution: die vorhandenen Piplines (Funktionseinheiten) arbeiten
              in dem Sinne synchron, dass gleichzeitig oder nacheinander gestartete Befehle
              sich nicht überholen können
          - Datenabhängigkeiten zwischen Befehlen, die sich gleichzeitig in Pipelines
              befinden, werden durch Scoreboarding aufgelöst (Ergebnisse werden immer in
              logisch korrekter Reihenfolge zurück geschrieben)
          - Out-Of-Order-Execution: Holen und dekodieren der Befehle -> Ergebnis und
              Operandenregister werden in Schattenregister zur Vermeidung von
              Datenkonflikten abgebildet. -> Schreiben in die Register oder Daten-Cache
VLIW-Prozessoren: in der Praxis vor allem im Bereich der datenstromorientierten digitalen
Signalprozessoren (DSPs)

3.2 SIMD-Architekturen:

Unterschied Vektormaschinen/Feldrechner Der grundlegende Unterschied dieser beiden
Ansätze ist, dass Feldrechner aus n Rechenelementen (oder Verarbeitungseinheiten) bestehen,
die alle auf dem gleichen Instruktionsstrom arbeiten, aber natürlich auf verschiedenen Daten.
Vektormaschinen arbeiten nach dem Pipline-Prinzip.

Vektormaschinen: Datenpiplining; Verarbeitung von Datenströmen wobei Holen und
Speichern der Datenelemente als Teiloperationen einbezogen sind.

PEs: sind Bearbeitungselemente (Pipeline-Stufen); Jedes PE hat Ein- und Ausgabewert.

Speicherverschränkung: Für einen Vektorrechner gilt, dass mit jedem Takt die zu
verknüpfenden Operanden geholt werden und das Ergebnis zurück geschrieben werden muss.
Daher wird eine Speicherbandbreite benötigt, die dreimal so hoch ist wie der Durchsatz des
Prozessors. Dabei wird der Hauptspeicher in N unabhängige Speicherbänke aufgeteilt.

Strategien der Verteilung:

   1. konsekutive Adressierung; Elemente werden in der gegebenen Ordnung
       nacheinander über die N Bänke verteilt. In gleicher Ordnung wie geschrieben auch
       gelesen. -> Zugriffe auf Elemente einer Spalte führen zu Zugriffskonflikten
   2. verschobene Speicherung: Zugriffskonflikte wenn auf die Elemente der Diagonale
       zugegriffen wird
Abhilfe der Zugriffskonflikte: K Bänke > N Spalten

Feldrechner: Gleiche Operationen werden gleichzeitig auf mehrere Datenströme ausgeführt,
verschiedenartige Operationen zeitlich nacheinander. -> Wenn Steuerrechner sagt addieren,
dann alle PEs addieren. Pes besitzen kein Steuerwerk, sind unselbstständige ALUs mit
lokalem Speicher. Führen Ihren übermittelten Befehl aus oder sind inaktiv.
Probleme: Kommunikation im Verbindungsnetzwerk
MIMD-Architekturen:
Multiprozessorsysteme (MPS): Speichergekoppelte Systeme (shared memory)
(Verbindungsnetzwerk zwischen Speicher und Prozessor) und Nachrichtengekoppelte
Systeme (Konten bildet Speicher/Prozessor; Knoten kann nur auf lokalem Speicher zugreifen)

Verbindungstopologien:
Hauptmerkmale von Verbindungs-Netzen: Verbindungsart (Leitungsvermittlung: fester
Weg zwischen Sender und Empfänger hergestellt werden, Paketvermittlung: kleine Pakete
gleichzeitig durch Netz gesandt), Wegsteuerung (dezentral: muss Wegangabe im Kopfteil
stehen, zentral: wird Wegangabe zu Verfügung gestellt), Arbeitsweise (synchron: Alle Sender
und Empfänger zu festen Zeitpunkten, asynchron: Kann jeder Sender
Übertragungsanforderung zu beliebigen Zeitpunkt an Netz stellen), Art der Topologie
(regulär, irregulär)

Statische Verbindungsnetze: feste Punkt-Zu-Punkt Leitungs-Verbindungen
Dynamische Verbindungsnetze: enthält Schaltknoten die durch die Wegsteuerung gesetzt
werden

Übertragungsstrategien bei der Paketvermittlung:

   1. Store and Forwarding Routing; vollständige Datenpakete werden versandt
   2. Worm Hole-Routing; Kopfpaket mit Wegangabe wird ausgesendet, es folgen die
      Datenpakete, Nachricht wird mit Schwanzpaket abgeschlossen

3.4 Neuronale Netze
- hochgradig parallel arbeitende, lernfähige Informationsverarbeitende Systeme
- NN arbeitet nicht algorithmisch (wird mit Hilfe von Beispiele trainiert)
- Einheit von Rechen- und Speichermöglichkeiten

Charakteristische Eigenschaften:

- Operation auf großen Datensätzen
- Anpassung an veränderte Bedingungen durch Erweiterung des Lernprozesses
- Eignung für den Einsatz auf Parallelrechnern

Grundbegriffe / Netzwerkstrukturen:

- NN als System mit n Eingängen und m Ausgängen
- lässt sich in eine bestimmte Anzahl von Schichten aufteilen (i.d.R. 3)

Schichten:

- Eingabeschicht (Input-Layer)
- eine oder mehrere verdeckte Schichten (nach außen nicht sichtbar, hidden layer)
- Ausgabeschicht (Output-Layer)

Informationsfluss erfolgt in der Regel von Inputschicht über verdeckte Schicht zur
Ausgabeschicht (bei einigen Netztypen auch wieder zurück – feedback)

- Schicht besteht aus einer beliebigen Anzahl von PEs (Neuronen)
- PEs einer Schicht werden in der Regel als gleichartig angesehen
- PE einer Schicht kann beliebig vielen PEs einer anderen Schicht verbunden sein
- eine Verbindung zwischen PEj und PEi nennt man Gewicht wij
- es gibt feste und variable Gewichte
- Variable Gewichte werden während des Lernens verändert

- Inputfunktion net(i) -> Aktivierungsfunktion (Transferfunktion) a(i) -> Outputfunktion o(i)

   1. Eingänge werden mit Inputfunktion bearbeitet
   2. Ergebnis von net(i) wird an Aktivierungsfunktion weiter gegeben
   3. Ergebnis der Aktivierungsfunktion mit Skalierungsfaktor multipliziert + Offset

Bias-Element: Mit Hilfe des Bias Elementes kann sichergestellt werden, dass bestimmte PEs
einen Input != 0 erhalten (konstanter Output=1, besitzt keinen Eingang).

Interner Ablauf:

   1. assoziatives Lernen (überwachtes Lernen): es müssen Eingabedaten und die
      gewünschten zu assoziierenden Ausgaben vorliegen
           autoassoziatives Lernen (Eingabevektor=Ausgabevektor); werden genutzt
              um Fragmente bereits gelernter Muster wieder richtig zuzuordnen.
           Heteroassoziatives Lernen (Eingabevektor != Ausgabevektor); werden
              vorwiegend zur Klassifikation von Eingabemustern verwendet z.B. D/A
              Wandler
   2. entdecktes Lernen (nicht überwachtes Lernen): erfordert nur den Eingangsvektor,
      es sollen Gemeinsamkeiten in den Mustern herausgefunden werden und diese
      klassifiziert werden

Lernen: verändern der Gewichte, solange, bis eine Zuordnung der Eingabemuster zu einem
gewünschten Output stattgefunden hat

- verändern der Gewichte geschieht mittels einer Lernregel z.B. Delta-Lernregel

Ablauf Lernzyklus: 1. Input-Vektor lesen und an das Netz anlegen
                   2. Lernschritt ausführen
                   3. Mit Hilfe des gewünschten Output-Vektors wird Fehler berechnet
                   4. Lernregel anwenden (Veränderung der Gewichte; Gewichte werden
                      Nach jedem Lernschritt sofort angepasst oder nach jedem Lernzyklus
                   -> Minimierung der Fehlerfunktion
                   5. Wenn noch kein Muster vorhanden, weiter mit 1
                   6. Outputfehler berechnen

Leistungsbewertung: 3 Anwendungsgebiete

1. Systementwurf: Amdahl-Regel 1: Hauptspeicher in Byte mindestens der Anzahl der
                                    auszuführenden Maschinenbefehle/Sekunde
                  Amdahl-Regel 2: Übertragungsrate in bit/s sollte mindestens dem
                                    Systementwurf entsprechen
2. Kontrolle und Tuning operierender Systeme
3. Systemvergleich

3 Gruppen von Personen: Hard- und Software-Designer, Systemprogrammierer, Nutzer
Leistungsmaße:

* CPU-Leistung (Nutzer-CPU-Zeit)
* MIPS (Million Instruction per Second)

       Befehlsanzahl / Ausführungszeit * 10^6
Vorteil: schnellere Maschinen auch mehr MIPS
Nachteil: MIPS-Rate hängt von Befehlssatz ab oder variieren zwischen verschiedenen
          Programmen auf gleichem Rechner

-> alternative: relative MIPS

* MFLOPS (Million Floating Point Operations per Second)
Hängt von Maschine und Programm ab

Methoden zur Leistungsbewertung

Messmethoden: zu untersuchendes System muss real vorhanden sein
               (Benchmark-Tests und Monitore)
Analytische Methoden: Untersuchungen an Modellen von Rechnersystemen
Simulative Methoden: dynamisches Verhalten des Modells eines Rechnersystems wird
                     experimentell untersucht

Benchmarks: Benchmarks aus Benutzerprogrammen
             Benchmarks aus synthetischen Programmen (nur für den Zweck von
             Leistungsbewertung geschrieben, berechnen nichts Sinnvolles)
Monitore: besteht aus Sensor, Selektor, Kollektor, Ausführungsschicht, Speicherungsschicht,
          Auswertungsschicht
Arten: Hardware- , Soft- und Firmware- , hybride Monitore

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:13
posted:6/30/2010
language:German
pages:7