PS3: Hardware- statt Software-Emulation?
Moderatoren: Moderatoren, Redakteure
-
unknown_18
- Beiträge: 26973
- Registriert: 05.08.2002 13:11
- Persönliche Nachricht:
Du vergisst hier eines: Sony kennt die technischen Daten der PS2 bis ins kleinste Detail, dazu kommt dann noch das sie genügend Leute dafür einsetzen können einen Emulator zu schreiben. Die PC Emulatoren sind alles Freizeitprojekte von Leuten, die nicht wirklich soviele Daten über die PS2 haben wie Sony selbst, dazu kommt noch das der PC ein System ist, der aus Millionen von Hardware Konfigurationsmöglichkeiten besteht, wärend die PS3 immer gleich ist. Daher lässt sich ein Emulator viel effektiver und optimierter programmieren. Und der XBox Emu der XBox360 ist dazu eh kein Vergleich, denn der Hardware Unterschied ist um einiges grösser (Intel > PPC / NVidia > ATI) und es muss viel mehr emuliert werden, bei der PS3 könnte sich das noch ehr in Grenzen halten und der Multicore Cell Prozessor kann auch dafür besser genutzt werden, ein Kern emuliert die Grafik, ein anderer den Sound usw. (nur ein Beispiel). Und was ein Software Emulator zu leisten im Stande ist zeigt sehr gut ePSXe, der beste PS1 Emu auf dem PC, denn der peppt die Grafik erheblich auf, sowas könnte ein Hardware Emulator niemals in dem Umfang.
-
johndoe-freename-79054
- Beiträge: 434
- Registriert: 04.03.2005 19:07
- Persönliche Nachricht:
Das Sony mehr Durchblick bei der PS2 hat, als irgendwer anders, ist natürlich korrekt. Aber trotzdem werden die den Emulator nicht einfach aus dem Ärmel schütteln. Die Architektur-Unterschiede sind auch bei der PS3 nicht von schlechten Eltern. Bei der PS2 ist die Emotion Engine der Dreh- und Angelpunkt des ganzen Systems. Bei der PS3 erfolgte die mittlerweile übliche Verlagerung vieler grafischer Berechnungen auf den RSX. Dazu kommt der Cell, welcher auch eine erhebliche Veränderung darstellt.
Die PS2 ist auch schon eine ziemlich parallele Hardware. Aber sie ist anders aufgebaut als der Cell. Und gerade PS2-Titel, bei denen die Entwickler wirklich ganz tief in die Hardware gekrochen sind (z.B. God of War, MGS3, GT4 etc.), dürften einen sehr speziellen Quellcode haben, den man auch auf dem Cell nicht so ohne weiteres zum Laufen kriegen wird. Dazu kommt noch der Umstand, dass die PS2 eine sehr offene Hardware ist, die es gestattet, einunddaselbe Problem auf unterschiedliche Arten zu lösen. Es kann also durchaus sein, dass man bei drei Spielen z.B. drei Mal den gleichen Grafikeffekt hat, der allerdings auf drei unterschiedliche Weisen realisiert wurde. Und jetzt versuch mal, das in einen vernünftigen Emulator zu gießen.
Die PS2 ist auch schon eine ziemlich parallele Hardware. Aber sie ist anders aufgebaut als der Cell. Und gerade PS2-Titel, bei denen die Entwickler wirklich ganz tief in die Hardware gekrochen sind (z.B. God of War, MGS3, GT4 etc.), dürften einen sehr speziellen Quellcode haben, den man auch auf dem Cell nicht so ohne weiteres zum Laufen kriegen wird. Dazu kommt noch der Umstand, dass die PS2 eine sehr offene Hardware ist, die es gestattet, einunddaselbe Problem auf unterschiedliche Arten zu lösen. Es kann also durchaus sein, dass man bei drei Spielen z.B. drei Mal den gleichen Grafikeffekt hat, der allerdings auf drei unterschiedliche Weisen realisiert wurde. Und jetzt versuch mal, das in einen vernünftigen Emulator zu gießen.
- Max Headroom
- Beiträge: 1856
- Registriert: 05.08.2002 13:11
- Persönliche Nachricht:
Gute Männer braucht das SONY-Land...
@Hotohori:
Ich weiss nicht in wie fern überhaupt Datenblätter zu den einzelnen Chips erhältlich sind. Ich weiss nur, dass z.Bsp. die Z80-CPU oder die Motorola 68k Familie allesammt per Datenblätter erhältlich sind und somit die Emulatoren dieser CPUs sehr exakt funktionieren, bis hinein zu manchen ausgenutzten Opcode-Fehler.
SONY hat es um ein vielfaches leichter, den Befehlssatz der Emotion Engine auf die der CELL umzusetzen. Allerdings bezweifle ich, dass sie gleich ein Chor an Programmierer dransetzen werden, einen stabilen, schnellen und bis zum einzelnem Zyklus genauen Emulator zu entwerfen und gleich fehlerfrei zum laufen zu bringen. Auch ich gehe eher davon aus, dass die Befehle schön-einfach zur schon auf dem Board gelöteten CPU durchgeschliffen werden. Jedenfalls was die CPU angeht ist dies die wahrscheinlichste Lösung. Man erspart sich das komplette Opcode und Flags gefummele und hat sofort Resultate
Die Prozessoren der Maschinen basieren AFAIK alle auf einen RISC-Kern, das stimmt, aber ob der Aufwand für die Emulation einer Emotion Engine wirklich geringer sein sollte als die Umsetzung der x64er Befehle des alten XBox Intel-Chips in die des PPCs ? Ich bin mir da nicht sicher, aber war das große Problem bei den PC-Emulatoren auf dem Apple nicht diese Little- / Big-Endian Geschichte ? Das Umwandeln der Hi-Low Reihenfolge der Bytes ? Wenn die XB360-CPU dies per Hardware erledigen könnte, dann wäre schon ein Großteil der Problematik vorbei, denn die Umwandlung der x64-Befehle ist schon seit langer Zeit kein allzu großes Problem für PPC-Nutzer. Der Apfel hatte schon seit längerem PC-Emulatoren, nur frass die Endian-Sache die meiste Power.
Die Grafik, die ist schon eher ein Knackpunkt. Hätten sich alle Programmierer fein säuberlich an DirectX gehalten, dann wäre die Umsetzung alles andere als ein Problem. Aber um eine einwandfreie Emu zu garantieren, müssen auch indokumentierte "Features" berücksichtigt werden... und da wird der Hund begraben sein.
1. Ist die PS3 mit ihrer CELL-Architektur die einzigste Konsole mit mehr als einen Kern ? Hast du etwa schon die XB360 vergessen ?
2. Du kannst zwar die Emulation an sich auf mehrere Threats aufteilen, dies macht eine Menge Sinn. Aber die Spiele waren und bleiben Singlethreats. Das heisst, das man wohl ohne Neukompilierung selbst den optimiertesten Multicore-Emulator nur Schritt für Schritt aufrufen kann. Die CPU3, welche sich mit der Grafik befasst und CPU4, der den Ton steuert kriegen *keine* Daten im Vorraus, wie es bei einem echten Multithreat-System der Fall wäre, sondern müssen eben warten bis das Spiel irgendwann einen Ton ausgeben will. Währenddessen muss die Grafik warten, welcher unabhängig nebenan arbeitet. Durch Multicore kann man zwar effizienter arbeiten, und die für Emulatoren bekannte Latenz zwischen den einzelnen Komponenten (CPU, GPU, IO, ...) auf ein Minimum reduzieren, doch die Software, die emuliert wird, profitiert selbst gar nicht davon, sie sieht ja nur ihr altes System vor sich... eine (emulierte) PS2, die nur einen Kern hat
Die XB360 hat es da anders gemacht. Sie nutzt AFAIK speziell kompilierte Exes, die sie dann optimiert abspielt. Was nicht dem Emulator bekannt ist, wird entweder nicht gestartet oder nur auf gut Glück im purem Emulator probiert. Habe keine XB360 und kann deshalb darauf keine Garantie geben ob er unbekannte SPiele ignoriert oder doch in Pur emuliert
Das ist der große Vorteil im Hause SONY. Keiner kennt die Datenblätter besser als sie selbstSony kennt die technischen Daten der PS2 bis ins kleinste Detail, dazu kommt dann noch das sie genügend Leute dafür einsetzen können einen Emulator zu schreiben. Die PC Emulatoren sind alles Freizeitprojekte von Leuten, die nicht wirklich soviele Daten über die PS2 haben wie Sony selbst
SONY hat es um ein vielfaches leichter, den Befehlssatz der Emotion Engine auf die der CELL umzusetzen. Allerdings bezweifle ich, dass sie gleich ein Chor an Programmierer dransetzen werden, einen stabilen, schnellen und bis zum einzelnem Zyklus genauen Emulator zu entwerfen und gleich fehlerfrei zum laufen zu bringen. Auch ich gehe eher davon aus, dass die Befehle schön-einfach zur schon auf dem Board gelöteten CPU durchgeschliffen werden. Jedenfalls was die CPU angeht ist dies die wahrscheinlichste Lösung. Man erspart sich das komplette Opcode und Flags gefummele und hat sofort Resultate
Naja... soviele "Millionen" von Konfigurationsmöglichkeiten haben wir da auch nicht. Eine CPU von Intel und eine CPU von AMD. Andere (Billig-)Hersteller wie Transmeta & Co. nehme ich mal weg, die dürften weniger das Ziel eines Emulator-Programmierers sein. Beide basieren natürlich auf x86 Befehle. Dazu noch Grafikkarten... ob nVidia oder ATi, beide werden per DirectX angesteuert. Und die Musik ? Früher war die Angabe einer Soundkarte, IRQs bzw. Portes pflicht. Heute fragt man einfach Herr DirectX, was er mit der WAVE in der Pipeline anstellen will. Und ob ich eine TV-Karte, Relaiskarte oder ein Modem mit einer Direktleitung zum Präsidenten am PC angeklemmt habe, interessiert der Starscream 68k Engine herzlichst wenig. Der schnappt sich das ROM, wandelt die Opcodes des 68000ers in den Befehlssatz des x86ers um und fertig ist der Brei für das Hauptprogramm.dazu kommt noch das der PC ein System ist, der aus Millionen von Hardware Konfigurationsmöglichkeiten besteht, wärend die PS3 immer gleich ist. Daher lässt sich ein Emulator viel effektiver und optimierter programmieren.
Die PS3 unterscheidet sich von der PS2 genauso, wie zur PS1... nämlich enormUnd der XBox Emu der XBox360 ist dazu eh kein Vergleich, denn der Hardware Unterschied ist um einiges grösser (..) und es muss viel mehr emuliert werden, bei der PS3 könnte sich das noch ehr in Grenzen halten(..)
Die Grafik, die ist schon eher ein Knackpunkt. Hätten sich alle Programmierer fein säuberlich an DirectX gehalten, dann wäre die Umsetzung alles andere als ein Problem. Aber um eine einwandfreie Emu zu garantieren, müssen auch indokumentierte "Features" berücksichtigt werden... und da wird der Hund begraben sein.
Zwei Sachen stören mich da noch...(..)und der Multicore Cell Prozessor kann auch dafür besser genutzt werden, ein Kern emuliert die Grafik, ein anderer den Sound usw.
1. Ist die PS3 mit ihrer CELL-Architektur die einzigste Konsole mit mehr als einen Kern ? Hast du etwa schon die XB360 vergessen ?
2. Du kannst zwar die Emulation an sich auf mehrere Threats aufteilen, dies macht eine Menge Sinn. Aber die Spiele waren und bleiben Singlethreats. Das heisst, das man wohl ohne Neukompilierung selbst den optimiertesten Multicore-Emulator nur Schritt für Schritt aufrufen kann. Die CPU3, welche sich mit der Grafik befasst und CPU4, der den Ton steuert kriegen *keine* Daten im Vorraus, wie es bei einem echten Multithreat-System der Fall wäre, sondern müssen eben warten bis das Spiel irgendwann einen Ton ausgeben will. Währenddessen muss die Grafik warten, welcher unabhängig nebenan arbeitet. Durch Multicore kann man zwar effizienter arbeiten, und die für Emulatoren bekannte Latenz zwischen den einzelnen Komponenten (CPU, GPU, IO, ...) auf ein Minimum reduzieren, doch die Software, die emuliert wird, profitiert selbst gar nicht davon, sie sieht ja nur ihr altes System vor sich... eine (emulierte) PS2, die nur einen Kern hat
Die XB360 hat es da anders gemacht. Sie nutzt AFAIK speziell kompilierte Exes, die sie dann optimiert abspielt. Was nicht dem Emulator bekannt ist, wird entweder nicht gestartet oder nur auf gut Glück im purem Emulator probiert. Habe keine XB360 und kann deshalb darauf keine Garantie geben ob er unbekannte SPiele ignoriert oder doch in Pur emuliert
Geht ja nur, wenn man die gesammten Daten erstmal von der CD abfängt und sie in einer art "Preprocessor" modifiziert, bevor der Renderer am Ende das Bild auf dem echten oder simulierten Grafik-Chip ausgibt. Die PS3 könnte Leistungsfähig genug sein, die CPU OnBoard aber die GPU per CELL-Software zu ermöglichen. Dann wären solche ePSXe-Tricks ohne weiteres möglich.Und was ein Software Emulator zu leisten im Stande ist zeigt sehr gut ePSXe, der beste PS1 Emu auf dem PC, denn der peppt die Grafik erheblich auf, sowas könnte ein Hardware Emulator niemals in dem Umfang.
- ogami
- Beiträge: 4247
- Registriert: 05.08.2002 13:00
- Persönliche Nachricht:
@ Max
ob die 360 es erst mit dem reinen Emulator versucht kann ich nicht sagen, verhält sich aber im Windows Stil, erst Abfrage ob in Komp.liste vorhanden, wenn nicht Nachfrage an Server (sofern online) ob mittlerweile Update für die Spiel-ID. Wenn dann auch nicht, kommt eine Meldung das es (noch) nicht unterstützt wird.
ob die 360 es erst mit dem reinen Emulator versucht kann ich nicht sagen, verhält sich aber im Windows Stil, erst Abfrage ob in Komp.liste vorhanden, wenn nicht Nachfrage an Server (sofern online) ob mittlerweile Update für die Spiel-ID. Wenn dann auch nicht, kommt eine Meldung das es (noch) nicht unterstützt wird.
-
unknown_18
- Beiträge: 26973
- Registriert: 05.08.2002 13:11
- Persönliche Nachricht:
Du vergisst nur dabei, das es auf dem PC auch massig unterschiedliche Treiber gibt, da kann selbst ein Treiber, der eigentlich nichts mit der für den Emu nötigen Hardware zu tun hat, für Ärger sorgen. Schon allein die ganzen verschiedenen Mainboards und Chipsätze und CPU ist auch nicht gleich CPU, Intel und AMD ist nur eine sehr grobe Aufteilung, aber genau genommen muss man auch schon wieder zwischen AMD Duron, AMD Athlon XP, AMD Athlon 64 u.a. unterscheiden, da die alle verschiedene zusätzliche Befehlssätze haben, wovon ein Emulator teilweise durchaus provitieren kann, wenn er sich denn darauf verlassen könnte das den Befehlssatz jeder in seiner CPU hat. Bei mancher Software kann man z.B. SSE für AMD CPUs ein/ausschalten. Das alles sind jedenfalls auch Dinge, die einen PC von anderen unterscheiden lässt und daher komm ich auf die Millionen Konfigurationsmöglichkeiten.Naja... soviele "Millionen" von Konfigurationsmöglichkeiten haben wir da auch nicht.
Es mir ja nicht darum das die emulierte Software was davon hat, sondern der Emulator selbst. Abgesehen davon hat die natürlich auch die emulierte Software etwas davon, wenn der Emulator besser läuft.Durch Multicore kann man zwar effizienter arbeiten, und die für Emulatoren bekannte Latenz zwischen den einzelnen Komponenten (CPU, GPU, IO, ...) auf ein Minimum reduzieren, doch die Software, die emuliert wird, profitiert selbst gar nicht davon, sie sieht ja nur ihr altes System vor sich... eine (emulierte) PS2, die nur einen Kern hat
Was aber auch wieder keine reine Hardware Emulationslösung wäre.Die PS3 könnte Leistungsfähig genug sein, die CPU OnBoard aber die GPU per CELL-Software zu ermöglichen.
- Max Headroom
- Beiträge: 1856
- Registriert: 05.08.2002 13:11
- Persönliche Nachricht:
@Hotohori:
(Mio. an PC-Configs)
Leider muss dazu gesagt werden, dass SSE-Optimierungen für manche Berechnungen wirklich gut sind, aber SSE ersetzt z.Bsp. nicht die AltiVec-Erweiterung der G-Prozessoren der alten Apples. Für Photoshop war AltiVec ein Segen... dennoch haben Spiele oder Emulatoren auf dem Mac sie wohl kaum genutzt, brachte wohl nicht viel für diese Zwecke. In Zukunft werden wir diese Virtualisierungs-Einheiten in den CPUs finden. XEN auf Linux oder VMWare auf Windows werden es begrüßen, doch der Emulator-Schreiber kann getrost auf den Aufruf pfeiffen 
Aber im Grunde genommen hast Du schon recht. Hier und da existieren schon schöne Sachen... wer weiss, vielleciht kann ein SSE4-Befehl Big- und Litte-Endian beinahe nativ verarbeiten... sowas wäre für Emus ein Segen. Aber mein AthlonXP würde da grinsend abstürzen. Jedenfalls solange der Coder nicht eine äquivalente, aber langsame, Lösung als Fallback einbaut... doch dazu ist er nicht verpflichtet
Durch einen Schalter beim Compiler kann heute zu fast jedem Chip eine eigene "optimierte" Exe erstellt werden. Doch die "Generic Binary", die bei der Standard-Einstellung erzeugt wird, ist meist die gebräuchlichste. Ich bin mir sicher, mein Rechner ist *nicht* der selbe wie der von einem der MAME-Entwickler, dennoch kann ich - trotz anderer Grafikkarte, Soundkarte, Netzwerkkarte, Videokarte, ab heute auch Sat-Karte, Drucker, RAM und gar Maus - getrost zu einem ROM greifen und das Teil starten. Das File nutzt einfach das, was vorhanden ist, und das ist "genormt" und vom OS (hoffentlich) sauber vorgegeben. MAME muss sich nicht um direkte Hardware-Aufrufe kümmern, der nutzt nur "sound()" von DirectX und schon ertönt ein Bliep. Naja, solange der User selbst den Treiber auch installiert hat 


