Ich begrüße Sie zur Vorlesung Grundlageninformatik II.
Ich werde jetzt gleich eine Wiederholung über...
Was ist hier passiert?
Moment.
...geben, was in Kapitel 8 passiert ist.
Sie haben letzte Woche mit Teil 2, Architektur von Rechensystemen,
angefangen und dann haben wir, Sie haben dann von Neumann Rechner
kennengelernt.
Der von Neumann Rechner ist das klassische Konzept, ein
Universalrechner.
Das heißt, die anderen Sachen, die Sie bis jetzt hatten, die waren
kein Universalrechner.
Zum Beispiel endlicher Automat ist ein Automat, ist kein
Universalrechner.
Und unsere Handys, wenn wir ein Handy so hier haben, die Prozessor da
drin, das ist kein Computer, das ist kein Universalrechner, sondern
das ist irgendein Prozessor, der da was Besonderes für Handy macht
oder für Playstation macht.
Aber es ist kein Universalrechner.
Und von Neumann Rechner ist es ein klassisches Konzept von
Universalrechner und sieht so aus.
Das kann auch sein, dass irgendwann auch in Klausur oder so diese
Frage kommt, was sind die Teile von einem Universalrechner?
Na klar, wir haben Eingabewerk, wie Keyboard, Tastatur, dann haben wir
Speicherwerk.
Wir kennen alle Speicher, externe Speicher oder interne Speicher.
Dann haben wir Ausgabewerk, wie Monitor und so weiter.
Und dann kommt CPU.
Und bei CPU haben wir Steuerwerk drin, der alles steuert, was für
Teile in Programme ausgeführt werden sollen.
Und dann haben wir Rechenwerk, das es berechnet.
Und da sind die Teile.
Ich bin hier ein bisschen schneller, weil Herr Schmeck schon
eigentlich diese Vorlesung gehalten hat.
Und dann haben wir diese Einheiten.
Und was wir heute haben, ist ein Boost-System.
Wer hat hier einen Computer von drinnen gesehen?
So viele.
Und Sie haben auch einen Bus gesehen.
Wissen Sie, wie so Bus haben Sie auch gesehen?
Ich habe hier auch einfach für die, die das nicht gesehen haben, das
ist so Wikipedia, was ist ein Bus?
Und diese gelben Teile, das sind diese Bus-Systeme.
Und da benutzen wir Bus für Datenübertragung.
Werden wir heute auch nochmal sehen, wie können wir die Daten
übertragen und was für Methoden gibt es, zentrale, dezentrale, ob da
ein Engpass gibt.
Weil wenn ein Bus gibt, dass alle Daten hier transferiert werden
sollen, dann die Frage ist, wie ist es, es ist ein Engpass.
Die Programme müssen alle warten, bis deren Informationen, oder ER
-Geräte, die müssen warten, bis, wenn wir mehrere ER-Geräte, Eingabe
-Ausgabe -Geräte haben, das ist dann da ein Engpass.
Werden wir heute auch nochmal sehen, wie das funktioniert.
Okay.
Und ich fange mit dieser Folie an.
Arbeitsspeicher.
Arbeitsspeicher kennen wir auch als Main-Memory.
Wenn wir einen Computer kaufen, fragen wir immer, wie viel Main-Memory
gibt.
Kennen wir auch als Hauptspeicher, Premierspeicher oder einfache
Speicher.
Und wie funktioniert das?
Wie sieht das eigentlich aus in einem Arbeitsspeicher?
Das ist hier, Sie sehen eine Abbildung von einem Teil im
Arbeitsspeicher.
Das ist nichts anderes, als wir hier Elemente haben.
In diese Elemente, Speicherelemente, speichern wir Informationen,
Daten, Befehle und alles ist kodiert und in diesem Speicherelement ist
es dann drin.
Und jedes Speicherelement hat eine Adresse.
Und wie gesagt, dieses Speicherelement hat eine feste Anzahl von
binären Stellen.
Das heißt, wir können nicht beliebig viel in ein Speicherelement
speichern, sondern wir können eine Anzahl von Bits drin speichern.
So hier.
Und das haben wir typische 8, 16, 32 und 64 Bits.
Wir fragen auch immer, wenn wir einen Computer kaufen, wie viel ist
das Hauptspeicher, wie viel Bits ist und so.
Und das ist genau dieser Speicher, wie viel Platz wir in einem
Speicherelement haben.
Okay, Sie kennen, was ein Byte ist.
Ein Byte ist das größte Speicherelement, der größte 8-Bit.
Und dann haben wir auch Worte, können wir auch das als Wort nehmen für
Speicherelement und Größe von Wortreden und das ist ein Synonym für
Speicherelement.
Wenn wir sagen, so viele Worte, das sind so viele Speicherelemente.
Und dann haben wir 2, 4 oder 8 Bytes, das wir auch als Wort nennen.
Das ist relativ einfach.
Gut, die Nummer eines Speicherelements heißt Adresse, haben wir schon
gehabt.
Speicherelemente sind kleinste adressierbare Einheiten, das haben wir
auch gehabt.
Und was sehr wichtig ist, dass jeder Element, das wir im Speicher
haben, das hat eine eindeutige Adresse, das muss eine eindeutige
Adresse haben.
Und dann hier reden wir auch manchmal über virtuelle Adresse, die wir
einfach so für Speicher nehmen oder auch richtige physische Adresse.
Das heißt genau, Sie haben diese Schaltungssysteme gehabt und da kann
man richtige physische Adresse für jedes Speicherelement nehmen und
das auch in Programme verwenden.
Auf jeden Fall gibt es eine Adresse für Sie, was sehr wichtig ist in
dieser Vorlesung, dass jedes Speicherelement eine Adresse hat und wenn
wir diese Adresse haben, können wir Informationen in diese Speicher
zugreifen.
Und was auch noch wichtig ist, wenn wir einen Speicher haben, mit
unterschiedlichen Speicherelementen, zum Beispiel hier ein Element hat
eine Adresse 1 und in der nächsten Adresse ist es 2.
Das heißt, es erhöht sich immer um 1.
Das ist wichtig für Programmieren.
Wenn wir ein Programm schreiben, wir sagen zum Beispiel Programm
-Counter, werden wir sehen, was Programm-Counter ist, aber wenn
Programm -Counter auf irgendeiner Adresse ist, nachdem er diesen
Befehl ausgeführt hat, dann erhöht es sich um 1.
Das heißt, wir sehen dann die nächste Adresse.
Und dann, wir haben diese Random Access Memory, RAM-Speicher.
Das ist dann genau das, was wir als Speicher kennen und die Adressen
von RAM.
Und hier ist es eine bessere Abbildung von Arbeitsspeicher.
Sie sehen die Adressen 513, 14, 15 und dann drin sehen Sie die Zahlen,
so die binären Zahlen, die auch in Speicherelementen gespeichert sind.
Zum Beispiel bei Adresse 513 haben wir Zahl 28.
Und 514 zum Beispiel 6 und 33 bei 515.
So sieht es eigentlich aus.
Gibt es aber eine Speicher-Hierarchie im Computer?
Das heißt, wenn wir ein CPU haben, er kommuniziert mit
unterschiedlichen Speichern.
Und das ist hier eine Abbildung, da sehen wir oben CPU.
Und er kommuniziert mit einem anderen Speicher, das heißt Register.
Und dann haben wir Cache-Speicher.
Haben Sie schon von Cache gehört?
Wenn wir sagen, die Daten sind irgendwo in Cache gespeichert.
Haben Sie schon mal gehört?
Ja, okay, gut.
Und dann haben wir Arbeitsspeicher.
Und Arbeitsspeicher, diese RAM, Random Access Memory, ist es ganz
unten.
Und diese drei Abbildungen zeigen zum Beispiel Preisprofit,
Zugriffszeit und Kapazität.
So, wenn wir Register nehmen, das ist genau direkt im CPU zugeordnet.
So Preis, weil CPU nicht so viel Platz hat.
Das ist dann halt sehr teuer.
Zugriffszeit, es ist sehr, sehr schnell, weil Register sind direkt im
CPU zugeordnet.
Zugriffszeit ist sehr niedrig.
Und Kapazität ist auch, weil wir nicht so viel Platz haben, da haben
wir auch nicht so viel Kapazität.
Das ist niedrig.
Und wir kommen dann hier unten bei Arbeitsspeicher, ist sehr billig.
Der Preisprofit ist sehr niedrig.
Zugriffszeit ist allerdings sehr hoch.
Und Kapazität ist auch hoch, weil wir können beliebig Arbeitsspeicher
so erhöhen.
Und dazwischen ist es Cache.
Und ja, wir werden auch über Cache ein bisschen sprechen.
So Register ist es unmittelbar der CPU zugeordnet.
Wir werden heute auch noch Beispiele sehen.
Dann haben wir Arbeitsspeicher und hat zwei Teile.
Einer ist das ROM, Read-Only-Memory.
Und Read-Only-Memory ist für Lesen nur.
Das heißt, wir können diesen Teil von Speichern nicht ändern.
Und es ist diese Informationssystemfunktion, es ist drin gespeichert.
Wenn wir einen Computer kaufen, wir können ROM nicht ändern, weil das
zum Beispiel für Booting und Neustart und alle Informationen, die ein
Computer braucht, es ist in ROM.
Und ROM ist es, was wir eigentlich brauchen für unsere Programme.
Und wenn wir Computerspiele haben oder große Programme haben, da
brauchen wir auch mehr ROM.
Deswegen, wenn wir einen Computer kaufen, ist es wichtig, dass wir
einen großen ROM haben, dass wir viel mehr Platz haben.
Gut, und dann kommt Cache.
Cache-Speicher ist es, so wie Sie hier auch sehen, das ist zwischen
CPU und Arbeitsspeicher.
Und das kann man so in zwei Modellen zugreifen.
Einer ist es wahlfrei.
Wahlfrei ist es, wie wir gerade hatten.
Zum Beispiel, wir haben Adresse 513 und da können wir ein Element aus
dem Cache aus dieser Adresse lesen und schreiben.
Und da gibt es assoziative Zugriff, das werden wir später heute sehen,
was das bedeutet.
Aber das sind in zwei Formen.
Und dann in Cache werden immer die Informationen, die wir sehr häufig
benutzen, gespeichert.
Das ist wie zum Beispiel, wenn wir Firefox benutzen, das hat
eigentlich hier damit nicht so direkt zu tun, aber die Informationen,
die wir immer benutzen, das wird dann in Cache gespeichert und dann
jedes Mal, dass die CPU diese Daten braucht, dann geht es zu Cache und
nicht zu Arbeitsspeicher.
Und was auch sehr wichtig hier ist, ist, dass wenn wir Cache schlecht
benutzen, dann wird der Computer deutlich verlangsamt.
Das heißt, mit Cache kann man nicht, ich würde nie mit Cache so
richtig persönlich programmieren, sondern der Computer weiß, okay, es
ist Cache und er selber automatisch wird dann die nächsten Befehlen,
die wir brauchen, immer dort speichern und referiert.
Dann nach Speicherwerk, wir hatten bis jetzt Speicherwerk.
Die nächsten Folien nach dieser Vorlesung heute sind über Speicher,
auch wie die Speicher aussehen, wie ein DVD zum Beispiel, wie externe
Speicher aussehen und so.
Da können Sie auch noch einige Folien dazu haben.
Okay, dann kommen wir zu Rechenwerk.
Hier oben ist es in CPU und Rechenwerk ist tatsächlich eine sehr
einfache Einheit und macht nur arithmetische und logische Operationen,
die Sie auch in Schaltungssystemen gelernt haben, zum Beispiel
Addition, Subtraktion und Division und Multiplikation.
Und dann hat auch Rechenwerk einen Register.
Register ist ein kleiner Speicher und einige Funktionseinheiten.
Die Register sind für Operanten, zum Beispiel die Zahlen, die wir
addieren wollen, die werden in zwei Register reinkommen und dann
werden miteinander addiert und dann als Ergebnis wird dann in
Akkumulatorregister zum Beispiel gespeichert.
Das heißt, zwei Register hier und dann in Rechenwerk werden die dazu
addiert irgendwie und dann kommt dann ein anderer Register, das heißt
Akkumulatorregister, das ist die Daten da gespeichert.
Dann haben wir auch Statusregister, das ist dann Zustandsbeschreibung
und Funktionseinheiten, das ist auch relativ einfach, das sind die
Informationen, die wir für arithmetische oder logische Operationen
brauchen.
Und das heißt, diese Funktionseinheiten, die wir drin haben, heißen
ALU, haben Sie wahrscheinlich irgendwann in Magazinen oder irgendwo
gehört, dass es ALU gibt.
ALU ist kurz für Arithmetic Logic Unit.
Und typische Operationen, die ALU machen kann, das ist
Transferoperationen, Bolscher Operationen, arithmetische und
Schiebeoperationen.
Alle diese Operationen eigentlich kennen Sie aus den letzten
Vorlesungen.
So, Rechenwerk macht die einfachen Rechnungen, aber muss auch
irgendwie gesteuert werden.
Wenn wir ein Programm haben, zum Beispiel ein PowerPoint, das gerade
auf meinem Computer läuft.
Und dann muss das Computer das PowerPoint, also die Daten, zeigen.
So, dieses Rechenwerk macht nur einfache Operationen, die in einem
Programm sind, aber ein Steuerwerk muss dann alles steuern, dass etwas
Vernünftiges rauskommt in Ausgabe.
Einheit, das ist ein Monitor, ist, dass das PowerPoint funktioniert
zum Beispiel, oder irgendein Programm funktioniert.
Das heißt, das Steuerwerk ist dann die Einheit, die dieses Rechenwerk
steuert.
Das ist das Steuerwerk, und da brauchen wir Steuersignale.
Und es sieht so aus, wir haben ein, das ist das CPU,
komplett, und dann unten ist das Speicherwerk.
Und dieses Steuerwerk schickt Steuersignale zum Rechenwerk und kriegt
auch ein Statusregister, das ist ein Status vom Rechenwerk, das heißt,
eine Aufgabe ist da erledigt worden.
Zum Beispiel, A plus B wird hier berechnet.
Und diese Register, hier haben wir kleine Register, B, kleine Register
A, A plus B, ALU zum Beispiel, wenn es addiert, und dann haben wir
hier ein Register, sagt, okay, Ergebnis ist A plus B, und ein
Statusregister sagt, die Arbeit ist gemacht.
So ist es mit zwei Signalen eigentlich, das ist die Kommunikation
zwischen beiden.
Aber wie genau das Steuerwerk funktioniert, ist Aufgabe von
Steuerwerk, wie ich vorhin gesagt habe, das ist Ausführung eines
Programms, kleine Arbeitsvorgänge, die in einem Programm sind, wie
durchs Steuerwerk gemacht.
Gut, und drinnen haben wir ein Instruktionsregister, und das ist
dieser Befehl, das der gerade aus dem Speicher geholt hat, so ein
Steuerwerk geht in den Speicher, holt den Daten, so einen Befehl, und
dann dieser Befehl soll jetzt durchgeführt werden, und PC, sogenannte
Program Counter, ist diese Adresse, dieser aktuelle Befehl im
Arbeitsspeicher.
Und wie funktioniert das?
Diese drei Dinge hier sind sehr wichtig, auch für Klausuraufgaben und
so.
Was sind die Aufgaben des Steuerwerks?
Erstmal holen von Daten, die sogenannte Fetch auf Englisch.
So, er hat diese zwei Informationen, eine ist das Instruktionsregister
und eine ist das PC.
So, das ist diese Information, was er hat, und PC sagt, welche
Adresse.
Und er lädt diese Information erstmal.
Er entschlüsselt diese Information durch die Code, das ist die zweite
Aufgabe, die er hat.
Er kennt erstmal, was für eine Befehlsart ist das, und dann zerlegt
das in Operationen.
Das heißt, diese Speicher, diese binäre, lange binäre Kette, die wir
haben in einem Speicherelement, muss er jetzt erstmal zerlegen, okay,
erste fünf heißen Art, zweite ist das Operand 1, Operand 2 und so
weiter, und das bedeutet, dass irgendeine Aufgabe gemacht werden muss.
Und dann, nach der Codierung, schickt er die Information zu
Reschenberg, wo wir dann die Arbeit machen, sogenannte Execute, das
heißt, er führt diese Befehle aus.
Gut, und dazu, wie gesagt, so gibt es Operanden, aus dem Speicher wird
er geladen, wir haben ein Beispiel, deswegen werde ich hier nicht
genauer erklären, aber er holt die Operanden, Operationen werden
ausgeführt, Ergebnis wird gespeichert, und dann Befehlzähler, PC wird
dann um 1 erhöht, und dann das war es eigentlich.
Was Sie wissen müssen, ist das Fetch, Decode und Execute, oder Holen,
Entschlüssen und Initiieren.
Und hier ist ein Beispiel, deswegen habe ich das vorhin ein bisschen
trocken erklärt, jetzt hier mit Beispielen.
So, Ablauf der Steuerung bei Abarbeitung eines Addierbefehls, so hier
wollen wir addieren, Sie können auch multiplizieren oder auf sich
andere Beispiele, ist auch egal, an dieser Stelle ist es, das ist der
Befehl, Erhöhe Inhalt der Speicherzelle 516.
Okay, wie ist es, so das Steuerwerk, was das Steuerwerk weiß, es ist
was PC ist, Programme Counter.
Programm Counter sagt, wo er erstmal die Information holen soll, wo er
diese Information holen soll erstmal.
Und das ist ein Programme Counter, zum Beispiel Programm Counter, so
hier in dem Beispiel, sagen wir, der zeigt Adresse 1000.
So, Programm Counter ist 1000.
So, Steuerwerk holt die Daten, die in 1000 sind, aus dem Speicherwerk,
so hier, in Instruktionsregister.
Das heißt, die Adresse, die PC zeigt, wird aus dem Speicherwerk
geholt, deswegen hier haben wir Schritt 1.
Dieser Befehl holen, hole den Inhalt von Speicherzelle 1000.
Und Speicherzelle 1000, also hier werde ich zum Beispiel das zeigen,
das ist Instruktionsregister, so binäre Zahlen, so hier 0110, was weiß
ich, so hier voll.
Und auf jeden Fall zum Beispiel, erster Teil sagt, wird dekodiert als
Add, für Addieren.
Zweite Zahl sagt, Zahl so um 16 addieren, das heißt, das muss hier
irgendwie, nein, nein, dann was noch wir brauchen, ist Speicherzelle
um 500, das heißt, muss dann Speicherzelle 500 irgendwie, hier muss
das auch entschlüssen, dass es hier 500 war, und dann hier um 16 muss
es erhöhen.
Gut, was auch noch in Anfangszustand ist, ist das, okay, in 1000 gibt
es diesen Befehl, aber in Speicherzelle 500 haben wir schon eine Zahl,
dass es um 17 ist, und das wollen wir 17 plus 16 berechnen.
Gut, das ist in dem Instruktionsregister sowas, was es gibt, und in
Schritt 2 dekodiert er das, das heißt, das, was ich erzählt habe, wird
dekodiert, Add 500, Zahl 16, und dann muss dieser Befehl ausgeführt
werden, der sogenannte Execute.
So, er geht dann zu Speicherzelle 500, nochmal zu Speicher, aber jetzt
Speicherzelle 500, dann geht er hier wieder rein, 3a, er holt die
Information aus der Adresse 500, und dann gibt das dann in Rechenwerk,
weil der Rechenwerk muss addieren, dann hier diese Zahl zum Beispiel,
das ist jetzt 17, kommt hier rein, Rechenwerk, und dann führe auch
Addition 17 plus 16, das hier wird gemacht in Rechenwerk, in ALU, und
dann Ergebnis wird dann irgendwo in Speicherzelle 500 geschrieben,
deswegen hier irgendwo Speicherzelle 500, wo es 500 ist, wird 16 plus
17 geschrieben.
Und dann, was passiert später, ist, dass der nochmal automatisch
endet, diese PC-Programm-Counter, hier 1001, das ist wichtig, wenn Sie
eine Aufgabe bekommen, Sie sollen genau diesen Ablauf machen, die
Daten holen und so weiter, am Ende wird der PC den nächsten Wert
zeigen.
Gut, das ist relativ einfach.
So, jetzt frage ich, wie viele Speicherzugriffe hatten wir hier?
Also, wir hatten zweimal gelesen, einmal haben wir gelesen, was in
1000 steht, weil im Programm-Counter sagte er, geh in Adresse 1000,
das heißt, er hat einmal Speicherzugriff gehabt auf Adresse 1000, dann
in dieser Adresse war eine Instruktion, der sagte, hol die Daten aus
500, dann hat 500 gelesen und er hat addiert und so weiter und er hat
einmal geschrieben.
Was soll 17 plus 16, wie viel ist das?
16 plus 17 ist 33.
33 hat er geschrieben.
Das heißt, wenn irgendeine Frage kommt, wie viele Speicherzugriffe
hatten wir hier?
Drei.
Herr Schmeck hatte das nicht auf der Folie, diese drei, deswegen
notieren Sie, wenn Sie die Folien haben, notieren Sie, dass es drei
ist, nicht, dass Sie später fragen.
Gut, das ist eigentlich relativ einfach, wie das funktioniert.
Was es noch gibt hier, wir haben Eingaben und Ausgabeneinheiten.
Was ist ein Eingabegerät?
Tastatur, Maus, Sensoren, da können wir unterschiedliche Sensoren im
Computer haben, Drucksensoren, diese Mac-Laptops, die haben diese
Bewegungssensoren oder Drucksensoren oder Temperatursensoren, zig
unterschiedliche Eingaben können wir in Computers haben.
Und dann Ausgabe, was ist Ausgabe?
Monitor, Drücker, Bildschirm, Lautsprecher, und die sind die Ausgaben,
die wir haben.
Wirklich sehr einfach.
Es gibt auch andere Eingabegeräte, die wir haben, zum Beispiel Modem,
DSL, Internet, WLAN oder so, andere Computers, die zugreifen können
oder mit uns kommunizieren können.
Dann Festplatte haben wir, da haben wir Flachspeicher und die heißen
Sekundärspeicher.
Und über Sekundärspeicher werden Sie eine Vorlesung haben, irgendwann
nächste Woche.
Ich glaube, Mittwoch gibt es keine Vorlesung, dann ist es erst nächste
Woche, weil Herr Schmeck nicht da ist.
So viel, dass Sie verstanden haben.
Schauen Sie auf der Webseite genauer, ob es eine Mittwoch-Vorlesung
gibt.
Und was hier sehr wichtig ist, es ist relativ einfach, dass wir
Eingaben und Ausgaben haben, aber was sehr schwierig ist, ist die
Kommunikation zwischen CPU und diesen Geräten.
Warum?
Weil die halt andere Geschwindigkeiten haben.
Und der CPU holt immer Befehle.
Denken Sie, wie viele Befehle werden ausgeführt, wenn mein Computer
jetzt an ist und ich jetzt spreche und der Camtasia-Recorder
funktioniert und so weiter.
Das heißt, der Computer ist ständig, der CPU ist ständig, oder
Steuerwerk genauer gesagt, ständig Befehle ausführen.
Und jetzt haben wir ein Eingabesystem, zum Beispiel ein DVD-Player,
der deutlich langsamer ist.
Das heißt, der Computer, wenn wir nicht richtige Kommunikation
zwischen Eingabegeräten und Computer, CPU haben, dann kann der
Computer für die nächsten paar Sekunden nicht funktionieren, weil der
DVD -Player muss erstmal Daten holen.
Und das ist, warum wir die nächsten Folien haben.
Und wir sagen, wie können wir diese Kommunikation schneller machen?
Und deswegen kommen die nächsten Folien.
Aber auf jeden Fall, bei der Kommunikation sind drei Sachen, die wir
beachten sollen.
Erstmal Reihenfolge der Daten.
Wer ist wichtiger?
Zum Beispiel, wenn Ihr Computer einen Drucksensor hat, ob Drucksensor
wichtigste Eingabe-Präferie ist, das heißt, seine Informationen haben
Sie immer Priorität 1 und werden immer sofort ausgeführt.
Oder es ist eh unwichtig, dann haben wir Format von Daten und auch
Geschwindigkeit, das ist, was ich gerade besprochen habe,
Geschwindigkeit der Datenübertragung.
Und Steuerung der Kommunikation ist sehr wichtig.
Es gibt mehrere Möglichkeiten zu dieser Organisation von ER-Einheiten.
Und als erstes gibt es eine feste Zuordnung zwischen CPU und ER-Gerät.
Und dann, das heißt, wenn das ER-Gerät langsam ist, der Computer
bleibt stehen, funktioniert nichts, bis das ER-Gerät fertig ist und
dann seine Informationen wieder zurückgibt.
Oder haben wir irgendwie eine feste Zuordnung, wir sagen, DVD-Player
ist nicht so wichtig, aber irgendeine andere Tastatur zum Beispiel ist
viel wichtiger und das ist eine feste Zuordnung.
Wir definieren selber, wie diese ER-Geräte mit CPU kommunizieren.
Eine andere Zuordnung ist, dass eigentlich vielleicht was noch gemacht
wird, das ist unterbrechungsgesteuerte Ein- und Ausgabevorgang.
Das heißt, der CPU macht die ganze Zeit seine Berechnungen und jedes
Mal, dass Informationen kommen vom ER-Gerät, zum Beispiel DSL oder
Internet oder was auch immer, dann wird alles unterbrochen und dann
führt diese Aufgabe vom ER-Gerät aus und dann kommt wieder zurück und
macht seine Aufgabe.
Und hier hat Herr Schmeck... und warum wir so etwas machen, warum gibt
es diesen unterbrechungsgesteuerten Vorgang?
Weil ER-Geräte sind viel langsamer als CPU.
Und hier hat Herr Schmeck ein Beispiel.
Ich glaube, so ein Beispiel haben Sie auch noch in den Übungen.
Ich werde hier nicht so genau diese Beispiele erklären, wie diese
Zahlen kommen, aber ungefähr werde ich sagen, wie das zustande kommt.
Denken Sie, dass Sie eine DSL-Leitung haben.
Das heißt, das Eingabegerät ist eine DSL-Leitung mit 16 Megabit pro
Sekunde und dann ein PC mit 3 Gigahertz-Takt.
Was heißt 3 Gigahertz-Takt?
Das heißt, diese Befehle, die ausgeführt werden, die sind mit diesen 3
Gigahertz -Takten ausgeführt.
Das ist unglaublich schnell.
Okay, oder vielleicht heute mit den neuen Computers, die wir haben.
Das ist normale Geschwindigkeit.
Die werden auch noch schneller in Zukunft.
Und wir haben eine DSL-Leitung, die diese Daten gibt.
Und wie lange müssen wir warten, bis irgendein IP-Paket von minimaler
Größe, 576 Bytes, gelesen wird.
Also es dauert sehr lange, bis diese Daten kommen.
Und dann ist es genauso, wenn wir 900.000...
Die Zeit, die wir dafür brauchen, ist es, die 900.000 Maschinenbefehle
auszuführen.
Das heißt, deswegen, weil es so langsamer ist, dann dieser Interrupt
-basierte oder Unterbrechungs-basierte, gesteuerte Vorgang ist sehr
wichtig.
Und da gibt es zwei Modelle, zwei Arten von Unterbrechungen.
Eine ist, dass während das CPU arbeitet, es ab und zu mal
Informationen vom IA-Gerät liest und schaut, ob der jetzt fertig ist
oder Informationen gibt.
Oder gibt es auch ein zweites Modell, das CPU startet, so etwas wie
Interrupt -Handler.
Und dann, was ist das?
Ja, im Prinzip, das heißt, der schaut immer so, er hat ein Programm,
der kann diese Unterbrechungen immer berechnen.
Und dann sagt er, okay, jetzt gibt es eine Unterbrechung, wir sollen
dann weiter mit dem IA-Gerät arbeiten.
Im Prinzip, die sind beide ähnlich.
Was habe ich hier noch?
Ich glaube, ich habe hier etwas notiert.
Nein, habe ich nicht.
Und was Herr Schmeck hier auch nochmal sagt, ist, das Problem wird
vielleicht in Zukunft nicht mehr geben, weil die ER-Geräte werden auch
deutlich schneller.
Und Engpass wird dann später, in ein paar Jahren, bei CPU sein und
nicht mehr bei ER-Geräten.
Und das ist, was er hier rot geschrieben hat, zum Beispiel bei dieser
DSL -Leitung, bei 100 Megabit pro Sekunde, das wird dann anders
aussehen als bei 16 Megabit pro Sekunde.
Und wir denken, und es ist auch so, dass in Zukunft das, was wir heute
besprechen, nicht ein Problem aus Sicht von ER-Geräten ist, sondern
eher liegt bei CPU, dass CPU nicht so schnell die Kommunikation haben
kann.
Aber heute ist es noch so.
Gut, dann haben wir die ER-Prozessor, die wir für Eingaben-Ausgaben
-Geräte haben.
Und es ist halt so, dass wenn wir eine CPU haben und die CPU macht
dann die Befehle, die wir machen, die Arbeit, den Vorgang, den sie
selber hat, und dann können wir auch parallel einen ER-Prozessor
haben, der parallel und neben dieser CPU auch mit den Daten arbeitet,
deswegen diese Abbildung.
Und dann wird dann das, was wir auch eigentlich auf letzter Folie
hatten, ich muss das vielleicht besser erklären, was er hier unten
geschrieben hat, hat er gesagt, okay, das wird dann später so sein,
dass ER-Prozessor als ER-Einheit kommt und das wird parallel zu CPU
sein und parallel zu CPU funktionieren.
Gut, das war's.
Es ist ein sehr einfacher Teil von Vorlesung gewesen, so wie ein
Computer funktioniert und Rechenwerk und Steuerwerk und so.
Eine Aufgabe, was für sie wichtig ist, also Übung, ist es, wie
Steuerwerk mit Daten umgeht, diese Fetch, Decode und Execute oder die
Daten holen, dekodieren, also entschlüsseln und initiieren.
Diese drei Vorgänge sind sehr wichtig aus diesem Teil von Vorlesung.
Da kommt Bus-Konzept, das ist diese Zusammenarbeit zwischen
unterschiedlichen Teilen, so Elemente in einem Computer.
Das heißt, wir haben mehrere Geräte, wir haben CPU, wir haben ER
-Einheit, wir haben Speicher und so weiter und die sind alle mit einem
Bus verbunden.
Da habe ich vorhin ein Bild aus Wikipedia gezeigt, wenn Sie Ihren
Computer aufmachen, dann sieht normalerweise ein Bus im Computer so
aus, so wie diese gelben Teile, manchmal sehen die auch weiß aus oder
blau, ist auch egal, die sind für die Datenübertragung vorgesehen.
Und da werden so, es gibt unterschiedliche Busse, es gibt zum Beispiel
für Daten ein Bus, für Befehle, für Kontroll- und Statusinformationen
ein Bus, unterschiedliche Art von Busse, die es gibt.
Und ein Bus hat auch eine Bahnbreite, natürlich, und wenn wir Daten
zum Beispiel Adressen schicken, Daten schicken, zum Beispiel Daten,
ein Speicherelement für Speicherelemente, wollen wir eine Einheit, ein
Speicherelement schicken oder Adressen schicken, dann brauchen wir
eine Bahnbreite, dass diese komplette Daten, dass wir hier haben, 64
-Bit oder 32-Bit oder 8-Bit oder 4-Bit oder so, dann so schicken kann
und diese Bahnbreite hat.
Das ist schon klar.
So, Bahnbreite eines Busses heißt Anzahl der parallel übertragbaren
Bits, Anzahl der Leitungen, die wir haben.
Das ist da richtig physikalische Leitung, physische Leitung, die wir
bauen.
Meine Zeit, als ich studiert habe vor 20 Jahren, und ich habe
Elektrotechnik studiert, die Busse, die wir hatten, die sahen so aus
wie Kabel, die ganz, ganz dünn waren und zusammengeklebt waren, so
richtig dicke Kabel, aber da könnte man unterschiedliche Kabeln sehen.
Heute kann man auch zum Beispiel in Autos, wenn man ein Auto aufmacht,
eine CPU sieht, dann sieht man eine sehr dicke, breite, aber dünne,
mehrere Kabel, die zusammengeklebt sind und das ist ein Bus.
Das ist nichts anderes als sowas und ein Computer sieht ein bisschen
organisierter aus, aber es ist ein Bus.
Es ist gut erweiterbar und hat geringere Kosten, weil es ist nichts
anderes als ein paar Kabel, die zusammengeklebt sind.
Nachteil ist es dann Engpass.
Wenn wir mehrere Geräte haben, zum Beispiel hier CPU, Speicher eins,
Speicher zwei, EA und so weiter, und alle einen Bus haben zu
kommunizieren und die Daten vom Speicher holen, zum Beispiel wenn EA
-Einheit und CPU beide gleichzeitig Daten aus dem Speicher holen
wollen, dann gibt es Engpass, weil der eine muss warten, bis der
andere fertig ist und so weiter.
Und gibt es unterschiedliche Busarten natürlich, auch in der
Abbildung, was ich gerade vorhin gezeigt habe, sind unterschiedliche
Busarten gezeigt, so hier zum Beispiel für Daten hatte hier
geschrieben und so unterschiedliche sehen auch teilweise
unterschiedlich aus.
Und gibt es Datenbus, Steuerbus und Adressbus.
Datenbus ist bidirektional und Übertragung von Daten.
Bereite des Datenbusses entspricht der Anzahl der Bits, der
Arbeitsspeicherelement, das heißt, das ist sehr dick.
Adressbuch ist für Übertragung von CPU-berechneten Speicheradressen,
das ist für Adressen und Kontrollbus ist es für Steuersignale, die zum
Beispiel Steuerwerk und Rechenwerk sind, da schicken wir einige
Steuersignale und das ist dafür gedacht.
Ich denke, Steuerbus ist kleiner als zum Beispiel Adressbus oder
Datenbus.
Gut, dann gibt es Buszuteilung und das ist auch ein Teil von der
Vorlesung, dass es auch ein bisschen für die Übung oder für die
Klausur interessant wird, weil da kann man gut fragen, wie wird dann
Bus zugeteilt?
Zugeteilt gibt es erstmal eine zentrale Steuerung.
Es gibt auch verschiedene Möglichkeiten und ich glaube, Herr Schmeck
hat hier eine Abbildung, genau diese Abbildung unten.
Es gibt eine Bussteuereinheit, zum Beispiel sieht es hier so aus und
hier sind die unterschiedlichen Geräte, Geräte 1, 2, 3 und Geräte N,
kann CPU, Speicher, blablabla, alle diese Geräte sein und diese
Bussteuereinheit ist unten.
Zentral ist es so, er entscheidet, wer darf wann Bus verwenden, diesen
Kanal von Informationen benutzen.
Erstes Verfahren ist es so, er kriegt zum Beispiel Übertragungswünsche
von jedem Teilnehmer und über eigene Meldeleitung und dann
entscheidet, okay, der möchte jetzt zum Beispiel ein ER-Gerät, schickt
jetzt nichts, gibt es keine Information von Tastatur oder Maus oder
sowas, aber CPU möchte jetzt Daten holen von Speicher, das heißt, CPU
darf jetzt verwenden, er wird zentral entscheiden, wer darf was
machen.
Dann gibt es so, das heißt, beim ersten Modell heißt es, jeder schickt
sein Signal zur Steuereinheit, zur Bussteuereinheit und der
entscheidet oder kann auch umgekehrt sein, der schickt Informationen,
wer möchte wann was machen und nachdem er dann dieses Signal geschickt
hat, die schicken deren Informationen zurück.
Deswegen heißt es sogenannte Polling.
Und dann gibt es ein anderes Verfahren, zyklische Buszuteilung, das
ist unfair, eigentlich Buszuteilung ist, aber es ist halt so, dass er
sagt, okay, wir haben N Geräte, jeder kriegt zum Beispiel, deswegen
heißt es auch zyklisch, die Zeit teilt er auf N, sage ich mal hier 1,
2, 3, 4, 5, 6, 7, 8 und wenn wir 8 Geräte hätten und dann hier in
dieser Zeit darf Gerät 1 Bus verwenden, dann Gerät 2, dann 3, dann 4,
dann 5, 6, 7, 8 und dann, wenn Gerät 1 mehr aktiver ist, aber trotzdem
muss er so viel Zeit warten, bis er nochmal drankommt.
Deswegen heißt es zyklisch.
Das heißt, er muss immer im Zyklus warten, aber das ist dann zyklische
Buszuteilung und unabhängig von Übertragungswünschen.
Das sind die drei zentralen Methoden, die es gibt.
Aber gibt es auch dezentrale Steuerung, die sogenannte Daisy Chain, ab
und zu mal in meiner Zeit haben wir in Multiple Choice Fragen gefragt,
was ist Daisy Chain oder wie ist es Daisy Chain?
Ich glaube, heute gibt es kein Multiple Choice Fragen in den
Klausuren.
Ich weiß es nicht, aber das könnte sein.
Ich weiß es nicht mehr, wie das ist.
Aber wie funktioniert das?
Das ist auch eine so nicht faire Zuteilung, obwohl es dezentral ist.
Dezentral heißt, dass jedes Gerät schickt einen Sendewünsch über diese
gemeinsame, diese rote Leitung.
Okay, Steuereinheit weiß, okay, gibt es diese Sendewünsche.
Und dann, er schickt diese sogenannte Granting, so nach Request kommt
Grant.
Der schickt dann ein verfügbares Signal an das erste Gerät.
Und das erste Gerät nimmt dann das Signal, kann jetzt Bus verwenden.
Und wenn er fertig ist, gibt dann weiter an den zweiten.
Und wenn er fertig ist, gibt er dann weiter an den dritten und so
weiter.
Das heißt, jeder benutzt dann, also der Request wird geschickt, der
berechnet so, okay, er gibt einen Grant, das heißt, Bus ist jetzt frei
für euch.
Und dann ist dann Reihenfolge eins nach dem anderen.
Diese blaue Pfeile zeigt, dass Gerät eins zum Beispiel verwendet jetzt
Bus.
Wenn er fertig ist, dann Gerät zwei bekommt das, dann Gerät drei und
so weiter.
Und am Ende, wenn Gerät drei fertig ist, schickt er ein Freigabesignal
zum Bus, zur Steuereinheit, zur sogenannten Release.
Das heißt, wir sind fertig und wir haben es gemacht.
Und deswegen, das ist nicht faire Zuteilung, weil es kann sein, dass
Gerät eins für ein paar Minuten das Bus verwendet und der Rest muss
warten.
Das ist keine richtige, dezentrale und kluge Methode.
Dann gibt es parallele Abfragen, auch als dezentrale Methode oder
nochmal zyklische Buszuteilung oder noch ein anderes Verfahren.
Eine parallele Abfrage ist, dass jeder Sender eine deutliche Priorität
hat.
Und das ist gut, wenn jeder eine Priorität hat.
Und dann schickt man das an die Steuereinheit, die weiß, wer was für
Priorität hat und wer die erste Priorität hat.
Wer eine bessere Priorität hat, kriegt dann den Bus.
Und wer nicht so viel Priorität hat, muss sehr lange warten.
Bei zyklischer Buszuteilung ist es sogenannte Token Ring.
Token Ring ist ähnlich wie Daisy Chain, aber es ist halt so, dass
jeder einen Token kriegt.
Und solange, dass er den Token in der Hand hat, Token ist so wie ein
Ball oder ein Signal in der Hand.
Und solange, dass er dieses Signal in der Hand hat, dann kann er Bus
verwenden.
Wenn er nicht braucht, dann schickt er es an den Nächsten, der das
braucht.
Und solange, dass er das hat, dann blockiert er und dann so weiter.
Und dann gibt es noch ein anderes Verfahren, das ist ein bisschen so,
das verwenden wir auch im Ethernet, die sogenannte Carrier Since
Multiple Access.
Und jeder, der das Bus verwenden möchte, sagt, ich möchte es
verwenden.
Und alle schicken diese Signale.
Und da muss man schauen, dass irgendwie eine Kollisionserkennung oder
Kollisionsbehandlungsmethoden da durchgeführt werden und da verwendet
werden.
So viel über diese Methoden, wie ich vorhin erzählt habe.
Buszuteilung gibt es zentral oder dezentral.
Bei dezentral sind unterschiedliche Methoden.
Und was ist dann heute, was sind neue Technologien, die kommen?
Zum Beispiel optische Busse, das heißt, die sind nicht mehr Kabel, die
ich da vor 20 Jahren gebastelt habe oder wir noch haben, aber können
wir auch optische haben, die anhand von optischer Kommunikation
zusammenarbeiten.
Und diese Probleme sind ein bisschen anders, weil wir haben bei
optischen Bussen unidirektionale Datenübertragung.
Dann wenn wir was anderes, das heißt Pipelining, wenn wir heute
nochmal ein bisschen, ich denke, zeitlich schaffen wir es, über
Pipelining zu sprechen.
Das heißt gleichzeitig können mehrere auf den Bus zugreifen und wir
haben höhere Übertragungsgeschwindigkeit.
Und das bedeutet, dass es alles anders wird und vielleicht bessere
Kommunikationsmöglichkeiten.
Okay, und ich habe in den letzten Minuten sehr häufig über einen
Engpass gesprochen.
Und wir wollen jetzt ein bisschen über solche Engpässe sprechen.
Wir haben gesagt, wenn wir ein CPU haben und hier einen
Arbeitsspeicher und einen Bus haben, so Adressen, Daten und Befehle
dazwischen hin und her schieben wollen und die Daten holen wollen als
Arbeitsspeicher und nochmal schreiben wollen und so, dann gibt es da
einen Engpass, weil das ist halt viel zu viel Information für diesen
kleinen Bus.
Und dieser Engpass kommt, weil wir diese Von-Neumann-Rechner hatten.
Was waren diese Von-Neumann-Rechner?
Diese Von-Neumann-Rechner, es ist, dass wir sequenziale Daten haben.
Das heißt zum Beispiel erstmal Befehl 1, dann Befehl 2, dann wenn der
Befehl 2 fertig ist, dann Befehl 3.
Und es ist ein Programm-Counter, der diesen Befehl nach dem Befehl
ausführt.
Und deswegen gibt es diesen Engpass, weil da muss man immer hin und
her die Daten schieben und irgendwann kann dieser Bus das nicht
mithalten.
Ah ja, genau, diese strenge Sequenzialisierung aller Berechnungen, das
gibt es hier bei dieser sogenannten, und deswegen nennen wir das Von
-Neumann -Engpass.
Was kann man da machen, dass diese Engpass nicht mehr gibt?
Da gibt es unterschiedliche Methoden.
Ich glaube, hier haben Sie drei Methoden der Vorlesung.
Das erste Verfahren, das sehen Sie hier als A, dass wir
unterschiedliche Datentypen auf dem Hardware implementieren.
Sie kennen zum Beispiel Datentypen wie ein Vektor oder eine Liste oder
einen Baum.
Wenn wir zum Beispiel einen Befehl ausführen wollen, zum Beispiel
Addition von zwei Vektoren, wie wäre das bei einem Von-Neumann
-Rechner?
Okay, Element 1 wird geholt, gemacht, wieder zurück, dann Element 2,
Element 3, 4 bis in den Vektor durchgeführt, so fertig ist.
Das ist zu viel Daten hin und her.
Und die Idee hier ist, dass wenn wir zum Beispiel einen Vektor haben,
dann einfach die erste Adresse von dem Vektor, die Länge von dem
Vektor, und dann wo das Ergebnis reingehen muss, alle Informationen,
diese drei Informationen holen und auf dem Hardware das so
implementieren, dass es alles auf einmal gemacht wird.
Das ist viel besser und dann dieser Engpass wird nicht mehr so geben,
weil nicht so viele Daten immer hin und her transportiert werden.
Und das ist die Idee, dass wir unterschiedliche Datentypen auf
Hardware -Ebene implementieren.
Und die heißen Datenstrukturrechner und Unterstützung von
Datenstrukturen durch die Hardware
und Idealfall ist es, dass wir 1 zu 1 Abbildung haben.
Da werde ich auch gleich erklären, so werde ich gleich eine Abbildung
bringen von sowas, was wir damit meinen.
Warten Sie kurz.
Ich habe hier eine Abbildung.
Ist für alle klar, was eine sequenzielle Berechnung ist?
Ich sehe ein paar Gesichter, die das nicht kennen.
Ich habe meine Notizen, die ich dann weiß, ab welcher Folie was ich
sagen muss.
Für die, die es nicht wissen, was sequenziell ist.
Sequenziell heißt, wenn ich zum Beispiel A plus B plus C plus D machen
möchte.
Wie machen wir sequenziell?
Wir holen A und B und dann addieren wir und dann holen wir C, addieren
wir und dann holen wir D und addieren wir.
Am Ende haben wir das Ergebnis.
Parallel ist es, dass ich zum Beispiel A und B zusammen addiere und
dann habe ich C und D und dann die beiden auch.
Das wäre parallel.
Und die Idee ist es, dass wir nicht diese Geschichte mit diesen
sequenziellen Berechnungen, wollen wir, dass der Computer selber macht
und alles parallel macht und deswegen haben wir diese Methoden, dass
wir unterschiedliche Datentypen auf der Hardware haben.
Und die Datentypen, die wir auf der Hardware haben können, sind zum
Beispiel eine ganze Zahl, Gleitpunktzahlen, komplette Zahlen oder ein
Vektor oder ein Matrix oder eine Liste, eine lineare Liste oder eine
Schlange, Keller, komplette Datei oder sogar ein Objekt, das wir auf
der Hardware implementieren.
Gut, hier ist ein Beispiel, wie wir ein Datentyp zum Vektor auf
Hardware -Ebene implementieren können.
Das heißt, CPU wird mit gesamtem Vektor arbeiten und nicht nur mit
Speicherelementen, einzelnen Elementen.
Dafür brauchen wir Basisadresse eines Vektors, dann Anzahl der
Elemente und Datentyp.
Und dann haben wir so, dass wir zwei Vektoren haben, hier mit
unterschiedlichen Elementen.
Die zwei Vektoren holen wir aus dem Speicher und das ist dann in ALU,
in Reschenberg, dass die beiden addiert werden und Ergebnis ist dann
ein weiterer Vektor.
Das heißt, hier B und A, Basisadresse und Anzahl der Elemente des
Vektors brauchen wir, um zu initialisieren und Adressoperatoren und
Generatoren zu haben.
Die holen diese Daten, so hier Basisadresse zum Beispiel, hier ist die
erste Adresse von dem Vektor und dann der Rest, die Anzahl brauchen
wir, um zu wissen, okay, da sind A-Elemente drin und Datentyp ist es
zum Beispiel so viele Elemente hier.
Und für Vektor 1, für Vektor 2 und einmal können wir auf einmal die
Daten aus dem Speicher holen.
Die Hardware, die das unterstützt, heißt es Vektorrechner, weil es mit
Vektoren arbeitet und die Operationen, die wir machen, heißt es
Vektoroperation.
Gut, dann, nur zur Erinnerung, was wir bis jetzt hatten, ist es, wie
wir mit dem NGFAS umgehen.
Erster ist es, dass wir Datentypen auf Hardware-Ebene haben, dann
zweite Methode ist es, dass wir mit etwas arbeiten, das heißt,
assoziativer Zugriff auf Daten.
Und erstmal, was ist ein assoziativer Speicher?
Ein assoziativer Speicher sieht so aus.
Wir haben hier unsere Speicherelemente, Adressen und deren Inhalt.
Und wir suchen nicht die Adresse Nummer 513 oder hier Adresse N-3,
sondern wir suchen mit dieser Idee von assoziativer Speicher, wir
suchen Inhalte.
Dafür brauchen wir ein Hardware-Stück, das das macht und das ist hier
so, dass der Vergleich-Logik, das ist ein Hardware-Element, das können
wir dazu neben Speicher haben.
Und was macht der Vergleich?
Der vergleicht einfach Inhalte von Suchregister mit Inhalten, die wir
in Speicher haben.
Zum Beispiel Suchregister sagt, wir wollen Inhalt 11001010 hier
suchen, wobei Maskenregister sagt, welche Bits aus diesem Suchregister
wichtig sind für uns.
Und hier, wenn es 0 ist, das heißt, diese Elemente sind nicht wichtig
und nur 010 ist wichtig.
Das heißt, wir suchen in Speicher Elemente, die am Anfang einen 010
haben.
Warum?
Weil hier sind nur eins, das heißt, Maskenregister sagt, dass wir nur
diese drei Elemente suchen.
Das heißt, wir suchen in Speicher die Elemente, die hier mit 010
fertig sind.
So hier nochmal, wir haben hier nochmal und hier nochmal.
Und Ergebnis kommt hier, so hier sehen Sie, Ergebnis ist zum Beispiel
das erste Element, Adresse 0, Adresse N-3 und N-1 zum Beispiel.
Sie haben diesen Inhalt.
Okay, das ist ein Assoziativspeicher, wenn wir Inhalte suchen, können
wir es verwenden.
Das können wir nicht überall für alle Operationen verwenden, aber wenn
wir eine Aufgabe haben, CPU sucht irgendeinen Inhalt, kann er diese
Art von Assoziativspeicher verwenden und dann kann er dann schneller
die Daten finden und benutzen.
Und wie gesagt, typische Anwendungen, es ist nur für Suchvorgänge.
Nachteil ist, es ist komplexe Hardware und da gibt es auch
Assoziativprozessoren.
Es gibt einen Prozessor, der heißt Capra Context Addressable Process
Error und die sind so schwierig zu programmieren und haben auch sehr
spezielle Anwendungen.
Es werden heutzutage nicht benutzt, aber es ist eine Möglichkeit, dass
wir diesen Engpass vermeiden.
Wer kennt hier neurale Netze?
Neuronale Netze, Neural Networks.
Okay, ich habe auch, als ich die Folie gesehen habe und ich habe auch
die Aufzeichnung von letzten Jahren gehört, was Herr Schmeck genau
hier an dieser Stelle sagt, weil ich die Verantwortung habe an seinem
Vorlesungsfall, hat hier geschrieben, dass neuronale Netze können hier
benutzt werden, so in diesem Fall.
Und da habe ich gedacht, vielleicht wissen die Studenten das nicht,
was neuronale Netze sind.
Es ist zu früh, dass sie es wissen, eigentlich.
Ich glaube, später, wenn sie eine Vorlesung über Maschinen des Lernen
besuchen, sie werden dort neuronale Netze lernen.
Neural Networks oder neuronale Netze sind Methoden, die wir benutzen,
um Klassifikationen zu machen.
Zum Beispiel Handschrifterkennung oder Spracherkennung.
Wie kann ein Computer erkennen, dass wir, also gleiche Handschrift,
wie kann Handschrift erkennen, so wie meine Handschrift hier, diese
Computer kann eigentlich alles, was ich schreibe, meine Handschrift
erkennen.
Und dafür sind Algorithmen wie neuronale Netze da, die irgendwie
einige Muster lernen können.
Und die haben eine bestimmte Struktur und diese Struktur ist ähnlich
wie diese Assoziative Sprecher.
Deswegen hatte Herr Schmeck hier diesen Satz, dass können neuronale
Netze als eine Art assoziative Rechnungsstrukturen aufgefasst werden.
Sie müssen aber wirklich für diese Vorlesung nicht wissen, was
neuronale Netze sind.
Es gibt manchmal Informationen, die interessant sind für die Zukunft,
aber ich glaube nicht, dass das in der Klausur oder so diese
Informationen für sie notwendig sind.
Was auch Anwendung von dieser Art von assoziativen Speicher ist, ist
zum Beispiel den Cache-Speicher.
Wenn wir Inhalte suchen, kann man das auch verwenden.
Das ist eine sehr wichtige Aussage an dieser Stelle in der Vorlesung.
Gut, dann was können wir noch machen?
Wir können Parallelverarbeitung haben.
Das heißt gleichzeitige Ausführungen, mehrere Operationen.
Das heißt nicht nur eine Operation, sondern viele Operationen
gleichzeitig.
Und dann gibt es Rechnersysteme, die das machen können.
Ich glaube, alle unsere Rechner, die wir heute kaufen, die haben
Multiprozessoren.
Wer hat hier ein Playstation zu Hause?
Und ein Playstation hat mindestens neun Prozessoren drin.
Warum Playstation ist es so wichtig?
Und erste Multiprozessoren sind eigentlich Playstations gewesen.
Auch so Playstation 3 hat es angefangen mit Multiprozessoren.
Warum?
Weil einfach in Computergames viele Grafiken sind und die Grafiken
halt mehr Platz brauchen, mehr so diese Speicher brauchen.
Und da ist es diese Engpass und deswegen haben wir Parallelrechner
gehabt.
Und deswegen diese Zellprozessoren, die sind alle vorher in
Playstations gewesen und heute haben wir in unseren Computers.
Aber wir kennen auch diese Bezeichnung Dual-Core oder Multi-Core oder
Quad -Core.
Das sind Computers, die sind nichts anderes als parallele Prozessoren,
die wir haben.
Gut, aber was kann man parallelisieren?
Kann man Prozessoren, das habe ich gerade erzählt, kann man
Prozessoren parallelisieren.
Die sogenannte Nummer 2.
Aber wir können auch Teile von Prozessoren parallelisieren.
Das muss nicht unbedingt ein richtiger Prozessor fünfmal oder neunmal
auf der Platte sein, sondern kann man auch Teile von Prozessoren
parallelisieren.
Das sind Beispiele hier, zum Beispiel, wenn wir mehrere Rechenwerke
haben.
Pipeline -Rechner, Feldrechner, Vektorrechner und so sind relativ
alte.
Heute machen wir Multi-Prozessoren, vollständige Prozessoren, Multi
-Prozessoren, Many-Core-Systeme.
So Multi-Core war die Zeit, dass wir 10 Prozessoren hatten oder 16 und
heute, wenn wir mehr als 16 Prozessoren haben, sind es Many-Core, weil
es viele sind.
In Zukunft vielleicht haben wir hunderte Prozessoren auf einem kleinen
Rechner oder vielleicht unsere Kinder werden Millionen Prozessoren
haben.
Das ist die Technologie.
Oder eine andere Art von Parallelisierung ist es, dass wir mehrere
Rechner haben, so wie in Cloud Computing oder Grid Computing, dass wir
mehrere komplette Rechner haben und Universalrechner haben, die
miteinander kommunizieren.
Auf jeden Fall, das kann man machen, dass es alles dann schneller wird
und die Operationen gleichzeitig durchgeführt werden.
Und Rechner-Architekturen gibt es, diese Art von Parallelisierung kann
man klassifizieren.
Und dann, so im Jahr 1972 hat Flynn das so klassifiziert und es ist
immer noch heute gültig, wie diese Klassifizierung aussieht, kann man
die Anzahl von Steuerwerken, Befehlsströme oder Speicherbereichen
berücksichtigen.
Und deswegen, Sie sehen hier Single Data oder Multiple Data oder
Single Instruction oder Multiple Instruction.
Das ist seine Klassifizierung gewesen.
Was ist Single Data, Single Instruction?
Hier, wir haben eine Steuereinheit, wir haben einen Prozessor und wir
haben einen Speicher.
Das ist nicht parallel.
Single, Single.
Dann haben wir Multiple Data und Single Instruction, das ist dann, was
das hier ist.
Das heißt, wir haben ein Kontrollsteuerungssystem oder
Befehlssteuerwerk und dann haben wir mehrere Multiple Data, also
mehrere Speicher und dann haben wir Multiple Instruction und Single
Data, ein Speicher und mehrere Prozessoren und das ist vor vielleicht
fünf Jahren oder so, viele Leute haben gesagt, diese Multicore
-Systeme, das wird nicht funktionieren, weil die immer Shared Memory
hatten.
Das heißt, wir haben einen Computer, mehrere Prozessoren, aber alle
haben einen gleichen Speicher, ein riesiger Hauptspeicher und das war
ein richtiger Engpass.
Heute ist es anders und heute sieht es wie dieses System, dass wir
Multiple Data und Multiple Instruction haben, das heißt mehrere
Speicher und Memories, M für Memory und auch Steuereinheiten haben.
Und da müssen die auch irgendwie zusammenkommen, wenn wir mehrere
Rechner haben, mehrere Memories, müssen wir dann schauen, dass da hier
dazwischen ein Verbindungsnetz ist und deswegen sehen Sie hier auch
diese Verbindungsnetze.
Gut, hier nochmal die Abkürzungen, SISD, SIMD, MISD, MIMD und da gibt
es auch noch Single Program, Multiple Data, das ist eine andere
Architektur, dass es dann Flynn in 1972 nicht sehen könnte, aber es
ist ein Programm und mehrere Speicher, dass ein Programm mehrere
Speicher benutzen kann und das benutzen wir heute zum Beispiel in
Playstation.
Wir haben ein Programm, ein Computergame und mehrere Speicher
vielleicht auch noch, dass es da gibt.
Dann gibt es auch SMP, Symmetric Multiprocessor, die übliche
Serverarchitektur heute ist.
Shared Memory heißt, dass die alle gleiche Memory haben.
Hier haben wir Shared Memory.
Shared, das ist gemeinsame Nutzung von einem Hauptspeicher.
Dann gibt es unterschiedliche Ebenen der Parallelverarbeitung.
Dann gibt es Ebenen von Befehlphasen, so kleine Befehle, so wie ein
Steuerwerk die Befehle ausfüllen, laden, dekodieren und so weiter.
Dann haben wir Ebenen der Elementoperationen, wie wir diese Abbildung,
was ich gerade gezeigt habe, A plus B plus C plus D, zum Beispiel, wie
kann man das parallelisieren.
Dann gibt es Anweisungsebene, wie in Programmiersprachen,
Prozessebene.
Sie haben Programmieren 1 gehabt, so Sie kennen Threads in Java.
So ein Thread ist ein kleiner Prozess, das kann man auch
unterschiedliche Threads haben.
Sie haben wahrscheinlich auch sogar parallel programmiert, so Threads.
Dann haben wir unterschiedliche Jobs, das heißt mehrere Prozesse oder
mehrere Programme werden ein Job und das kann man auch
parallelisieren.
Eine grobe Unterteilung wäre dann feinkörnig und grobkörnig.
Bis zur Anweisungsebene ist es dann fein, das sind ganz kleine
Befehle, die Code und was im Steuerwerk passiert und so weiter.
Und ab Prozessebene ist es dann grobkörnige Parallelisierung, Task
oder Job Ebene und so weiter.
Und in meiner Forschung, natürlich wir machen parallele Algorithmen
und so, wir benutzen eigentlich diese zwei Themen, feinkörnig und
grobkörnige Parallelisierung.
Diese zwei Begriffe sind für uns, wir benutzen täglich, wie ist es
feinkörnig oder grobkörnig.
Gut, dann haben wir Pipeline Rechner.
Pipeline heißt Fließband oder Prozessorreihe und wir haben hier
unterschiedliche Bearbeitungseinheiten, wie in einem Fließband in
einer Firma oder in einer Fabrik.
Und dann haben wir unterschiedliche Befehle, einige Aufgaben zu
erledigen.
Und es gibt unterschiedliche Fließbänder oder ein Fließband erstmal so
Befehl 1 zu ausführen, dann kommt dann Befehl 2 und 3 und 4 und so
weiter.
Und wir können auch die Befehle zu kleinen Einheiten aufteilen und
dann haben wir, wir können dann dieses Konzept von Pipeline benutzen.
Das heißt, wir nehmen eine Aufgabe und wir zerlegen diese Aufgabe in
gleich große Teilaufgaben, die nacheinander ausgeführt werden können.
Pipeline ist auch ein Thema, das für Sie in Übungen und Klausur sehr
wichtig ist, weil hier kann man auch viel damit machen.
Aber erstmal, wie das funktioniert.
So, wir haben eine Aufgabe und diese Aufgabe haben wir in kleinere
Teile, die gleich sind und möglichst unabhängig voneinander sind,
geteilt.
So, hier eine Aufgabe und diese Aufgabe habe ich in vier Teile
geteilt.
Das heißt, erstmal muss dieser Teil gemacht werden.
Nachdem dieser Teil gemacht ist, dann kann ich diesen Teil machen und
dann nachdem und dann und so und so weiter.
Und in Fließband, wie ist das?
In Fließband, wenn wir mehrere solche Dinge haben,
dann steht eine Frau in der Fabrik, zum Beispiel mit Stempel etwas.
Kommt die erste Aufgabe, stempelt, geht weg, kommt die nächste,
stempelt und so weiter.
Das heißt, wir können erste Teilaufgaben eins nach dem anderen machen.
Und die Idee ist es, dass wir nicht hier warten, bis diese Aufgabe bis
Ende fertig ist und dann mit dem zweiten anfangen danach.
Sondern wir sagen, okay, sobald das erste Teil fertig ist, kann
eigentlich der erste Teil von dem zweiten anfangen.
Und das ist das, was in dieser Abbildung hier gezeigt wird.
Das heißt, wir haben eine zeitliche Überlappung zwischen Teilaufgaben.
Zum Beispiel, wir machen Aufgaben 1, also Teil 1 und dann wir kümmern
uns um Aufgaben Teil 2 und der Rechner oder Prozessor, der 1 macht,
dann kann er Nummer 1 hier machen.
Das heißt, hier sind unterschiedliche Aufgaben.
Hier haben wir zum Beispiel 1, 2, 3 Aufgaben und jede Aufgabe hat N
-Teile oder hier kann ich auch vielleicht K nennen, aber ist egal.
Und so können wir diese Parallelrechner besser nutzen, als wenn eine
fertig wird und dann nochmal zweite und dritte und so weiter.
So wird dann die Zeit besser genutzt.
Und das ist die Idee von Pipeline-Rechner.
Das heißt, wir haben mehrere Prozessoren und diese bearbeiten
unterschiedliche Teile von Aufgaben.
Beispiel.
Wir haben einen Befehl aus dem Steuerwerk, Befehl holen, entschlüssen,
Operand holen, ausführen.
F, D, O und E für diese Teile.
Das kennen Sie schon aus dem Beispiel, was wir heute hatten.
Und wir haben ein Pipeline mit vier Spezialrechner oder Teile, die
berechnen können.
Und wie können wir das machen?
Bei unterschiedlichen Takten.
Das heißt, jedes Mal, dass ein Takt ist, wird ein Befehl ausgeführt.
Okay, wir haben hier Takt.
Takt 1 wird F1 ausgeführt.
Dann, so das ist der erste, dann nächste Zeit kann D1, nachdem F1
fertig ist, dann im nächsten Takt kann D1 ausgeführt werden.
Nachdem D1 fertig ist, kann O1 fertig, also Operand geholt werden und
E1.
Das heißt, wir haben vier sogenannte BIs.
Was war ein BI?
BI hatten wir hier, Bearbeitungseinheit oder ein Rechner,
Prozessorteil oder ein Prozessor.
Wir haben vier hier, Bearbeitungseinheit 1, 2, 3 und 4.
Und Aufgabe von BI 1 ist es nur Befehl holen.
Prozessor 2 macht nur Dekodierung, Prozessor 3 macht Operand holen und
Prozessor 4 macht ausführen.
Okay, um die erste Aufgabe fertig zu machen, müssen wir Takt 1, so F1,
D1, O1 und E1 und sobald das F1 fertig ist beim BI 1, dann F2 kann
laufen und D2, O2 und E2 und so weiter.
Das heißt, wir können deutlich mehr Zeit gewinnen, indem wir diese
fließbare Arbeit machen.
Und das heißt, wenn wir nicht parallel gemacht hätten, wir hatten vier
Befehle und jeder hat vier Teile, das heißt vier Takten.
Das heißt, wir hatten hier vier Befehle mal vier Takten.
So viel Zeit brauchen wir, so 16 Zeiteinheiten, Takten brauchen wir,
um diese vier Aufgaben zu lösen.
Und jetzt hier brauchen wir vier Aufgaben plus dann vier Befehle minus
eins Takten, die wir das bearbeiten.
Das heißt, wir haben n Befehle und k Teilaufgaben.
Ohne Pipeline brauchen wir n mal k Takten und mit Pipeline n plus k
minus eins.
Wir sehen hier auch, dass genau die Zahl stimmt.
Vier plus drei oder vier plus vier minus eins gibt uns sieben.
Sonst brauchen wir 16 Zeiteinheiten.
Pipelines unterscheiden man auch nach der Ebene der Anwendung.
Natürlich ist es abhängig von den Anwendungen, die wir haben.
Wir haben unterschiedliche Befehlsebene.
Wir können zum Beispiel arithmetische Pipelining haben.
Ich glaube, Sie haben Pipeline auch sogar vorher gehabt, oder?
Pipeline mussten Sie irgendwo vorher gehabt haben.
Ach, okay, gut.
Das heißt, Sie kennen eigentlich, wie Pipeline funktioniert.
Und wir können auch unterschiedliche Prozessionen haben, die
unterschiedliche Teilaufgaben machen, nicht immer das Gleiche machen.
Zum Beispiel bei einem Funktionspipeline wird immer nur dieselbe Folge
von Operationen ausgeführt und bei einem Multifunktionspipeline
verschiedene Operationsfolgen können wir auch einstellen.
Und hier ist es auch ein Kommentar, dass das Pipelining heute überall
benutzt wird, auch in Signalprozessoren.
Signalprozessoren sind die Prozessoren, die wir für
Signalverarbeitung, zum Beispiel Spracherkennung oder auch grafische
Datenanalyse benutzen können oder auch im Vektorrechner kann man diese
Pipeline benutzen, wird benutzt in Computers.
Gut, in modernen Mikroprozessoren, was ist ein Mikroprozessor?
Wissen Sie, was ein Mikroprozessor ist?
Mikroprozessor sind dann die Prozessoren, die für bestimmte Aufgaben
gemacht sind.
Zum Beispiel ein Handy, das wir haben, hat einen Mikroprozessor, weil
das ist für bestimmte Aufgaben, es ist kein Universalrechner, sondern
das ist für bestimmte Aufgaben aufgebaut und gemacht ist.
Und das können wir bis zu 30-stufiger Pipeline haben, das ist schon
sehr, sehr gut.
Manchmal muss man achten, da gibt es Probleme, wenn wir mehrere
Pipelines haben, die leer laufen, weil die Programme nicht dafür so
gut geschrieben sind.
Und deswegen, dass einige Pipelines, einige Prozessoren nicht leer
laufen, weil die Programme halt falsch geschrieben sind oder nicht
dafür gemacht sind, da gibt es die sogenannte spekulative
Programmausführung.
Und dann wird vorher erstmal ein Test gemacht, geschaut, wie das ist
und dann genau dafür wird erstmal, es gibt ein Programm oder ein
Problem, das Problem wird erstmal getestet und geschaut, wie kann man
das in Pipeline programmieren.
Und wenn man das programmiert hat, wird dann ausgeführt und deswegen
die sogenannte spekulative Ausführung.
Wenn Sie Vorlesungen effizienten Algorithmen von Herrn Schmeck hören,
da werden Sie viel mehr von Pipeline und dieser Strukturen hören.
Die Vorlesung, ich glaube, ist es für Masterstudenten oder sogar für
Bachelor, weiß ich auch nicht, aber da ist es ein Thema, wie man
parallel alles ausführt und wie hart die Implementierung da gemacht
wird.
Dann haben wir Multi-Threading.
Ich glaube, Multi-Threading kennen Sie schon auch aus Java
-Programmieren.
Eigentlich, ein Prozessor kann normalerweise jeden Tag nur ein Thread
bearbeiten und wir wissen, dass ein Thread nicht immer komplett volle
Rechenleistung nutzt, manchmal 35%.
Und deswegen gibt es sogenannte Multi-Threading, so die Prozessoren,
die dafür gemacht sind, dass die mehrere Threads gleichzeitig
ausführen.
Und können sie auch sogenannte Multi-Prozessoren sein.
Und daher ist es wichtig, wenn wir solche Systeme haben, dass die
Rechenleistung nicht erhöht wird, sondern nur besser benutzt.
Und Hyper-Threading braucht 5% mehr Gata und bringt dann für uns
hoffentlich sehr manchmal auch bis zum Doppelte Leistung und Worst
-Case ist es auch so, dass es dann vielleicht auch verlangsamt, die
ganze Geschichte.
Durchschnittlich ist es 10-20%, deswegen Hyper-Threading ist ein Thema
auch in Informatik, wie kann man das benutzen, um diese Multi
-Threading durchzuführen.
Dann haben wir ein Multi-Prozessor-System, das kennen Sie schon,
dieses Multi-Prozessor-System, wie Multi-Core-System oder unsere
Rechner, die wir haben.
Und das sind für Parallelverarbeitung auf Task- und Job-Ebene,
sogenannte grobkörnige Parallelität.
Hier mache ich ein bisschen schneller.
Dann haben wir, hier sind bei Multi-Prozessor-System, haben wir System
wie in Playstation, alle Prozessoren sind gleich.
Und dann nennen wir das homogene System, das heißt, alle Prozessoren
sind gleich und homogen.
Aber wir können auch heterogene System haben, das ist nicht bei Multi
-Prozessor -System so in der Form, sondern wenn wir Grid haben oder
ein Cluster haben von Computers, die zusammen eine Aufgabe parallel
ausführen sollen.
Und dann haben wir alle Prozessoren, die gleiche Funktionalität haben.
Das heißt, wir können dann Arten der Prozessoren haben, die
unterschiedlich sind oder nicht oder Funktionen, die die ausführen.
Manche sind symmetrische Systeme, manche sind asymmetrische Systeme.
Und auch die andere Unterscheidung, die wir haben, das ist die Art der
Kopplung der Prozessoren.
Ob die stark gekoppelt sind, wie in Multi-Prozessoren von Playstation,
die sind stark gekoppelt auf eine Hardware-Platte oder können sie grob
und schwach gekoppelt sein, wie wenn wir mehrere Rechner haben, die
hier zusammen was machen in einem Cluster oder ein Grid Computing oder
Cloud Computing, die sind alle irgendwo verbunden.
Wenn wir diese Art von Cloud oder Grid Computing haben, dann brauchen
wir Kommunikation zwischen Rechnern und das sind sogenannte Methoden
wie Message Passing oder andere Methoden, die es da gibt.
Oder wenn wir auch diese Grid Computer haben, dann haben wir auch
sogenannte verteilte Rechner.
Das heißt, jeder Rechner hat seinen Speicher und seine Informationen
und da müssen wir schauen, wie die Informationen ausgetauscht werden.
Ich glaube im Prinzip, Sie kennen alle diese Ideen.
Und Beispiele dafür sind Macintosh-Systeme, mehrere Prozessoren in
einem Workstation, gemeinsame Speicher.
Es ist ein stark gekoppeltes System.
Dann haben wir Workstation-Clusters.
Wir haben Clusters bei uns zum Beispiel, wenn Sie im Labor sitzen und
irgendwo auf dem Computer hier irgendwo im Seapool zum Beispiel, das
ist ein Cluster.
Das heißt, die Rechner sind zusammen gebunden und wenn man von dem
Rechner zum nächsten Rechner Informationen schicken möchte, dann
braucht man irgendwie ein Kommunikationsmodul.
Und dann Workstation-Cluster sind mehrere hundert PCs, die
normalerweise ein Linux-Operating-System haben und verteilte Speicher
auch natürlich haben.
Dann haben wir eine Reihe von anderen Prozessoren, zum Beispiel Cray
oder HP von Hewlett Packard oder Cell.
Cell ist ein Prozessor, ein Multicore-Prozessor im Playstation.
Das hat neun Prozessoren.
Ich glaube, die Playstations, die wir heute kaufen, vielleicht haben
sie mehr als 64 Prozessoren.
Ich weiß es wirklich nicht, aber diese Technologie wächst so schnell,
dass wir auch selber nicht wissen, wie es ist.
Der erste Cell-Prozessor war Playstation 3 mit neun Prozessoren.
Das war für Sony.
Nachrichtenaustausch zwischen mehreren Prozessoren kann man zum
Beispiel PVM nehmen.
PVM ist eine Programmiersprache, Parallel Virtual Machines.
Das ist viel dafür gemacht, dass die parallelen Prozessoren
miteinander kommunizieren.
Oder MPI-mäßig Passing Interface.
Wenn Sie Interesse haben, genau zu schauen, wissen, wie wir diese
Programmierung machen, können Sie dann die Vorlesung verteilter
Algorithmen zum Beispiel besuchen.
Wir haben noch zwei Folien.
Ich mache es ganz schnell hier.
Sie sehen hier ein Cellboard, das ist in der Playstation und Sie sehen
hier acht Prozessoren, die da stehen.
Und auch noch hier die Teile, das ist ein Haupt-CPU und acht
Prozessoren da.
Insgesamt gibt es neun Prozessoren.
Das ist von 2006, deswegen denke ich, wenn wir Playstation heute
aufmachen, wird es anders aussehen.
Wir sehen auch Bus-Struktur, diese Linie in der Mitte ist dann Bus
-Struktur, auch an der Seite.
Und was interessant ist, nachdem Playstation das hatte, dann die
Wissenschaftler wie wir, wir haben dann parallel Prozessoren von
Zellen genommen und unsere Forschung auf Multiprozessoren gemacht.
Aber die haben erst mal für Computerspiele das entwickelt, das muss
man sagen.
Okay, was sind dann verteilte Systeme?
Verteilte Systeme kennen wir zum Beispiel auch für Grid Computing oder
Cloud Computing.
Und da gibt es unterschiedliche Rechner, deswegen haben wir heterogene
Rechner.
Wir können heute jetzt alle unsere Rechner zusammen verbinden und dann
haben wir ein verteiltes System.
Oder wir können jetzt alle unsere Handys, wir können es auch machen,
mit Bluetooth verbinden und dann haben wir ein verteiltes System.
Bluetooth kann nur bis drei Meter kommunizieren oder eins bis zehn
Meter in der Regel.
Und dann, das heißt, ich kann mit den Leuten, die oben sitzen, nicht
direkt kommunizieren, sondern durch sie hier vorne und da vorne und
vorne und so, und dann können wir miteinander kommunizieren.
So haben wir ein verteiltes System.
Und die Kommunikation ist durch Netzwerk und Rechernetz.
Wir können auch ein privates Netz für Vorlesungen zum Beispiel bauen.
Und das Ziel ist es, dass wir Leistung erhöhen.
Okay, natürlich nicht jetzt wie ein Handybeispiel, aber wenn wir
mehrere Rechner haben, die zusammen gebunden sind, dann können wir
höhere Leistungen haben.
Wir können auch höhere Zuverlässigkeit haben, wenn ein Rechner
ausfällt, das ist egal.
Der Rest, die funktionieren, das ist auch die Idee von Internet.
So am 9.
September, 11.
September in Amerika, alles Strom ist ausgefallen, alles ist
ausgefallen, aber Internet ist nicht ausgefallen.
Warum?
Weil die so zusammen verteilt gebunden sind und wenn ein Server nicht
funktioniert, ist es egal, Internet kommt von anderen Seiten.
Deswegen haben wir hier erhöhte Zuverlässigkeit bei verteilten
Systemen.
Und was haben wir noch?
Gleichmäßige Lastverteilung und verbreitete Dienstleistungsangebote,
so wie E-Mail, www.
Gut, dann allerletzte Folie.
Gibt es unterschiedliche Realisierungen für verteilte Systeme?
Es gibt Client-Server-System, das heißt, das ist das Typische, was wir
hier an der Uni haben.
So ein Server-System, das ist ein Master und dann sind die anderen
Ressourcen, die damit verbunden sind.
Dann haben wir Peer-to-Peer-System.
Peer-to-Peer-System wäre das gewesen, was wir jetzt mit unseren Handys
machen.
Peer -to-Peer, das heißt, es gibt kein zentral gesteuertes System,
sondern wir alle miteinander kommunizieren.
Wir können auch ein dynamisches System haben, wenn einer jetzt den
Raum verlässt, ist es egal, wir finden unsere Kommunikation durch
anderen.
Sogenannte Peer-to-Peer-System.
Grid-Computing ist etwas anderes, das heißt, es sind
Hochleistungsrechner und ein Station, das ist auch das Modell da oben.
Und es gibt mehrere Rechner, die können auch feste Rechner sein oder
sie können auch freie Nutzer sein, die deren Rechner zur Verfügung
stellen.
Und dann berechnen die eine riesige Aufgabe, zum Beispiel in meiner
Forschung.
Wir haben Struktur von Molekülen berechnet und dafür brauchen wir
super Computers oder diese Grid, dass die alle gleichzeitig für uns
die Berechnungen machen.
Cloud-Computing kennen wir alle von Amazon.
Amazon, die Informationen, die wir dort haben, oder Facebook, wo sind
die Daten, die wir haben?
Irgendwo im Himmel.
So, wo sind unsere Bilder gespeichert?
Wir wissen es eigentlich nicht, aber es ist irgendein virtueller
Speicher.
Natürlich, diese Speicher gibt es irgendwo, aber wir wissen nicht, wo.
Und das ist diese Idee von Cloud-Computing.
Angebot und Nutzung von Services und Rechenleistungen nach Bedarf über
virtualisierte Ressourcen.
Das heißt, wir Ressourcen nicht kennen, aber irgendwie die Ressourcen
benutzen.
Gut, ich bin deutlich überzeugt.
Vielen Dank für Ihre Aufmerksamkeit und diese Capital ist jetzt auch
zu Ende.
Danke.