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