Obligement - L'Amiga au maximum

Samedi 24 mai 2025 - 03:36  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in English


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Point de vue : Pourquoi Amithlon était aussi rapide ?
(Article écrit par Bernd Meyer et extrait d'AmigaWorld.net - février 2023)


NDLR : dans un fil de discussion sur le forum d'AmigaWorld.net, l'auteur d'Amithlon/Umilator, Bernd "Umisef" Meyer a donné quelques informations sur les raisons de la si grande vitesse de son émulateur Amithlon. En voici une traduction :

La raison pour laquelle Amithlon (et par filiation, Umilator) étaient si rapides est que, malgré de nombreuses affirmations contraires, il ne s'agit pas seulement d'UAE avec l'émulation des puces spécialisées.

Dans le compilateur à la volée (JIT) d'UAE, qui doit s'adapter à tout système d'exploitation sous-jacent, les accès à la mémoire en mode haute compatibilité sont effectués par consultation d'une table et appel de fonction. En mode "accès direct à la mémoire", ils sont toujours effectués de cette manière pendant la phase initiale de précompilation, et le JIT enregistre simplement s'ils utilisent la mémoire ou quelque chose de spécial. Ensuite, au moment de la compilation, les instructions qui accèdent à la mémoire sont supposées toujours accéder à la mémoire. Et la mémoire est allouée par le système d'exploitation hôte à des adresses qui ont un décalage constant par rapport aux adresses de l'Amiga, de sorte que l'accès à la mémoire doit "simplement" ajouter ce décalage.

Dans Amithlon, le système d'exploitation hôte joue plutôt le jeu avec l'émulateur. Les adresses que l'Amiga émulé voit sont les mêmes que celles du côté x86 : pas besoin de décalage. Ce qui est problématique, car certaines des adresses que l'Amiga considère comme très fermes sont celles où un PC de l'ère 2001 attribue le bus PCI par défaut. Donc une des premières choses qu'Amithlon fait au démarrage est de réattribuer tout l'espace PCI ailleurs.

Et ce sont tous les accès à la mémoire qui utilisent simplement la même adresse dans l'espace d'adressage x86. Tout ce qui n'est pas un accès à la mémoire ou à la ROM est géré par la MMU, et le gestionnaire approprié est appelé de cette façon.

De plus, dans UAE (du moins à l'époque), l'état de l'émulation des puces spécialisées est mis à jour dans le fil d'exécution principal : ce qui signifie que le JIT doit garder une trace de la quantité de travail qu'il a effectué, et occasionnellement, sortir pour faire avancer cette émulation. La même chose s'applique aux interruptions 68k : si l'une d'entre elles se produit, le code JIT doit être quitté ; et savoir si l'une d'entre elles s'est produite (par exemple à cause d'une entrée clavier) nécessite également une vérification périodique avec le système d'exploitation. Et bien que j'aie réduit l'effort de suivi autant que possible, cela, et surtout la vérification, a vraiment ralenti les choses (la vérification, par nécessité, écrase les drapeaux, donc tous les drapeaux 68k qui sont maintenus dans les drapeaux x86 à ce moment-là doivent être sauvegardés, et plus tard restaurés : ce ne sont pas des opérations rapides). En revanche, dans Amithlon, les puces spécialisées qui restent (principalement les CIA) ont leur état calculé à la demande, à partir du compteur de cycles du x86. Et toutes les interruptions 68k sont en fait des interruptions du côté x86, qui sont ensuite transmises à l'émulateur comme des signaux (c'est-à-dire qu'elles interrompent réellement l'exécution du programme). Elles nécessitent toujours une sortie bien définie du code JIT, mais cela est réalisé en saupoudrant des instructions JSR dans tout le code, à une adresse qui contient généralement simplement un RET. Ce genre de chose est incroyablement rapide, car tout est mis en cache. De plus, cela ne gâche rien. Donc, si une sortie est nécessaire, le RET est remplacé par un JMP vers un endroit qui sait comment chercher où se trouve le code correspondant pour dérouler l'état d'émulation pour un JSR donné, remplace l'adresse de retour sur la pile par celle-ci, puis effectue un RET. C'est douloureusement lent, bien sûr, car il s'agit d'un code auto-modifiant, et le remplacement de l'adresse de retour provoque une prédiction erronée du cache correspondant : mais quand le processeur est incroyablement rapide, les interruptions sont si (relativement) rares que cela n'a pas d'importance.

Il y a beaucoup d'autres bidouilles de ce genre. Certains sont très intelligents. D'autres sont vraiment horribles, impliquant de méchantes bidouilles dans le noyau lui-même, FFS, et j'en aurais honte : sauf pour le simple fait qu'ils font leur travail, ils rendent les choses plus rapides.

Construire ce genre de collection de bidouilles bizarres et merveilleuses, sans aucune restriction, était très amusant. Pourtant, le résultat a donné à Amithlon des performances supérieures d'une ou deux générations de processeur à celles d'UAE. Ou peut-être même trois, dans un bon jour. Nous sommes maintenant en 2023, et nous avons, quoi, une douzaine de générations de processeurs de plus, et il n'y a pas vraiment eu de développement de logiciels 68k entre-temps. Donc, tout ce qu'Amithlon pouvait faire en 2002, UAE peut facilement le faire plus rapidement aujourd'hui, sans aucune des méchantes bidouilles, et avec au moins la possibilité d'augmenter la compatibilité.


[Retour en haut] / [Retour aux articles]