Computer und Physik

Transcription

Computer und Physik
Computer und Physik
1 of 10
http://physik.uni-graz.at/~cbl/C+P/admin/mk_combined_fi...
Computer und Physik, version dated 2005-11-15 13:48:40
1.3 Computerarchitektur
1.3.1
1.3.2
1.3.3
Skalarrechner
Vektorrechner und Parallelrechner
Biocomputing und Quantencomputer
1.3.1 Skalarrechner
Die Bezeichnung kommt vom Unterschied zu den so genannten Vektorrechnern . Mit dem Beiwort "skalar" versieht man Computer, die
(im Gegensatz zu den später diskutierten "Vektorcomputern") die Rechenoperationen der Reihe nach, also "seriell", ausführen.
Ein so genannter Mikrocomputer ist ein Prototyp eines skalaren Rechners. Das sind die der Von-Neumann-Maschine ähnlichsten
Computer sind. Sie sind vom Typ SISD (Single Instructionstream, Single Datastream) und bestehen meist aus einer CPU auf einem
Chip, einem fest eingebauten Speicher und I/O Bausteinen. In dieser Zusammenstellung passen sie auf eine kleine Platine und eignen
sich vortrefflich, um einfache Aufgaben vielfältigster Natur zu übernehmen.
Diese selbständiges Einfachstcomputer können Ihre Waschmaschine steuern, oder ein Experiment überwachen. Sie können
Peripherie-Geräte wie Drucker, Terminal oder externe Speicher betreiben. Sie finden sich in Uhren, Taschenrechnern und
Glatteiswarnern. Sie sind das Zauberwort für die Lösung unserer alltäglichen Umweltprobleme und die Innovation der
Konsumgüterindustrie. Wenn Ihnen ein bisher unbekannter Anwendungsbereich einfällt, zögern Sie nicht, sondern gründen Sie sofort
eine Firma.
Nicht gezögert haben Jobs und Wozniak, als ihnen einfiel, wie sie einen Mikrocomputer mit Diskettenspeicher, Tastatur und Bildschirm
versehen zu einem Personalcomputer machen können. Der APPLE wurde zum ersten erfolgreichen Heimcomputer. Seine Geschwister
und Nachfahren - Sammelbegriff PCs - findet man heute in der Preisklasse zwischen 100 und 10.000 EUR.
All diese Computer werden in relativ großer Serie gebaut und habe als CPU meist frei am Markt erhältliche Chips. Manche Bastler bauen
sich "ihren PC" selbst.
Die Geschwindigkeit ergibt sich aus der Kombination zwischen dem Befehlsvorrat und der Taktrate. Heute (2004) gebräuchliche
Taktraten bewegen sich im Bereich um die 1-3 GHz. Neben den derzeit gebräuchlichsten Prozessoren der Erzeuger Intel und AMD gibt
es auch speziellere Prozessoren vom Type RISC (Reduced Instruction Set CPUs) und andere, die zum Teil besonders lange
Rechenregister haben und pro Takt mehrere Gleitkomma-Operationen durchführen können.
Die Rechengeschwindigkeit für Gleitkommazahlen (die meist in wissenschaftlichen Rechnungen wichtig ist) wird in FLOPS (Floating
Point Operations per Second) gemessen. Ein FLOPS bedeutet, dass der Computer eine Gleitkomma Operation pro Sekunde
durchführen kann. Eine Rechengeschwindigkeit von 100 FLOPS bedeutet, dass er pro Sekunden 100 Mal eine Multiplikation oder
Addition von zwei Dezimalzahlen ausführen kann.
Die Bestimmung der FLOPS-Rate passiert mit Hilfe von "Benchmark"-Programmen, in denen typische Rechnungen durchgeführt werden
und die effektive FLOPS-Rate pauschal bestimmt wird. Diese ist meist deutlich unter der Takt-Rate. Die theoretische
Spitzengeschwindigkeit kann in der Praxis meist nicht verwirklicht werden, da ja in realistischen Rechnungen neben den reinen
Gleitkomma-Operationen auch Anderes passiert (Speicherzugriffen, Entscheidungsabfragen, Verzweigungen im Programm etc.).
Die frühen PCs (wie etwa der Commodore C64) hatten einen FLOPSWert um 400. Die FLOPS-Werte sind für PC-artige Prozessoren mit
zum Beispiel 1 GHz Taktrate in typischen Programmen etwa bei 200-300 MFLOPS (1 MFLOPS = 1000000 FLOPS), es gibt aber
Ausnahmen für einzelne Anwendungen, wo die Rate deutlich höher oder niedriger sein kann.
Daneben gibt es noch andere Varianten, die effektive Rechenleistung von Computern zu bewerten (zum Beispiel die SPECMARK
-Programme). Dies messen meist unterschiedliche Arten der Leistung, deren Schwerpunkt auf Ganzahl-Operationen ("Integer") oder
speicherzugriffintensiven Rechnungen liegen kann. In der Praxis sollte einer Kaufentscheidung am besten ein eigens erstellter
Benchmark mit für den eigenen Bedarf typischen Programmen erstellt und getestet werden.
Nur der Preis und die Qualität und Größe der Teile eines Skalarrechner entscheidet darüber, ob man dazu PC, Workstation,
Zentralrechner eines Rechenzentrums, Supercomputer oder sonst was sagt.Von ihrer Architektur her können sie alle Skalarrechner, also
nach dem SISD Konzept gebaut sein. Allerdings sind tatsächliche "Supercomputer" oder "Hochleistungsrechner" meist eben vom Typ
Vektorrechner und Parallelrechner, und damit SIMD oder MIMD, wie später besprochen.
15.11.2005 14:06
Computer und Physik
2 of 10
http://physik.uni-graz.at/~cbl/C+P/admin/mk_combined_fi...
Entwicklung der Rechengeschwindigkeit von "Mikrocomputern" (also seriellen Rechnern) im Vergleich zu so genannten
"Supercomputern" (hier im Sinne von Vektorrechnern).
Oft besteht die Möglichkeit, zusätzlichen Prozessoren einzubauen, also die Maschine mit 2 oder 4 CPUs zu betreiben. Das ist ein Schritt
zum Typ MIMD (Multiple Instructionstream, Multiple Datastream); jeder der Prozessoren arbeitet unabhängig und bearbeitet
überlappende oder verschiedene Teile des Zentralspeichers. Häufig wird in den Programmen der "Letztverbraucher" aber auf diese
Struktur nicht Rücksicht genommen, und oft können die verschiedenen Prozessoren gar nicht von diesen parallel genutzt werden. Die
Systemprogramme teilen dann einfach die verschiedene Benutzerprogramme auf verschiedene Prozessoren auf, um auf diese Art die
Kapazität der Maschine zu erhöhen.
Aufgabe 1.3.1.A1
Aufgabe 1.3.1.A2
Aufgabe 1.3.1.A3
1.3.2 Vektorrechner und Parallelrechner
Wir haben festgestellt, dass es bei den Computern vom Von-Neumann Typ, also SISD Bauweise, von der Natur her Leistungsgrenzen
gibt. Die Taktgeschwindigkeit lässt sich nicht beliebig steigern, da sich ja auch die Miniaturisierung nicht beliebig fortsetzen lässt - es gibt
technische Grenzen für die Schaltgeschwindigkeit. Speziell bei großen und gleichzeitig schnellen Speichern stößt man an eine
prinzipielle, von der Natur gesetzte Grenze: die Geschwindigkeit der Elektronen oder anderer Ladungsträger kann nie die
Geschwindigkeit der Lichtquanten übersteigen. Diese Teilchen können also in einer Nanosekunde höchstens einen Weg von 30 cm
zurücklegen, in der Praxis meist weniger, da es sich ja um eine Bewegung in Materie und nicht im Vakuum handelt.
Es gibt also Grenzen für die Anzahl der Rechenoperationen, die in einer Sekunde durchgeführt werden können. In den heute gebauten
Rechnern sind wir noch nicht ganz an diesen Grenzen angelangt, aber die ersten Probleme treten schon auf. Nun haben wir auch schon
die verschieden Möglichkeiten erwähnt, diese Schranken dennoch zu überwinden. Das Stichwort dafür ist Gleichzeitigkeit. Man
konstruiert einfach "parallele" Computer, bei denen die Recheneinheit in der Lage ist, mehrere Rechnungen gleichzeitig, nebeneinander
durchzuführen. Diese SIMD oder MIMD Maschinen bringen eine Leistungssteigerung von Faktoren 100 und darüber.
Durch dieses Konzept der Parallelität ergeben sich aber auch Einschränkungen. Ketten von Rechenprozessen, bei denen jeder Schritt
vom Ergebnis des vorhergehenden abhängt, können natürlich nicht gleichzeitig statt hintereinander gerechnet werden. Nun sind aber
gerade die vom Rechenaufwand aufwändigsten Problemstellungen häufig "parallelisierbar". Beim Versuch den künftigen Wetterablauf
vorherzusagen, betrachtet man zum Beispiel ein Modell der Atmosphäre, das aus vielen kleinen Teilen zusammengesetzt ist. Jedes
Stückchen des gesamten Volumens hat einen bestimmten Feuchtigkeitsgrad, eine bestimmte Temperatur und eine Geschwindigkeit in
irgendeine Richtung, wie N, O, S, W, hinauf oder hinunter. Sein Verhalten wird von den entsprechenden Eigenschaften seiner Nachbarn
bestimmt, also wieder kleiner Himmelsbrocken mit ähnlichen Eigenschaften. Dazu kommt der Einfluss der Sonnenstrahlung, der
Erdoberfläche, der Erddrehung, und bei besonders gefinkelten Modellen vielleicht sogar der Flugzeuge. Mathematisch gesehen handelt
es sich um ein System von sehr vielen miteinander gekoppelten Differenzialgleichungen, für jedes Teilvolumen eine.
Im Teil C werden verschiedene solcher Anwendungsmöglichkeiten exemplarisch vorgestellt. Ihnen allen gemeinsam ist die eben
erwähnte Struktur: das Problem lässt sich auf ein System von vielen kleinen Untereinheiten zurückführen, die alle miteinander in lokalen
Datenaustausch sind. Die Lösung dieses gekoppelten Systems ist auch die Lösung des ursprünglichen Problems.
Wie können wir die Gesamtleistung eines Computers steigern, obwohl schon aus physikalischen Gründen eine Leistungsgrenze der
CPUs gegeben ist? Diese Situation erinnert an die Problemstellung zu Beginn der industriellen Revolution. Die einzelne Werkstätte
konnte, selbst bei Einsatz guter Maschinen, ihre Leistung nicht mehr steigern.
Zwei Lösungswege hat man damals eingeschlagen. Zum einen hat man Fabriken mit mehreren Arbeitsplätzen geschaffen, an denen
gleichzeitig die gewünschten Produkte erzeugt wurden. Zum anderen hat man den Erzeugungsvorgang in viele kleine Schritte unterteilt,
die dann entlang einem Fließband hintereinander an verschiedenen Arbeitsplätzen ausgeführt wurden. Beide Wege werden auch beim
Entwurf von Supercomputern beschritten: Parallele Prozessoren und "Pipelining".
15.11.2005 14:06
Computer und Physik
3 of 10
http://physik.uni-graz.at/~cbl/C+P/admin/mk_combined_fi...
Schematische Darstellung des Rechenvorgangs bei parallelen Prozessoren im Vergleich zu Vektor-"Pipelining"
In dieser Abbildung sind beide Möglichkeiten anhand einer einfachen Aufgabe dargestellt. Die Aufgabe ist, eine Anzahl von N Zahlen
jeweils zu der entsprechenden Zahl einer zweiten Menge
zu addieren, um so eine Ergebnismenge
zu bekommen, als Formel geschrieben also
Im Fall parallel arbeitender Prozessoren wird der erste Prozessor die Rechnung
ausführen, der zweite die Rechnung
, und so weiter.
Im Falle des "Pipelining" wird zwar eine Operation nach der anderen ausgeführt, die Additionen aber in sehr viele kleine, einfache
Teilschritte zerlegt, die innerhalb der CPU von verschiedenen Prozessoren hintereinander ausgeführt werden. Wie wir gleich sehen
werden, ergibt sich auch so ein großer Zeitgewinn.
1.3.2.a Vektorarchitektur und "Pipelines"
1.3.2.b Parallelrechner-Konzept
Aufgabe 1.3.2.A1
Aufgabe 1.3.2.A2
Aufgabe 1.3.2.A3
Aufgabe 1.3.2.A4
Aufgabe 1.3.2.A5
Link zur Liste der weltweit leistungsfähigsten Computer
1.3.2.a Vektorarchitektur und "Pipelines"
Jede, noch so einfache, arithmetische Rechenoperation wird in viele kleine und einfache logische Teiloperationen zerlegt. Wir wollen als
Beispiel zunächst die Multiplikation von zwei beliebigen, dreistelligen Dezimalzahlen betrachten.
125 x 243=125 x 3+125 x 4 x 10+125 x 2 x 100=30375
Wie sind wir vorgegangen? Wir haben die Zahl 125 mit der Einerstelle des Multiplikators multipliziert, dann 125 mit der Zehnerstelle
multipliziert und das Ergebnis durch Anhängen einer 0 verzehnfacht und addiert. Zu diesem Zwischenergebnis haben wir schließlich das
100-fache der mit der Hunderterstelle multiplizierten Zahl 125 addiert.
In Worten klingt das reichlich umständlich - daher also noch einmal eine Stromlinienfassung. Dazu denken wir uns einen Zähler X, den
wir zu Beginn auf Null setzen, also löschen, und der während der Rechnung die Rolle einer Zwischensumme spielt, also ein
Addierregister. Der Rechenvorgang könnte dann folgend symbolisiert werden:
1.
2.
3.
4.
0 -> X
125 x 3+X-> X
125 x 4 x 10+X ->X
125 x 2 x 100+X ->X
Nach Ausführung dieser Rechenvorschrift (tatsächlich ein Algorithmus wie in 1.1.2 Was ist ein Computer - was ein Algorithmus?
besprochen) enthält der Zähler X das Ergebnis. Was brauchten wir dabei an Rechenkünsten? Nun, wir mussten addieren, wir mussten
dreistellige Zahlen mit einstelligen Zahlen multiplizieren, und wir mussten mit 10 und 100 multiplizieren. Das Letzte war das Einfachste,
man brauchte ja nur eine oder zwei Nullen anzufügen, also den Stellenwert der Zahl entsprechend zu erhöhen.
Auf die gleiche Art können wir uns die Zerlegung der Multiplikation zweier Binärzahlen mit je acht Stellen in einfachere Teilschritte
15.11.2005 14:06
Computer und Physik
4 of 10
http://physik.uni-graz.at/~cbl/C+P/admin/mk_combined_fi...
vorstellen. Nennen wir die Zahlen a und b, und bezeichnen wir die einzelnen Stellen mit
wäre a also die Zahl 01000100, so hätten nur
und
und b entsprechend;
den Wert 1, alle anderen Stellen den Wert 0.
Wie man sich leicht überlegen kann, ist die Multiplikation mit der Basiszahl 2 (ähnlich wie im Dezimalsystem die Multiplikation mit 10)
besonders einfach: man erhöht einfach den Stellenwert, indem man die Zahl um eine Stelle nach rechts verschiebt, also eine 0 anhängt.
Auch die Multiplikation von a mit einer einstelligen Binärzahl ist einfach: das Ergebnis ist 0 oder a, je nachdem, ob man mit 0 oder 1
multipliziert! So kommen wir zu einer einfachen Vorschrift, ähnlich der bei den Dezimalzahlen.
Auch hier brauchen wir nur drei einfache Operationen, das sind die Addition, die Multiplikation mit einer einstelligen Zahl (die auf eine
logische Operation rückführbar ist), und die Erhöhung des Stellenwerts (die auf eine Verschiebung hinausläuft)! Insgesamt haben wir
also 17 Teilschritte: acht Multiplikationen, acht Additionen und den ersten Schritt, in dem c gelöscht wurde.
Beim Pipelining wird der Rechenvorgang in viele Teilschritte zerlegt, wie bei einer Automontage. Während sich ein Teil der
Recheneinheit auf den Teilschritt Nummer 4 spezialisiert kann im gleichen Rechentakt ein anderer Teil der Recheneinheit den
Teilschritt Nummer 3 für die nächste Zahlenoperation ausführen. Im Vergleich zur Automontage ist das Prinzip deutlich: bei einem Auto
auf dem Fließband wird vielleicht die Lenkung montiert, während beim nächsten noch das Fahrgestell in Arbeit ist. Die zur Berechnung
von x1 erforderlichen Teilschritte werden in Untertakten absolviert und währen zum Beispiel ein Prozessorteil S2 den 2. Teilschritt für x1
durchführt, kann der erste Prozessorteil S1 schon den 1. Teilschritt für x2 erledigen.
Man könnte sich nun eine Recheneinheit vorstellen, bei der jeder Teilschritt in einer eigenen Untereinheit ausgeführt wird. Die Abbildung
zeigt die Vorgangsweise; der Rechenprozess x1 wird in Teilschritte S1 bis S4 zerlegt und pro Rechentakt wird ein Teilschritt von einem
entsprechenden Prozessorteil ausgeführt. Nach vier Takten ist das Ergebnis verfügbar. Aber schon nach dem ersten Takt hat der für
Teilschritt S1 zuständige Prozessorteil nichts mehr zu tun. Man kann diese Faulheit unterbinden, indem man ihm gleich wieder eine neue
Aufgabe, nämlich den Rechenprozess x2 übergibt. So geht das weiter, und wie man sieht, führt diese Arbeitsteilung dazu, dass nach
einer bestimmten Anlaufzeit in jedem Rechentakt ein Rechenprozess abgeschlossen werden kann. Statt einem Ergebnis alle vier Takte
bekommt man dann eine Ergebnis pro Takt! Die Anlaufzeit hängt dabei von der Zahl der Teilschritte ab, also der Art der Aufteilung, die
beim Entwurf des Pipeline-Prozessors gewählt wurde.
In den tatsächlich eingesetzten Prozessoren werden die Grundrechnungsarten in etwa 50-100 Teilschritte zerlegt, entsprechend ist die
Anlaufzeit 50-100 Takte. Der Einsatz lohnt sich daher erst, wenn man sehr viele gleichartige Rechenoperationen unmittelbar
hintereinander ausführen möchte. Additionen oder Subtraktionen von so genannten Vektoren, das sind Gruppen von Zahlen, sind ein
geeignetes Problem. Das ist der Grund für die Bezeichnung "Vektorrechner", die man für Computer dieser Bauweise häufig findet. Je
länger die Vektoren, desto effizienter ist der Pipeline-Prozessor, da ja die Anlaufzeit immer unwichtiger im Vergleich zur Zahl der
durchgeführten Rechenoperationen wird. Bei den meisten dieser Computer erzielt man eine gute Auslastung erst bei Vektorlängen von
einigen Hundert Zahlen.
Die Zahl der Vektorprozessoren eines Supercomputers hängt auch vom Konstrukteur ab. Bei der CYBER-205 fand man vier Pipelines,
bei der CRAY-1 bis zu 13 Pipelines, eine für jede Grundrechnungsart, und weitere für andere, zum Beispiel logische, Operationen.
Neben den Vektorprozessoren haben die Maschinen auch noch gewöhnliche Recheneinheiten, die, um einen Gegensatz zu den
Vektorprozessoren zu bilden, "skalare Prozessoren" genannt werden. Die Geschwindigkeiten, die so für manche Rechnungen erreicht
werden, bewegen sich im Bereich zwischen einigen Hundert MFLOPS bis zu einigen Tausend MFLOPS, also im GigaFLOPS Bereich!
Heute werden diese Konzepte auch in Einzelprozessoren berücksichtigt; auch dort gibt es oft (kürzere) Pipelines und vektorartige
Rechnungen.Der Flaschenhals bei effizienten Vektorrechner war und ist die Geschwindigkeit, mit der man die Pipes füllen kann, also der
Datenzufluss und -Abfluss. Da ausreichende Werte zu erzielen war und ist sehr teurer. Das Memory ist meist deutlich langsamer als die
Prozessoren sich das wünschen.
15.11.2005 14:06
Computer und Physik
5 of 10
http://physik.uni-graz.at/~cbl/C+P/admin/mk_combined_fi...
Wie berücksichtigt man denn überhaupt die speziellen Eigenschaften der Supercomputer? Am direktesten gehen Systemprogrammierer
vor; sie verwenden oft direkt die Maschinencodierung der Vektorbefehle. Der Wald-und-Wiesen-Benutzer arbeitet in einer höheren
Sprache, wie zum Beispiel FORTRAN. Bei der CYBER-205 wurde der FORTRAN-Befehlsvorrat um einige neue Befehle erweitert. So
gab es die Möglichkeit von GATHER- und SCATTER Operationen, bei denen der Inhalt einer langen Reihe von Zahlen mit Hilfe von
Indexvektoren schnell umgeordnet werden kann, oder Befehle wie SMIN, bei denen die kleinste Zahl aus allen Zahlen des Zahlenvektors
ermittelt wird. Ist einem auch das noch zu umständlich, so kann man eigenen Hilfsprogramme oder Teile des
FORTRAN-Übersetzungsprogrammes dazu einsetzen, den üblichen FORTRAN-Code zu optimieren, und so einen optimalen Einsatz der
Vektoreigenschaften des Supercomputers zu erreichen. Dieser Weg wurde bei den CRAYs gewählt. Auch hier streiten sich die Experten,
was denn nun die beste Lösung wäre und eine Standardisierung ist noch nicht in Sicht.
1.3.2.b Parallelrechner-Konzept
Ein italienischer Freund hat mir dazu Folgendes erzählt: um das Problem miteinander gekoppelter Differenzialgleichungen zu lösen
wurde vor vielen Jahren genau diese Vorgangsweise gewählt. Eine geeignete Anzahl von Soldaten wurde dazu abkommandiert, je eine
solche Gleichung in vielen Teilschritten im Takt mit all seinen Kollegen zu lösen, und bei jedem Teilschritt die momentanen Werte seiner
Nachbarn, also die "Randbedingungen" zu berücksichtigen. Was er nicht erzählte, war, ob die Koordination tatsächlich geklappt hat und
ob sich die Kanonenkugel an die vorherberechnete ballistische Flugbahn gehalten hat. Ich bezweifle das.
Dieser Konzept wird auch Multiprocessing genannt: man kombiniert einfach eine Menge von an sich selbständigen Einzelprozessoren,
die entweder auf einen gemeinsamen Speicher zugreifen (shared memory), oder deren Speicher in entsprechend viele Teile unterteilt ist
(distributed memory).
Die Prozessoren können alle entweder jeweils den gleichen Befehl ausführen (SIMD-Typ) oder voneinander unabhängige Befehle
durchlaufen (MIMD-Typ). Die ILLIAC IV , die von 1968 bis 1973 im Einsatz war, war vom SIMD-Typ. Sie hatte 64 Datenprozessoren, die
alle von einem Befehlsprozessor gesteuert wurden. Je ein Speichermodul war je einem der Datenprozessoren zugeordnet.
In den 80er Jahren brachte die Firma INMOS einen neuartigen Chip heraus: den Transputer. Der Name soll darauf hinweisen, dass es
sich dabei um ein neuartiges Konzept handelt, bei dem ein leistungsfähiger Mikroprozessor mit schnellen Übertragungsleitungen und
einer entsprechenden Befehlslogik ausgestattet wurde. Die ganze Konstruktion war dem Einsatz in einem MIMD-Computer flexibler
Architektur angepasst. Während ein solcher Transputer eine Befehlsfolge ausführt kann er gleichzeitig Daten an einen
Nachbartransputer übertragen oder Daten von ihm oder einem anderen Nachbarn empfangen. Eine eigene Programmiersprache wurde
für diesen Zweck entwickelt: OCCAM; in ihr können Prozesse in einer geeigneten Hierarchie als parallele oder sequenzielle Vorgänge
ablaufen.
Viele Probleme der modernen theoretischen Physik erfordern enorme Rechenkapazitäten und sind auch parallelisierbar. Das ist der
Grund dafür, dass in jüngster Zeit etliche MIMD-Computer für spezielle Anwendungsbereiche gebaut wurden. Meist waren auch
Theoretiker maßgeblich an der Konstruktion beteiligt, und oft wurde nur ein Exemplar hergestellt. Beispiele für solche, sehr
leistungsfähige, "special purpose computer" oder "dedicated machines" waren der Cosmic Cube, der am CALTEC in Los Angeles aus 64
16-bit INTEL 8086/8087 Prozessoren zusammengebaut wurde, ein ähnliches Gerät an der Columbia Universität in New York, oder ein in
Zusammenarbeit zwischen Physikern und Technikern aus Italien und vom CERN in Genf gebauter Rechner (APE); von IBM wurde GF11
gebaut, der eine Spitzengeschwindigkeit von 11 GigaFLOPS erreichte. Sowohl die Columbia Maschine als auch APE (später unter dem
Namen Quadrics von Alenia Spacio vermarktet, derzeit schon in der 2. Generation APE1000) fanden leistungsstarke Nachfolger und
auch deren Nachfolger (zum Beispiel APEnext) sind schon in Sicht.
Spitzenmaschinen im kommerziellen Bereich sind zum Beispiel die Hitachi SR8000-F1 am Leibniz Rechenzentrum der Münchener
Hochschulen , der derzeit (2002) leistungsfähigste Rechner im akademischen Bereich in Europa.
In den letzten Jahren hat sich neben den teuren kommerziellen Parallelrechner auch das Cluster-Konzept, auch ein MIMD-Konzept weit
verbreitet. Man verbindet dazu eine Reihe von Einzelrechnern, meist mit Linux-Betriebssystem (eine UNIX-Varianten im
Public-Domain-Bereich) über ein eigenes Datennetz (zum Beispiel ein Ethernet mit 100 MBit/s oder 1 GBit/s Übertragungsraten)
miteinander. In den USA gibt es ein verbreitetes Cluster-System unter dem Namen "Beowulf", bei dem auf ähnliche Art Maschinen, die
auch von verschiedenem Type sein können, kombiniert eingesetzt werden.
Eigene Software regelt den schnellen Datentransfer zwischen den Knoten dieses Clusters von Maschinen. Auch diese Software kommt
oft aus dem Public-Domain-Bereich (zum Beispiel MPI, ein Message Passing Interface Standard ). Inzwischen hat sich UNIX/Linux so
durchgesetzt, dass oft auch auf Großrechner wie etwa der Hitachi) dieses System (und MPI) eingesetzt wird. Das erlaubt eine hohe
Portabilität der Programme, gerade im akademischen Bereich sehr wünschenswert.
Das Problem bei den Clustern ist wiederum die Geschwindigkeit der Kommunikation zwischen den Knoten des Netzes. Probleme, die
einfach in voneinander unabhängige Teile zerlegt werden können, sind leichter parallelisierbar, als solche, bei denen starker
Datentransfer zwischen den Programmteilen auf verschiedenen Knoten erforderlich ist. Auch ist das Ende bei der Entwicklung von
parallelisierbaren Algorithmen noch lange nicht erreicht. Vektorisierbare Algorithmen sind auch parallelisierbar, umgekehrt gilt das nicht.
Bei manchen wichtige Problemen wie etwa Pattern-Recognition oder Sortierung großer Datenmengen ist kein effizienter,
parallelisierbarer Algorithmus in Sicht.
1.3.3 Neue Entwicklungen
Neben neuen technologischen Entwicklungen (wie etwa Computer, die mit Licht statt mit Elektronen arbeiten, oder Josephson-Junction
Computer) geht es auch um im Denkansatz prinzipielle neue Arten von Computern. Vor allem die mit dem klassischen Turing-Konzept
(und auch den parallelen Varianten davon) nicht berechenbare Probleme könnten damit vielleicht doch berechnet werde, Dazu gehören
die so genannten NP-Probleme, deren Rechenaufwand exponentiell mit der Zahl der Variablen steigt. Beispiele dafür sind die
Faktorisierung von Zahlen in Primfaktoren, das Hamiltonsche Wegproblem (Verbindungen von Knoten in einem Netz), Summen über
exponentiell wachsenden Zustandsräume (wie in der statistischen Physik und Molekulardynamik). Hier folgt eine kurze Liste neuer Ideen
für Computer.
15.11.2005 14:06
Computer und Physik
6 of 10
1.3.3.a
1.3.3.b
http://physik.uni-graz.at/~cbl/C+P/admin/mk_combined_fi...
Biocomputing
Quantencomputer
Aufgabe 1.3.3.A1
Aufgabe 1.3.3.A2
Aufgabe 1.3.3.A3
Aufgabe 1.3.3.A4
1.3.3.a Biocomputing
Hier soll nicht etwa die Funktionsweise deines Gehirns besprochen werden, sondern als Beispiel die Problemstellungen, die man seit ein
paar Jahren mit Hilfe von DNA-Molekülketten zu lösen versucht.
Vor einige Jahren wurden von
vorgeschlagen.
L. Adleman die Lösung des so genannten Hamiltonschen Path-Problems mit Hilfen von DNA
Hier folgen zunächst einige Grundlageninformationen zur Begriffsbildung:
Desoxyribonukleinsäure, DNS,
engl. Abk. DNA (von desoxyribonucleic acid), polymere Verbindung, die aus Desoxyribonucleotiden aufgebaut ist. Die Nucleotide
bestehen jeweils aus einer organ. Base, nämlich
Adenin
Cytosin
Guanin
Thymin
sowie einem Zuckermolekül (Desoxyribose) und einem Phosphorsäurerest.
15.11.2005 14:06
Computer und Physik
7 of 10
http://physik.uni-graz.at/~cbl/C+P/admin/mk_combined_fi...
Ein DNS-Molekül besteht im Allgemeinen aus zwei
Polynucleotidsträngen, die schraubig umeinander
gewunden und durch Wasserstoffbrücken zw. den
Basen miteinander verbunden sind. Die genetische
Information ist in der DNS als Sequenz der vier
verschiedenen Basen verschlüsselt.
Die räumliche Struktur der DNS ist bereits gut
bekannt. J. D. Watson u. F. H. C. Crick (1953) haben
ein Modell, das "Helix-Modell", vorgeschlagen, das
sich durch nachfolgende Untersuchungen bestätigen
ließ: Zwei Polynucleotidfäden sind schraubenförmig
umeinander gewunden (Doppelhelix) und stehen
durch Wasserstoffbrücken zwischen ihren Basen in
Beziehung. Jede Base des einen Fadens bestimmt
den Basenpartner im anderen und umgekehrt. Solche
Basenpaare sind A und T, G u. C. Die Anzahl der
Purinbasen (A + G) ist gleich der Anzahl der
Pyrimidinbasen (C + T).
Man unterscheidet Ribonucleinsäuren (Abkürzung RNS; englisch ribonucleic acid, Abkürzung RNA, früher Pentosenucleinsäure) und
Desoxyribonukleinsäuren (DNS; englisch deoxyribo-nucleic acid, DNA). RNS enthält als gebundenen Zucker Ribose (D-Ribose) und die
Base Uracil, DNS als Zucker Desoxyribose (2-desoxy-D-Ribose) und statt Uracil die Base Thymin.
DNS-Replikation
die ident. Verdopplung (Autoreduplikation) der genet. Substanz in lebenden Zellen. Der Verdopplungsmechanismus ist durch die
Doppelhelix-Struktur vorgegeben. Die beiden Stränge der DNS trennen sich voneinander, indem die Wasserstoffbrücken zw. den
Basenpaaren gelöst werden. Jeder Einzelstrang dient als Matrize für die Synthese des komplementären Strangs. Nach Beendigung der
DNS-R. besteht jeder Doppelstrang zur Hälfte aus altem und zur Hälfte aus neuem Material (semikonservative Replikation).
(Textteile aus: © 1999 Bibliographisches Institut & F.A. Brockhaus AG und Bertelsmann Discovery 1999; Graphik: Bertelsmann
Discovery 1999)
Beim Hamiltonschen Path-Problem geht es darum, in einem Netz von Knoten
(Städten) mit gerichteten Verbindungen (Flugrouten) einen Weg von einem Knoten
zu einem anderen zu finden, der jeden der Knoten nur einmal berührt. (Abb. aus
Scientific American, August 1998)
Überlegen wir uns, wie wir dieses Problem mit Hilfe von DNA formulieren könnten. Wir denken uns die Knoten als Städte mit jeweils
einem Eingangstor und einem Ausgangstor. Alle Tore werden durch eindeutige Zeichenfolgen (aus den Buchstaben ACGT) symbolisiert.
Nun wird jede Stadt durch die DNA-Kette der beiden Symbolfolgen für Eingang und Ausgang dargestellt.
Die Verbindungen zwischen Ausgang einer Stadt und Eingang einer anderen Stadt wird durch komplementäre DNA-Ketten, also das
DNA-Komplement zum Ausgang der einen Stadt gefolgt vom DNA-Komplement zum Eingang der anderen Stadt repräsentiert.
Wenn man nun große Mengen dieser beiden DNA-Ketten-Typen im Reagenzglas mischt, werden sich die DNA-Teile der Ein- und
15.11.2005 14:06
Computer und Physik
8 of 10
http://physik.uni-graz.at/~cbl/C+P/admin/mk_combined_fi...
Ausgänge mit den entsprechenden Komplementen der Verbindungen zusammenfügen. Wenn man daran interessiert ist, den Weg von
einer bestimmten Stadt aus zu suchen, muss man zuerst diese Stadt "initialisieren, also den Eingang durch eine
Eingangs-Komplement-DNA "sättigen". Analog "versperrt" man den Ausgang der Zielstadt. Nun können sich alle möglichen erlaubten
Kombinationen bilden. Wenn ein Weg zwischen Start und Ziel existiert, wird sich eine zusammenhängende Doppelhelix entsprechender
Länge bilden.
Knoten und Verbindungen werden durch DNA-Teilstränge
codiert.
In einem Artikel von Adleman im Scientific Amercian vom August 1998 wird das Problem und die vorgeschlagene Lösung beschrieben.
Dabei werden die Knoten und die Verbindungen durch DNA-Halbstränge dargestellt und die gesamte Verbindungskette entspricht einer
DNA-Doppelhelix. Die Methode zur Lösung des Hamiltonschen Problems mittels dieser DNA-Stränge ist folgend beschrieben:
1. Man konstruiert die DNA-Teilketten für die Knoten (jeweils durch einen eindeutigen in-Teil und out-Teil) und die gerichteten
Verbindungen (entsprechend aus out-Komplement und in-Komplement)
2. Man vermischt ausreichen viele solcher Moleküle (zum Beispiel 10000 pro Element) mit einigen anderen Zutaten (Wasser, Salze,
Ligase,...); es bilden sich zufällig Ketten zusammenpassender Knoten, verbunden durch die Verbindungsketten, darunter (so
vorhanden) sicher auch die gesuchte Verbindung...
3. Mittels PCR (Polymerase Chain Reaction) erzeugt man sehr viele Kopien derjenigen Wege, die durch die gewünschten
Start-Knoten und End-Knoten gegeben sind; das geschieht mit Hilfe geeigneter Primer-Moleküle, die den Start-in und End-out Teil
spezifizieren.
4. Mit Gel-Elektrophorese werden nur die Molekülketten der gewünschten Länge (also je ein Knoten pro Stadt) aussortiert.
5. Mittels der so genannten Affinity Separation werden hintereinander nur die Molekülketten ausgesondert, in denen jeweils einer der
gewünschten Städteknoten vorkommt. Wenn es eine Lösung des Hamilton-Problems gibt, dann bleibt genaue eine
Molekülkettensorte übrig, eben die der Lösung entsprechende!
Hier gebe ich ein paar Links zu diesem Thema an:
Center for Computational and Experimental Genomics
Scientific American: Biocomputing - Turning DNA into Logic Gates
Eine andere Art der Anwendung arbeitet mit Silizium-Chips, die so gebaut sind, dass sich einzelne Halbstränge von DNA-Ketten
anhängen ("single stranded DNA").
Alle diese Halbstränge sollen zum Beispiel allen denkbaren Werten von Variablen
eines Systems von Gleichungen eines nichtlinearen Gleichungssystems entsprechen.
Nun geht man für jede der Gleichungen so vor:
Man stellt die Gleichung durch einen komplementären DNA-Strang dar und bringt eine Menge solcher DNA in Kontakt mit der
Chip-Oberfläche. Die Stränge auf dem Chip mit Werten, die die Gleichung erfüllen, werden den Gleichungsstrang "anlagern". Mit einem
Enzym entfernt man alle restlichen ungesättigten "single stranded DNA" Ketten (Variablen) von dem Chip und anschließend auch wieder
die komplementären Halbketten. Übrig bleiben die Halbstränge, welche diese Gleichung erfüllen.
Dieser Schritt (Gleichung und "wegätzen") wird mit allen Gleichungen wiederholt. Wenn alle Gleichungen so geprüft wurden und
irgendwelche Variable-Halbstränge übrig bleiben, dann symbolisieren diese die möglichen Lösungen!
Weitere Hinweise:
BioComputing Hypertext Coursebook
15.11.2005 14:06
Computer und Physik
9 of 10
http://physik.uni-graz.at/~cbl/C+P/admin/mk_combined_fi...
Bioinformatik ist derzeit einer der wenigen Industriezweige in den USA, der unaufhaltsam wächst und in den sehr viel Venturekapital
fließt. Eine besonders hohe Konzentration solcher Firmen findet sich in Boston und Umgebung. Hier befindet sich auch die
Bioinformatik-Fakultät der Boston University, die als eine der besten in den USA gilt: Bioinformatik-Fakultät der Boston University
Hier noch ein PhysicsWeb Link:
Physics and DNA
1.3.3.b Quantencomputer
Das ist zur Zeit eines der spektakulärsten Projekte. Man stimmt darin überein, dass es zumindest noch zwei Jahrzehnte dauern wird, bis
ein Quantencomputer funktionsfähig ist, der für einige Probleme mehr leisten kann, als die "klassischen" Computer - wenn man je Erfolg
hat.
Ich kann hier nur einen kurzen und groben Ausblick geben. Mehr findet man in zahlreichen Artikeln und Bücher, und auch in den Seiten
zu meiner Vorlesung C.B. Lang: Quantencomputer (Sommersemester 2001) .
Quantencomputing erfordert Kenntnissen in den drei Gebieten
Klassische Informationstheorie
Computer Science
Quantenphysik
Mit den ersten beiden Themen haben wir uns schon zu Beginn der Vorlesung beschäftigt.Der wesentliche Unterschied zu den üblichen
Computern liegt im dritten Bereich. In der Informationstheorie im Rahmen der klassischen Physik ist die kleinste Informationseinheit ein
Bit; dieses kann zwei Werte (0, 1) annehmen.Dagegen kann in der Quantentheorie ein "Zustand" eine Überlagerung (Superposition) von
verschiedenen Zuständen sein. Die kleinste Informationseinheit dort ist das Qubit, eine Superposition von zwei Zuständen |0> und |1>.
Damit wächst die Zahl der so überlagerten Zustände exponentiell mit der Zahl der Qubits. Ein n-Qubit Zustand kann 2^n Werte (von
durch je n Bits dargestellt) "gleichzeitig" darstellen.
Beispiel für einen 1-Qubit Zustand:( |0>+|1>)
Beispiele für einen 2-Qubit Zustand: (|00>+|11>) oder (|01>+|10>) oder ...
Beim Zustand (|00>+|11>) handelt es sich um einen "verschränkten" Zustand, da ein möglicher Wert des ersten Bits mit genau einem
möglichen Wert des zweiten Bits verknüpft ist. Wir in einem Experiment für so einen Zustand das 1. Bit gemessen, so weiß man schon
den Wert des 2. Bits. Solche Zustände spielen im Einstein-Podolsky-Rosen Experiment eine wichtige Rolle.
Ein Messvorgang ("Messoperator A") projiziert einen Zustand in das Eigensystem von A. Die Wahrscheinlichkeit für die Projektion in
einen bestimmten Wert ist dabei entsprechend aus den Faktoren in der Überlagerung der Teile des Eingangszustands berechenbar.
Quantengatter sind ähnliche Operatoren; abhängig von den einlaufenden n-Qubit Zuständen erzeugen sie neue (m-Qubit)
Zustände.Solange keine Wechselwirkung mit dem Rest der Welt ("Messung") passiert, ist der neue Zustand wieder eine - vermutlich
andere - Überlagerung von Zuständen. Das genau ist die Stärke von Quantencomputern. Es werden viele möglichen Werte (die
überlagerten Zustände von n Bits) gewissermaßen "gleichzeitig" der Rechnung zugeführt und führen als Ergebnis zu einer Überlagerung
der möglichen Ergebnisse. Wie man daraus dann eine Antwort bekommt, hängt vom Quantenalgorithmus ab (weiter unten).
Deutsch hat 1985 die notwendigen Eigenschaften eines universellen Quantencomputers besprochen:
1.
2.
3.
4.
Jedes Qubit kann in einen beliebigen Zustand (zum Beispiel <0>) gebracht werden.
Jedes Qubit kann in der Basis {|0>, |1>} gemessen werden.
Ein universelles Quantengatter kann auf beliebige Untermengen von Qubits angewandt werden.
Die Qubits ändern sich nur unter (2) und (3).
Skizze eines Quantencomputers: Zuerst wird ein Überlagerungszustand W (n-Qubit Zustand) erzeugt, dann durch eine Kombination
von Quantengattern (Q-Op) geschickt und schließlich einer Messung unterzogen.
Der Messalgorithmus muss so ausgelegt sein, dass die Wahrscheinlichkeit, eine Antwort zu bekommen, möglichst groß ist. Dazu hat
man verschiedenen Techniken (Inversion von Wahrscheinlichkeiten und ähnliches) entwickelt. Drei Beispiele für Quanten-Algorithmen
sind.
Deutsch Algorithmus (hier geht es um die Entscheidung, welche Symmetrie n-Bit-Funktionen haben)
Shor-Algorithmus (die Faktorisierung von Zahlen in Primzahlen wird hier berechnet; das ist ein Problem mit exponentiell
wachsendem Aufwand auf klassischen Computern. Es ist relative einfach 50-stellige Primzahlen zu finden und deren
100-stelliges Produkt zu bestimmen. Wenn man aber eine 100-stellige Zahle in diese beiden Faktoren zerlegen will,
braucht man so lange, dass heutige Computer 1000de Jahre rechnen müssten. In der Kryptographie verwendet man diese
Eigenschaft zur Verschlüsselung. Ein Quantencomputer könnte die Rechnung schaffen.)
Grover-Algorithmus (es geht um die Sortierung von Zahlen; das Problem ist ähnlich wie jenes, aus einem nach
TeilnehmerInnen sortierten Telefonbuch den Anschluss einer bestimmten Telefonnummer zu finden.)
Die Realisierung von Quantencomputern ist schwierig. Bis heute hat man nur einfache Rechenvorgänge mit etwa 8 Qubits geschafft.
Hauptprobleme sind dabei die Erzeugung von korrelierten n-Qubit Zuständen und die so genannte Dekohärenz, Das ist der Zerfall der
15.11.2005 14:06
Computer und Physik
10 of 10
http://physik.uni-graz.at/~cbl/C+P/admin/mk_combined_fi...
Kohärenz der n Qubits durch Kontakte mit dem Rest der Welt.Zur Zeit (2002) gibt es drei Realisierungstypen:
NMR (Nuclear Magnetic Resonance - Kernspinresonanz): Man baut so genannte Designermoleküle. Die Quantenzustände
sind korreliert und man konnte bisher bis zu 8-Qubit Zustände erzeugen und damit "rechnen". Allerdings kann man hier
keine individuellen Qubits (einzelne Moleküle) anregen, sonder hat immer kollektive Vorgänge. Die Kernspinresonanz ist
eine Technik, die mit Hilfe der Kernspektren in einem magnetischen Feld die Struktur der chemischen Umgebung eines
Moleküls zu bestimmen erlaubt und in diesem Zusammenhang weit entwickelt wurde. Da hier der Spin des Kerns eine
zentrale Rolle spielt, ist NMR eine naheliegende Technologie zur Implementation von Quanteninformationsverarbeitung.
Die ersten Arbeiten stammen von D.Cory und Mitarbeitern 1996 sowie N.Gershenfeld und I.Chuang 1997. Trotz der
überzeugenden bisherigen Erfolge scheint NMR nicht die Technologie der Zukunft zu sein, da es grundsätzliche
Skalierungsprobleme gibt. Zum einen ist es schwierig, immer größere Moleküle zu verwenden. Grundlegend
einschränkend ist aber die Tatsache, dass die Stärke des Signals exponentiell mit der Zahl der Qubits abnimmt.
Ionenfallen: Durch geeignete Magnetfelder kann man Ketten einzelner Ionen erzeugen, die miteinander auch korreliert
sind. Durch Lasereinstrahlung können bestimmte Werte gesetzt werden.
Quantenpunkte (Quantum dots) in Festkörpern: Durch "Löcher" in festen Materialien können lokale Potentialtöpfe für
Elektronen "gebaut" werden. geeignete Anordnung sollte die Konstruktion von n-Qubit Zuständen erlauben.
Ein Beispiel für einen NMR-Quantencomputer findet man hier::
IBM's Test-Tube Quantum Computer Makes History
Neben Beschreibungen von Konzepten findet sich auch ein "Baukasten" für Quantencomputer Schaltungen.hier:
tp://www.ap.univie.ac.at/users/fe/Quantencomputer/ .
15.11.2005 14:06

Documents pareils