Wat er in het package zit laat je maar even achterwege
Ja, om de simpele reden dat ik niet weet wat erin it. Als de VM in staat zou zijn out of the box elke mogelijke Xbox 360 executable te kunnen runnen, dan had je niets extra's hoeven te downloaden. Aangezien er wel wat gedownload wordt, plus het feit dat de CPU in de Xbox One niet krachtig genoeg is om zonder hulp van buitenaf tripple-core PowerPC code te emuleren, ligt het voordehand dat de data die je downloadt bestaat uit een nieuwe executable of emulatie-instrumentatie om de boel vlot te laten verlopen.
Microsoft zet dus volgens jou per spel de cpu/gpu instructies om van systeem A naar B?
Yup. CPU met name, GPU kan op zich nog wel live.
En verkeerde instructies worden dus per spel door een programmeur veranderd?
Wat zijn "verkeerde instructies"? Je bedoelt de PowerPC machine code van de Xbox 360 executable? Die worden inderdaad omgezet, maar dat gaat een programmeur natuurlijk niet zelf doen. Dat kan prima geautomatiseerd gebeuren.
Een klassieke emulator zoals je die kent van Mame e.d. doet dat overigens ook geautomatiseerd. Het punt is, die doet dat on the fly. Die gaat per instructie de data ophalen, instructie decoden, en de taak verrichten die die instructie doet. Dit kost je dus al honderden cycles per instructie, en aangezien de PPC in de 360 op 3GHz draait en de x86 in de Xbox One ongeveer op de helft, gaat hij dat dus nooit snel genoeg uit kunnen voeren.
De volgende stap in emulatie-land is
Just-in-Time compilatie. Dit zie je bijvoorbeeld ook gebeuren in VM's zoals die van Java en .Net. In plaats van instructie voor instructie te emuleren, worden hele brokken machine code omgezet naar machine code die compatible is met het platform waar het zaakje op draait. Hierdoor kun je allerlei optimalisaties doen en runt de boel veel efficienter, maar je betaalt nog steeds de kosten voor die JIT compilatie zelf.
Ook dat is te verhelpen, door niet alles live te compileren, maar offline. De machine code van de 360 game kan volledig geautomatiseerd geanalyseerd en vertaald worden, en er kunnen optimalisaties worden aangebracht specifiek voor het x86 platform. Dit kan een relatief tijdrovend proces zijn, maar dat boeit niet, want je doet dat maar 1 keer. Daarna heb je een executable of iets vergelijkbaars wat gewoon vrijwel direct uitvoerbaar is op de Xbox One. Wat de VM dan vervolgens nog doet is het virtualiseren van de daadwerkelijke hardware.
Kijk, ik wil niet impliceren dat er helemaal geen handwerk bij komt kijken. Natuurlijk worden die games goed getest, en wellicht dat er sommige delen met de hand geoptimaliseerd of rechtgezet moeten worden.
Als jij een betere verklaring hebt voor dit hele verhaal dan hoor ik het graag, maar gewoon maar roepen dat iedereen onzin praat verdien je geen punten mee.
[Reactie gewijzigd door .oisyn op 26 juli 2024 13:24]