Ich habe mir nun sämtliche Beiträge durchgelesen und möchte nun auch ein Wörtchen zu dem Thema sagen.
Wie einige Wenige, die sich überhaupt einmal die Mühe gemacht haben sich einmal richtig mit dem Thema zu befassen, schon gemerkt haben sind hier gut 75% einfach nur solche, die man als "Nachredner" bezeichnet. Einige sind nicht einmal in der Lage zu beschreiben, warum diese Karten "doch total für den Arsch sind". Es gab jedoch auch einige Argumente, die man durchaus als solche bezeichnen konnte, zum Beispiel zum Thema Multi-Core Prozessoren und GPUs sowie niedrigere Frameraten und die technischen Daten eines solchen Physikbeschleunigers. Zu diesen Argumenten werde ich während meines posts eingehen.
Physikkarten und KI Karten sind die genialste Erfindung seit langem. Hinter diesem zwei Beschleunigern stecken unglaubliche Potenziale und ich werde erläutern, warum dem so ist.
Von vornherein ist zu bemerken, dass der Post hauptsächlich das Ziel hat, das Thema zu verstehen und der Community meine Auseinandersetzung mit dem Thema zu präsentieren, mit der Hoffnung, dass einige mehr verstehen. Die technische Fachsprache wird also nicht immer vorhanden sein. Sofern Denkfehler vorhanden sind könnt ihr mich gerne darauf aufmerksam machen. Ich bitte außerdem darum, dass zuerst der komplette Artikel gelesen wird, bevor Hinweise und Kritik verfasst wird.
Damit der post bei dieser Länge auch übersichtlich wird, werde ich den post in mehrere parts strukturieren:
1. Wozu Physik? Ist Physik überhaupt notwendig?
2. Verschiedene Kandidaten: Multi-Core CPU, GPU, PhysX
3. Einsatzbereiche
4. Problematik
1. Wozu Physik? Ist Physik überhaupt notwendig?
Um diese Frage zu beantworten, muss man ersteinmal wissen,
was genau Physik ist, bzw.
wofür sie zuständig ist. Mit Physik wird natürlich die Physik auf der Computerebene gemeint.
Der Physikbeschleuniger übernimmt im Prinzip
sämtliche Bewegungsabläufe und was daraus resultiert. Vorrausgesetzt, es ist dementsprechend programmiert worden. Dazu gehören wirklich alle Bewegungen, die in einem virtuellen Raum, zum Beispiel einer Karte in einem Computerspiel, vorkommen. Dazu gehören Bewegungen der Spieler, Bewegungen der NPCs, herumfliegende Raketen, bewegte Büsche, Gräser oder Bäume, einstürzende Wandteile oder ganze Gebäude, Schüsse, Kolissionen zwischen mehreren Objekten und alles, was man als Bewegungen difinieren kann. Wer allein schon diesen Gedanken nachvollziehen kann, weiß, warum hinter einem Physikbeschleuniger solch ein potential steckt. Außerdem können sämtliche Bewegungen und Kolissionen korreckt und genau berechnet werden, was vor allem bei jetzigen Spielen aufgrund der geringeren Perforemence stark abstrahiert wird. Als Beispiel wären da zum Beispiel Waffen, die in einer Wand herumhängen oder verschiedene Objekte, die sich zum Teil überschneiden zu nennen. Abgesehen davon werden so ziemlich sämtliche physikalischen Effekte in Spielen aus demselben Grund, nämlich der Perforemence, weggelassen. Beispielsweise fährt ein Panzer gegen einen Gartenzaun. Was passiert? Der Panzer bleibt am Zaun hängen. Das geschieht einfach deshalb, weil es für beide Objekte keine physikalischen Eigenschaften gibt. Wenn man genau darüber nachdenkt muss man es einfach akzeptieren. Sämtliche Spiele, die es derzeit auf dem Markt gibt, sind einfach total undynamisch. Der größte Teil aller Karten, Spielwelten etc. sind einfach statisch, sie verändern sich nicht oder wenn sich etwas bewegt, dann nur kaum, abgesehen von NPCs und Spielern, wobei auch genau wegen diesen die Anzahl an NPCs und Spielern mächtig gedrosselt wird. Das Spiel wäre ansonsten unspielbar. Es gibt einfach keine dynamischen Welten, in denen man beispielsweise "alles zerstören kann", wie sich viele Spieler wünschen würden. Solch eine Welt/Karte wäre nur mit einem zusätzlichen Physikbeschleuniger möglich.
Physikkarten sind also durchaus für die Beschleunigung, zur Entlastung und für das erzeugen einer realistischen und dynamischen Welt/Karte zuständig. Dies wird aber noch einmal später bei der Betrachtung der Problematik behandelt. Ich hoffe, dass die meisten nun im groben erkannt haben,
warum ein Physikbeschleuniger nun solch ein Potenzial hat.
Betrachtet man nun die gesammelten Argumente, müsste man eigentlich feststellen, dass die eigentliche Fragestellung ganz anders lauten müsste. Nicht
ob ein Physikbeschleuniger wirklich nötig ist, sondern
wie man es umsetzt, bzw. die so ziemlich wichtigste Frage, auf welcher Hardware soll die Physikbeschleunigung ablaufen? Genau damit beschäftigen wir uns im zweiten part.
2. Verschiedene Kandidaten: Multi-Core CPU, GPU, PhysX
Von der breiten Masse der poster gab es nun einige, die erkannt haben, dass dank Physikbeschleunigung einiges dynamischer werden kann, auch wenn nicht das eigentliche Potential erkannt wurde. Die Hauptaussage war jedoch: "Wieso muss das ganze auf einer extra dafür spezialisierten Karte laufen? Man kann es doch ganz einfach auf die GPU packen! Oder noch besser, es gibt ja Prozessoren mit mehreren Kernen, die das einfach übernehmen! Und das ganze mal nebenbei! Guckt dir doch mal die teschnischen Werte von der PhysX an!"
Bevor ich an diesem Punkt erläutere, warum hinter dieser Aussage nicht wirklich viel steckt, muss vorher noch etwas ganz klar festgelegt werden. Prinzipiell gilt, ein Prozessor ist das Kernstück eines PCs. Der Prozessor ist ersteinmal für sämtliche Berechnungen zuständig, die für eine Software nötig sind. Ein Prozessor arbeitet also lediglich auf "softwarebasis", wenn man es so sagen darf. Jeder kennt wahrscheinlich den Begriff "software-renderer". Wenn man auf einen software-renderer zurückgreift, wird das rendern einzig und allein von der CPU übernommen. Bevor es einen spezialisierten Chip für die 3D-Beschleunigung gab, wurde die Grafik sozusagen von dem Prozessor über die Software ermöglicht. Es gilt jedoch, "hardwaremäßig" (damit ist eine Berechnung über einen Extrachip gemeint, der direkt von der Software angesprochen wird) läuft es besser, als dabei auf einen Prozessor zurückzugreifen. Genau aus dem Grunde gibt es bereits einige diverse Chips, die für bestimmte Dinge zuständig sind, dazu gehören die Grafikchips sowie die Soundchips. Inzwischen könte man sich Spiele , die nicht von einer Grafikkate berechnet werden nicht mehr vorstellen. Die Perforemence liegt ganz klar bei der Grafikkarte, ganz abgesehen von dem dargestellten Bildern.
Nun wird sämtliche Physik (abgesehen von Spielen, die schon auf Physikbeschleuniger zurückgreifen) derzeit "softwaremäßig" berechnet. Genau dies ist der springende Punkt, warum es mit Prozessoren gar nicht schneller laufen kann. Ein spezialisierter Chip wird ein und dieselben Berechnungen wesentlich schneller erledigen können, als die Softwarelösung über die CPU. Mehrere Kerne geben zwar mehr Leistung, aber dies bedeutet nicht, dass diese ganzen Kerne auch mehr an Leistung bringen(was die Physik anbelangt), als ein reiner Physikchip. Wenn man damals schon Multi-Core CPUs gehabt hätte, wäre es auch sehr dumm zu sagen: "ok, wir brauchen keine Grafikkarte!" Multi-Core Prozessoren sind kein Wundermittel, die unendlich Leistung bringen. Der Leistungsgewinn mit einem spezialisiertem Chip ist einfach um einiges größer, als wenn man stattdessen 8 Kerne für die Physikberechnung abspaltet.
Irgendjemand brachte vorhin die Aussage, die technischen Werte der PhysX seien "so schlecht", nichtmal mehr als 500MHz, dies könnte eine GPU mal "ganz nebenbei" berrechnen. Nun soll diese Person einmal die technischen Daten von GPUs und CPUs vergleichen. Na? Was sieht da wesentlicher "besser und leistungsstärker" aus? Ist eine CPU jedoch schneller in 3D Berechnungen? Natürlich nicht. Genau dasselbe gilt nun auch für die PhysX. Dieser "techisch lächerliche Chip", ist in Physikberechnungen um ein vielfaches schneller als eine GPU. Dies ist auch nicht weiter schlimm, denn eine GPU hat ja auch einen ganz anderen Aufgabenbereich. Zudem müsste für das Berechnen der Physik auf einer GPU ohnehin eine ganze GPU "geopfert" werden, die mehr Strom verbraucht, viel mehr kostet, mehr Wärme generiert, genauso einen Steckplatz verbraucht und noch dazu sehr viel langsamer ist als eine PhysX. In facto kann man also gleich eine PhysX kaufen. Das einzige, was nun also diese Aufgabe der Physikberechnung mal "nebenbei erledigen" kann, ist ein Physikchip, wie der von Ageia.
Diese anderen zwei Möglichkeiten sind lediglich Marketingtricks, um dem aufsteigendem Segment nicht einfach freie Bahn zu lassen. Es würde mich sehr stark wundern, wenn die großen Konzerne dies einfach ignorieren würden.
3. Einsatzbereiche
Da wir nun viel theoretisches gehört haben, wollen wir uns einmal genau angucken, wo man solche Physikbeschleuniger anwenden kann und uns einige Beispiele dazu angucken.
Zum einen wäre da die Möglichkeiten, von denen normale Anwender profitieren könnten, ohne überhaupt einen solchen Physikbeschleuniger verbaut zu haben. Dies sind die Server
Ein sehr gutes Beispiel dafür wäre ein CS Server oder auch ein Battlefield Server. In Anlehnung an part 2 muss man ersteinmal erwähnen, dass Grafikkarten in den allermeisten Fällen gar nicht in Servern verbaut werden. Dies wäre auch unnötig weil Grafikkarten lediglich für die Darstellung der berechneten Dinge zuständig sind. Grafikkarten agieren also auf der "letzten Schiene", wenn es nämlich darum geht, die errechneten Sachen auf den Bildschirm zu zaubern. Es wird, um es anschaulich zu erklären, eine Situation berechnet und es wird der GPU genau gesagt, was da nun passiert, worauf sich die GPU mit der Darstellung dessen befasst. Da der Server nun aber einzig und allein "die zu berechnenen Sachen berechnet" und das Ganze selbst nicht lokal irgendwo ausgeben muss wird hier die Grafikkarte überflüssig. Genau aus diesem Grund wäre eine "Physik in GPU Lösung" für Server eher schlecht. Denn niemand verbaut für die Physikberechnung extra eine Grafikkarte in einen Server. Wo kommt nun aber die Physikberechnung ins Spiel? Ich bin zwar nicht der Experte, aber die Physikberechnung hat genauso wenig mit der lokalen Ausgabe wie sämtliche anderen Berechnungen von der CPU auch. Deshalb sage ich jetzt einfach, es geschieht parallel zu den CPU Berechnungen. Auf jeden Fall gehört es zu dem Teil, in dem die ganze "Situation" berechnet wird und anschließend an die GPU zur Darstellung weitergeleitet wird. Genau dies zeigt nun auch, dass die Physik nichts mit der Grafik zu tun hat und deshalb streng unterschieden werden muss. Aber nun zurück zu unseren CS und Battlefield Server. Was benötigt bei einem solchen Server überhaupt so viel Leistung? Was ist denn da so besonderes? Nun wir gucken es uns einmal an, da gibt es einmal die Karte, die geladen werden muss. Dies sollte nicht einmal für einen normalen PC ein Problem sein, zumal die Karten auf den clients sowieso geladen werden müssen. Als zweites muss der Server die Kommunikationen zwischen sämtlichen clients steuern. Nun gut, dafür sind Server eigentlich generell zuständig und für einen FTP Server beispielsweise auch kein problem. Wieso braucht nun so ein Gameserver so viel Leistung? Richtig, wegen den Spielern, die sich auf der geladenen Karte fröhlich hin und her bewegen. Die Leistung, die ein Server braucht, steigt proporzional mit der Spieleranzahl. Mit einem Physikbeschleuniger dürfte das absolut kein Problem mehr darstellen (es gehören natürlich noch andere Faktoren wie die Größe der Karte dazu). Im Prinzip könnte man mit einem Physikbeschleuniger ohne Probleme seine 8000 Player auf einer Karte halten (es wurde deshalb die Zahl 8000 benutzt, weil Schüsse, Kolissionen und eventuelle Objekte wie Granaten in die Überlegung mit einbezogen wurden). Nun kommt noch ein weiterer sehr wichtiger Aspekt dazu. Nämlich gibt es da noch andere Faktoren, die dafür sorgen, ob es flüssig läuft. Zum Beispiel könnte es die Bandbreite des Internetanbindung sprengen, weil 8000 clients, die mit Informationen gefüttert werden müssen nicht gerade wenig sind. Außerdem müssen die clients in der Lage sein, die Informationen, die sie vom Server bekommen haben auch lokal darzustellen. Genau an dieser könnte es dennoch ruckeln. Dies wird jedoch später bei der Problematik genauer behandelt. Aber hej, das Leistungsproblem wäre gelöst! Und wie wir alle wissen, machen gerade bei onlinegames, wenn überhaupt, zu 95% (subjektiv geschätzt) eher die Server aufgrund von mangelnder Leistung Ärger, nicht die clients. Das tolle an der Sache, trotz fehlender PhysX Hardware bei den clients würde es dennoch dank Physikbeschleunigung um einiges schneller laufen, da Physik nicht zweimal berechnet werden muss. Der Server teilt dem client lediglich mit, was passiert, aber was passiert muss er selbst errechnen. Nun stellt euch das Onlinegame World of Warcraft vor, in dem man sämtliche Festungen und Städte zerstören könnte und analog dazu auch dank einer KI Karte gleichzeitig ganze NPC Armeen eine Stadt belagern würden. Genau deshalb bin ich der Meinung, das Potential ist riesig.
Als zweiter Anwendungsbereich wäre da natürlich der Desktop Bereich. Warum wurde hoffentlich schon genau genug erläutert. Man könnte Spiele programmieren, die vollkommen dynamisch und vollkommen realistisch sind, Spiele, in denen man "alles zerstören kann" wie manch ein Spieler träumt oder enfach nur für mehr Leistung sorgen, indem der Physikbeschleuniger sämtliche Bewegungsabläufe übernimmt.
Andererseits wäre es für die Programmierer wesentlich einfacher dynamische Spiele zu erstellen (für den Anfang eher das Ggenteil aber auf lange Sicht). Wenn man bestimmte Bibliotheken entwickeln würde, wäre es möglich jedem Objekt ganz einfach physikalische Eigenschaften zu übertragen und der Rest würde wie von selbst laufen. Der Aufwand wäre nur am Anfang ein größerer, weil man verschiedenste Materialien etc. definieren müsste, jedoch in der restlichen Entwicklung eines Spieles mittelt weniger Zeilen zu erreichen. Als Beispiel dazu erinnern wir uns an unseren Panzer und dem tollen Gartenzaun zurück. Für gewöhnlich müsste es ungefähr so ablaufen, dass man sowohl dem Panzer als auch dem Zaun eine bestimmte Schlüsseleigenschaft zuweist. Wenn nun der Panzer in den Holzzaun hineinfährt und der Schlüssel zum Zaun passen würde, dann vollführt der Zaun eine extra programierte Animation und das Objekt wird zumindest als virtuelles Hindernis gelöscht (ein Beispiel, wie man es programmieren könnte, die Experten unter uns wissen bestimmt bessere Wege). Nun ist das Umfallen des Zaun physikalisch total unkorreckt, denn die Animation ist immer diesselbe. Wenn man sich Mühe gibt, könnte man noch unterscheiden, dass, jeh nach dem von welcher Richtung der Panzer nun kommt, eine andere Animation vollführt wird, also eine andere Fallrichtung. Nun gelten diese definierten Sachen nur für den Panzer und nur für den Zaun. Es müssen für alles mögliche unmengen an Animationen geschrieben werden. Außerdem braucht diese Methode sehr viel leistung (verglichen), wenn solch ein Zaun umfällt. Wenn man eine ganze Karte programmieren möchte, in der wirklich alles zerstörbar ist, na dann wünsche ich demjenigen zumindest mit meiner Methode viel Spaß
Ganz anders geht es, wenn man die bereits programmierte Bibliothek(wobei dies auch ersteinmal geschehen muss) verwenden würde. Rein physikalisch besteht der Panzer aus bestimmten Material. Aus dem Material errechnet sich ein Gewicht. Außerdem wird der Panzer von einem Motor angetrieben. Dadurch kann man die Fahrtkraft bestimmen. Wenn nun der Panzer gegen den Holzzaun fährt wird automatisch physikalisch berechnet, ob der Holzzaun nun zusammenbricht oder nicht, bzw. welche Bewegungen der Zaun vollführt, nachdem der Panzer auf den Zaun gestoßen ist. Wenn man nun für alle Objekte physikalische Eigenschaften definiert, passiert der Rest physikalisch vollkommen korreckt und komplett ruckelfrei.
Ein weiterer wichtiger Aspekt wäre für die Forschung. Dies haben aber auch potentielle Physikbeschleuniger-Feinde bereits erkannt. Oft werde für verschiedenste wissenschaftliche Berechnungen riesige Anlagen aus Server benutzt, in denen meist tasende Prozessoren an einer Berechnung verwickelt ind. Physikalische Berechnungen, Simulationen und alles was dazu gehört könten von Physikbeschleunigern wesentlich schneller und wesentlich Kostensparender durchgeführt werden. Forschungsinstitute und Universitäten sind also die ersten Kandidaten, die bereits davon profitieren.
4. Problematik
Nun werden wir uns verschiedene Problemstellungen zu dem Thema Physikbeschleunigung anschauen.
Es kam vorhin der Hinweis, dass Physik nicht unbedingt etwas mit der besseren Perforemence zu tun haben muss. Dem ist nur zur Zeit so. Derzeit gibt es das Problem, dass die Physikbeschleuniger nicht sämtliche physikalischen Berechungen durchführen, sondern lediglich kleine Zusatzeffekte berechnen. Dies ist zum Beispiel in dem Spiel Ghost Recon Advanced Warfighter der Fall. Wie wir schon vorhin erkannt haben, ändern es nichts an der Tatsache, dass wenn der Physikbeschleuniger nicht vorhanden wäre, diese Effekte dennoch von der CPU übernommen werden müssten. Und das würde schon wieder weitaus mehr FPS schlucken. In diesem fall würde der FPS Abfall nicht 2FPS, sondern eher 10FPS betragen(subjektive Schätzung). Die Berechnung an sich geht viel schneller von Statten, jedoch müssen diese Extraeffekte trotzdem auf dem Bildschirm landen. Egal ob nun ein Prozessor eine Situation berechnet oder ein Physikbeschleuniger dabei hilf, muss das Ergebnis von der GPU dreidimensional auf dem Bildschirm landen. Es ist sogar ein gesetz, jeh mehr Details in einem virtuelen Raum vorhanden sind, desto langsamer läuft etwas. Es stört den COmputer in diesem Moment jedoch nicht, dass sich dort ein Objekt bewegt hat, sondern dass da überhaupt ein Objekt ist, nicht mehr und nicht weniger. Die Berechnung der Physik hat der Physikbeschleuniger jedoch erfolgreich übernommen. Das muss man sich auf jeden Fall klar machen. Aber in dem Moment, in dem wirklich sämtliche Bewegungsabläufe auf den Physikbeschleuniger übertragen werden, bekommt man seine Leistungssteigerung im vierstelligen Prozentbereich. Solch ein Spiel gibt es derzeit jedoch nicht.
Ein klarer Nachteil den ich auch nicht abstreiten möchte ist der Kostenfaktor. Es ist nötig mehr Geld auszugeben, wenn man nun diese Vorteile genießen möchte. Jedoch denke ich, dass ein Preis der bei 100€ liegt erträglich ist. Der Preis wird sicherlich fallen, wenn einige Spiele die PhysX vorraussetzen und noch ein wenig Zeit verstreift. Im Gegensatz dazu eine extra Grafikkarte zu kaufen wäre nun wirklich alles andere als wirtschaftlich. DIe PhysX läuft im gegensatz zu einer Grafikkarte noch recht gemächlich (bezogen auf die Abwärme, dem Stromverbrauch und der Kühlung).
Ein weiteres Problem ist, das Physikbeschleuniger derzeit noch nicht viel Freunde gefunden hat. Warum das dementsprechend ist, ist mit ein Rätsel. Höchstwahrscheinlich haben die meisten einfach eine falsche Sichtweise und/oder haben Angst, noch eine extra Standarthardwarekomponente in den zukünftigen PC gehört.
Physikbeschleuniger sind noch Recht jung, deshalb muss auch angefangen werden Programme mit Physikunterstützung zu programmieren und die Einbindung von Physikbeschleunigern in Spielen vereinfacht werden. Es liegt also noch ein gewisser Prozess bevor, das dürfte klar sein.
Ich hoffe damit konnte ich einen guten Einblick in das Thema geben und freue mich auf eine weiterführende, hoffentlich gepflegte Forendiskussion.
Ganz nebenbei möchte ich, damit es keinerlei Missverständnisse gibt, ein Wort zu mir selbst sagen. Ich bin kein fanatischer Zocker. Ich bin genauso wenig jemand, der zu viel Geld hat. Dieser post wurde nicht geschrieben, weil der Autor selbst eine PhysX oder einen ähnlichen Physikbeschleuniger besitzt. Derzeit taumelt mein System noch bei einer Radeon 9600Pro und einem Pentium 4 Northwood 2,53GHz herum. Außerdem bin ich begeisterter Linuxuser, weshalb ein Einsatz der Karte bei fehlendem Treibersupport ohnehin nicht in Frage kommt.
Der Artikel wurde aufgrund des riesigen Potentials und der Fähleinschätzung vieler Personen verfasst.
Mit freundlichen Grüßen,
BigChiller