Metagames


Précédent   Metagames > Univers Playstation > Playstation Portable
Accueil S'inscrire Blogs FAQ Communauté Calendrier Téléchargements Messages du jour Recherche

Playstation Portable Console portable, sortie en 2005 (PSP), 2007 (PSP Slim & Lite), 2008 (PSP 3000), 2009 (PSP Go), 2011 (PSP Street)

Réponse
 
Outils de la discussion Modes d'affichage
Vieux 07/08/2006, 01h07   #1 (permalink)
Profil
Membre
Ancienneté  78%
Ancienneté 78%
 
Date d'inscription: mai 2006
Messages: 3 215
Téléchargements: 0
Uploads: 0
Merci: 0
Remercié 0 fois dans 0 Posts
Par défaut

desoler le post et en anglais apparement la vitesse de l'émulateur a été doubler que du bon donc

More R7 Optimisations

It's been a while since my last post, but I've still been hard at work with various optimisations for Daedalus R7.

Although my main focus is on improving the dynamic recompiler, I've been looking at optimising a couple of other areas that I noticed were fairly expensive. The texture cache is one of the areas that I spent time tuning this week. This cache is used to avoid converting textures from the native n64 formats to psp formats every frame. I made a couple of fixes to improve the hashing function which gives much faster lookups in certain situations (such as tiled backdrops). I also provided an option to change the frequency at which the texture cache checks for updates to the textures. Many roms look fine when this check is entirely disabled, and this can give quite a nice speed boost.

My main focus has continued to be on the dynamic recompiler. I've made a couple more bugfixes in this area. One bugfix involved detecting when roms were using self-modifying code. The fix involved dumping the contents of the dynarec cache so that the code is correctly regenerated for the updated instructions. This fix solves a couple of issues I was seeing with Quest64, and I'm sure it will help improve compatibility with a number of other roms too.

The other dynarec issue I fixed was related to the way I was handling certain types of branch instructions. The MIPS processor has a set of 'branch likely' instructions which work slightly differently to regular branches and so I handle them separately in the dynamic recompiler. It turned out that I had forgotten to link together code fragments when they exited through a branch likely instruction. This fix gives a nice little speedup.

The biggest bit of new development I've been doing on the dynarec is on optimising for various situations where I can determine the contents of a given register at the time I'm compiling the code. As an example, many roms use the following sequence to load an integer value from memory at a specific address:

LUI $t0, 0x8033 // Load Upper Immediate - i.e. load t0 with 0x80330000
LW $t0, 0x1234($t0) // Load Word - i.e. load t0 with the value at 0x80331234

Previously I'd generate code for both of these instructions on the PSP. The LUI instruction is easy (if t0 is cached on the PSP then this is just one instruction). The LW is a lot more tricky. I have to call a function to convert the address on the n64 (0x80331234 in this case) to the address in the emulated memory on the PSP. Then I have to read from that address, or trigger an exception in the emulator if the memory address is invalid.