Aber um im Gegensatz zur reinen Software-Lösung trotzdem einen hohen Grad an Kompatibilität zu ermöglichen, wäre die oben erwähnte Lösung IMHO vertretbarer als jeden einzelnen Chip mit allen Flags und Bugs akkurat und fehlerfrei per Software zu emulieren.
Da fällt mir z.Bsp. die SID-Karten am PC ein. HardSID zum Beispiel oder die Catweazle Karten. Auf der einen Seite sind es Hardware-Chips, auf der anderen Seite ermöglicht die Software es, z.Bsp. mehrere Chips parallel zu nutzen (8+ Stimmen SIDs oder bessere Digisamples). Man hat hierbei die Limits neu definiert, dennoch ist die Hardware darunter steinalt
So könnte die PS3 letztenendes alles haben. PS2-Chips on Board, oder doch rein emulierte Software-Chips oder gar Hardware-Berechnungen mit Software-Pre/Postprocessor ? Was ist für ein Unternehmen einfacher/billiger/besser zu realisieren ? Wo ist die größere Kompatibilität, um sich nachträglichen Service an nicht funktionierenden Spielen zu ersparen ? Was muss getan werden, um die Versprechen (HDTV, besseres Bild) zu halten ? Fragen über fragen... zu der wir alle die Lösung suchen wollen
(Mio. an PC-Configs)
Darum kümmert sich kein Emulator-Programmierer, das ist Problem des UsersDu vergisst nur dabei, das es auf dem PC auch massig unterschiedliche Treiber gibt, da kann selbst ein Treiber, der eigentlich nichts mit der für den Emu nötigen Hardware zu tun hat, für Ärger sorgen.
Bei den meisten gibt es die eine oder andere Optimierung, z.Bsp. für Pentium-Caches. SSE unterstützt so gut wie jeder Prozessor. Entwickelt man einen Emulator, dann setzt man gewisse Requirements fest. Kaum ein Entwickler schreibt seine Programme für Windows 95, 64 MB RAM und Glide3D Schnittstelle(..)zwischen AMD Duron, AMD Athlon XP, AMD Athlon 64 u.a. unterscheiden, da die alle verschiedene zusätzliche Befehlssätze haben, wovon ein Emulator teilweise durchaus provitieren kann, wenn er sich denn darauf verlassen könnte das den Befehlssatz jeder in seiner CPU hat.
Aber im Grunde genommen hast Du schon recht. Hier und da existieren schon schöne Sachen... wer weiss, vielleciht kann ein SSE4-Befehl Big- und Litte-Endian beinahe nativ verarbeiten... sowas wäre für Emus ein Segen. Aber mein AthlonXP würde da grinsend abstürzen. Jedenfalls solange der Coder nicht eine äquivalente, aber langsame, Lösung als Fallback einbaut... doch dazu ist er nicht verpflichtet
Stimmt, wenn es um Konfigurationsmöglichkeiten geht. Aber wenn es um "Standards" wie CPU-Befehle (x64) oder DirectXYZ Aufrufe geht, ist alles der selbe BreiDas alles sind jedenfalls auch Dinge, die einen PC von anderen unterscheiden lässt und daher komm ich auf die Millionen Konfigurationsmöglichkeiten.
Der Emulator kann seine Last per "Load Balancing" auf die Kerne auslagern und somit das ganze sicherlich flüssiger ablaufen lassen als sonst. Doch auch wenn der GFX-Kern auf Prozessor 3 mit 9 GHz arbeiten würde... solange Kern 2 den Ton der 7 MHz-Maschine ausgibt, hat er trotz GHz-Power nichts zu melden und muss warten bis er aufgerufen wird. Aber WENN er kommt, dann aber richtigEs mir ja nicht darum das die emulierte Software was davon hat, sondern der Emulator selbst. Abgesehen davon hat die natürlich auch die emulierte Software etwas davon, wenn der Emulator besser läuft.
Gerüchteweise SOLL ja Software zum Einsatz kommen... das ist ja der Titel dieser NewsDie PS3 könnte Leistungsfähig genug sein, die CPU OnBoard aber die GPU per CELL-Software zu ermöglichen.
Was aber auch wieder keine reine Hardware Emulationslösung wäre.
Aber um im Gegensatz zur reinen Software-Lösung trotzdem einen hohen Grad an Kompatibilität zu ermöglichen, wäre die oben erwähnte Lösung IMHO vertretbarer als jeden einzelnen Chip mit allen Flags und Bugs akkurat und fehlerfrei per Software zu emulieren.
Da fällt mir z.Bsp. die SID-Karten am PC ein. HardSID zum Beispiel oder die Catweazle Karten. Auf der einen Seite sind es Hardware-Chips, auf der anderen Seite ermöglicht die Software es, z.Bsp. mehrere Chips parallel zu nutzen (8+ Stimmen SIDs oder bessere Digisamples). Man hat hierbei die Limits neu definiert, dennoch ist die Hardware darunter steinalt
So könnte die PS3 letztenendes alles haben. PS2-Chips on Board, oder doch rein emulierte Software-Chips oder gar Hardware-Berechnungen mit Software-Pre/Postprocessor ? Was ist für ein Unternehmen einfacher/billiger/besser zu realisieren ? Wo ist die größere Kompatibilität, um sich nachträglichen Service an nicht funktionierenden Spielen zu ersparen ? Was muss getan werden, um die Versprechen (HDTV, besseres Bild) zu halten ? Fragen über fragen... zu der wir alle die Lösung suchen wollen