With the changes I've just made, when I encounter the LUI instruction (or other instructions involving loading constant values into registers) I keep track of the fact that I've loaded t0 with 0x80330000. When I come to process the LW instruction, I can now determine that the desired address is 0x80331234. I can then map that address directly to the required location on the PSP, avoiding a function call in the generated code. By avoiding the function call I no longer need to flush cached registers back out to memory. Also, because I can tell in advance that the address lies in RAM (and isn't referencing a hardware register for instance) then I can also omit the code testing for an exception. Finally, in situations like the example above, I can don't need to generate any code for the initial LUI (as the register is immediately overwritten with the loaded value.)

In summary this is a very nice optimisation - it generates fewer instructions (reducing the size of the dynarec code), it avoids unnecessarily flushing out cached registers, it avoids generating exception handling code, and it can eliminate redundant instructions (the initial LUI). In the best case, for 2 source instructions it will generate just 3 output instructions, compared to 12-13 for the unoptimised case.

Unfortunately this approach only works with load and store instructions where the address can be determined in advance, but from the roms I've examined so far around 10-15% of the load/store instructions can be optimised in this way, which is enough to give a measurable benefit.

I'm going to spend the rest of this week seeing which other parts of the dynarec engine can benefit from similar approaches. I have a couple of other features to implement (configurable controllers etc), if that all goes to plan I'll try and prepare R7 for a release next weekend.

Source:http://strmnnrmn.blogspot.com/
momo_ps2 est déconnecté   Réponse avec citation
Vieux 07/08/2006, 01h16   #2 (permalink)
Profil
Membre
Ancienneté  71%
Ancienneté 71%
 
Avatar de yaya69230
 
Date d'inscription: mai 2006
Localisation: lyon
Âge: 32
Messages: 2 980
Téléchargements: 0
Uploads: 0
Merci: 65
Remercié 138 fois dans 102 Posts
Par défaut

merci momo 1er sur l'émulation lol

__________________


yaya69230 est déconnecté   Réponse avec citation
Vieux 07/08/2006, 02h20   #3 (permalink)
Profil
Banni
Ancienneté  93%
Ancienneté 93%
 
Date d'inscription: mai 2006
Localisation: Salon Beta Sony
Âge: 42
Genre : Homme
Pays :
Messages: 6 842
Téléchargements: 0
Uploads: 0
Merci: 0
Remercié 0 fois dans 0 Posts
Envoyer un message via MSN à Vicos
Par défaut

Faut plancher sur la traduction aussi momo
Vicos est déconnecté   Réponse avec citation
Vieux 07/08/2006, 06h54   #4 (permalink)
Profil
Otaku Style
Ancienneté  72%
Ancienneté 72%
 
Avatar de milouk
 
Date d'inscription: mai 2006
Localisation: Akihabara
Pays :
Messages: 4 764
Téléchargements: 0
Uploads: 0
Entrées dans le blog: 1
Merci: 0
Remercié 26 fois dans 22 Posts
Envoyer un message via MSN à milouk
Par défaut

c'est good ca,vivement ce week end.
milouk est déconnecté   Réponse avec citation
Vieux 07/08/2006, 08h27   #5 (permalink)
Profil
-= Serial Troker =-
Ancienneté  72%
Ancienneté 72%
 
Avatar de Yoshee
 
Date d'inscription: mai 2006
Localisation: Le Havre
Âge: 39
Genre : Homme
Pays :
Messages: 9 061
Téléchargements: 1
Uploads: 1
Entrées dans le blog: 2
Merci: 25
Remercié 148 fois dans 86 Posts
Par défaut

Si quelqu'un se sent chaud pour la traduction

Merci momo de l'info !
Yoshee est déconnecté   Réponse avec citation
Vieux 07/08/2006, 08h49   #6 (permalink)
Profil
silentdie
Non Inscrit / Non Connecté
Ancienneté  100%
Ancienneté 100%
 
Messages: n/a
Téléchargements:
Uploads:
Par défaut

j'ai rien compris à la traduction sauf qu'il parle d'avoir booster certaines choses dans l'emulateur... donc en gros cette version permettra de jouer avec un FPS raisonable dans les jeux c'est bien sa ?
  Réponse avec citation
Vieux 07/08/2006, 10h04   #7 (permalink)
Profil
Membre
Ancienneté  71%
Ancienneté 71%
 
Date d'inscription: mai 2006
Messages: 432
Téléchargements: 0
Uploads: 0
Merci: 3
Remercié 0 fois dans 0 Posts
Par défaut

Apparemment il a réussi à faire passer de 12-13 instructions à 3 instructions seulement pour les fois où on peut prévoir les données.

Mais ça marche que pour 10-15% des cas d'instruction lors d'une émulation. Ca veut dire que ça permet de gagner du gros fremerate dans ces cas là ce qui est déjà pas mal.
festinacitizen est déconnecté   Réponse avec citation
Vieux 07/08/2006, 10h15   #8 (permalink)
Profil
Gamer toujours !
Ancienneté  85%
Ancienneté 85%
 
Avatar de Link14
 
Date d'inscription: mai 2006
Localisation: Nord (59)
Âge: 34
Genre : Homme
Pays :
Messages: 5 419
Téléchargements: 3
Uploads: 0
Entrées dans le blog: 1
Merci: 97
Remercié 84 fois dans 63 Posts
Par défaut

J'espère que cet ému va continuer à avancer comme ca!
__________________

Link14 - La collection, PS3 et compagnie

Profil PSN :
Link14_fr - Si seulement je pouvais bien bosser en cours au lieu de jouer...
Link14 est déconnecté   Réponse avec citation
Vieux 07/08/2006, 11h02   #9 (permalink)
Profil
-= Serial Troker =-
Ancienneté  72%
Ancienneté 72%
 
Avatar de Yoshee
 
Date d'inscription: mai 2006
Localisation: Le Havre
Âge: 39
Genre : Homme
Pays :
Messages: 9 061
Téléchargements: 1
Uploads: 1
Entrées dans le blog: 2
Merci: 25
Remercié 148 fois dans 86 Posts
Par défaut

Euh, sinon, quelqu'un se sert de la version actuelle ?

Si oui, c'est bien ou pour le moment c'est pas réellement "utilisable" ?
Yoshee est déconnecté   Réponse avec citation
Vieux 07/08/2006, 11h04   #10 (permalink)
Profil
Membre
Ancienneté  80%
Ancienneté 80%
 
Date d'inscription: mai 2006
Messages: 615
Téléchargements: 0
Uploads: 0
Merci: 1
Remercié 4 fois dans 4 Posts
Par défaut

ca tourne a 10-15FPS la version actuelle...
__________________
XBOX360™ JTAG Jasper256Mo FreeBoot 2.0.13599.0
Playstation® 3 Slim HDD250Go Fw 3.55 Kmeaw

Aliasjim2000 est déconnecté   Réponse avec citation
Réponse
Précédent   Metagames > Univers Playstation > Playstation Portable


Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non


Discussions similaires
Discussion Auteur Forum Réponses Dernier message
Votez pour le prochain jeu XBLA tiré de la mégadrive MickeyBlue Xbox 360 5 17/08/2009 14h51
[NEWS] Promo sur la VOD pour le week end PsyKos Xbox 360 4 20/03/2008 22h56
2.71 SE-C pour ce week end ? doudou2 Playstation Portable 22 23/11/2006 19h52
2.71SE-C et HEN D pour ce week-end !!! V!RUS-T Playstation Portable 1 23/11/2006 00h02
le prochain kernel prévu pour quand ? ninku Gameboy and DS 5 23/03/2006 23h03


Fuseau horaire GMT +1. Il est actuellement 12h25.


© 2003-2018 MetaGames. Tous droits réservés.