Pourquoi ce comparatif ?
Depuis un moment, on entend de plus en plus parler des FPGA dont on nous vante régulièrement les avantages notamment en ce qui concerne les timings et la latence.
Beaucoup de choses sont affirmées mais concrètement on ne voit pratiquement rien permettant de se faire sa propre idée. J’ai donc pris le taureau par les cornes et je suis allé chercher les problèmes sous WinUae. Et quoi de mieux que les démos pour cela ? :D
J’ai donc pris le temps ( plus d’un an ) de visionner intégralement environ 400 démos/intros non WHDLoad AGA uniquement de la période 1993/1996. Oui c’est long et ennuyeux mais c’était absolument nécessaire pour avoir un véritable échantillon représentatif. De ce dernier, quelques dizaines de démos me semblaient problématiques. C’est là que sont intervenus Donamiga ( tests sur hard ), Kathleen ( tests sur hard et FPGA ) et JeanFred64 ( tests FPGA ) pour déméler le vrai du faux.
Nous nous attarderons aujourd’hui uniquement sur l’aspect compatibilité pour cette première partie.
FP quoi ?
Pour vous expliquer ce qu’est un FPGA, je vais bêtement reprendre l’explication donnée par Wikipédia tout en vous fournissant ce lien car je ne suis pas un expert en la matière et ce n’est pas non plus le but premier de ce comparatif : en gros il s’agit d’un circuit intégré dont les portes logiques peuvent être reprogrammées à l’aide d’un langage de description matériel tels que VHDL et Verilog qui sont les plus communs.
Depuis quelques temps est apparu sur le marché, le Mister qui commence à devenir très populaire grâce à son core Amiga. C’est donc plus particulièrement à ce dernier que nous alors nous intéresser aujourd’hui lors de nos essais.
A l’origine, lors de la création du post sur le forum je souhaitais sortir directement depuis WinUae ( en 15Khz par l’intermédiaire d’un soft ) sur un CRT à l’aide d’une prise VGA analogique/Peritel maison et faire la comparaison pour ne pas avoir à me soucier des zones hors écran normales sur un LCD. Je pensais trouver des volontaires assez rapidement or ce ne fût hélas pas le cas. En attendant de trouver des personnes intéressées, j’ai donc commencé à tester quelques démos sur LCD. Vous devinez la suite, je ne me suis pas arrêté ( enfin presque pas ). Heureusement, au bout d’un moment, trois volontaires ( Donamiga, Kathleen et JeanFred64 ) se sont manifestés. Les choses sérieuses ont alors commencées. En voici la synthèse.
Protocole de test :
Hardware ( Kathleen et DonAmiga )
Nous y sommes allés quasiment au plus simple : A1200 stock + 4Mo de Fast + CF IDE. Cet équipement nous servira de référence pour constater ce qui doit être ou pas dans les démos. Il ne faut pas faire abstraction du fait que l’émulateur est souvent ” accusé ” à tort de bugger alors que les problèmes sont également présents sur hard dans la démo d’origine dans les mêmes conditions.
FPGA ( JeanFred64, Kathleen )
Le FPGA ” Mister ” a été principalement utilisé par JeanFred64 et Kathleen. Cette dernière a également effectué quelques tests sur le FPGA ” Sidi “. Les derniers cores minimig en date des tests ont été utilisés dans une configuration A1200 68020 + 4Mo de Fast + CF IDE. L’option DCache sera désactivée puisque non disponible sur un EC020 ou un 020.
WinUae ( Zarnal )
Concernant WinUae, j’ai utilisé la version 4.1 ( qui était la dernière en date lorsque j’ai commencé ). J’ai poursuivi avec cette même version tout au long de mes tests pour ne pas les biaiser puisque quelques améliorations notables sont apparues avec les versions suivantes. Et vous vous imaginez bien que je ne vais pas refaire l’intégralité des tests à chaque version qui sort. Pensez à mon neurone. :D
De plus, une seule et unique configuration a été utilisée ( A1200 68EC020 en Full CE + 4 Mo + CFHD en IDE ). J’ai désactivé la rom UAE, source de nombreux problèmes.
Les soucis avec l’émulation A1200
C’est le point le plus important de ce dossier : essayer de comprendre pourquoi l’émulation d’un Amiga 1200 est si difficile contrairement à celle des A500/A600/ A2000 qui elle à contrario s’approche de la ” perfection ” ( comportement très très proche voir similaire de la machine d’origine ). La source du problème est en fait le nerf de la guerre lors de la conception de tout émulateur : la documentation technique. Je vais essayer de vulgariser au maximum bien que cela ne soit pas difficile à comprendre quoi qu’il en soit. Je me suis basé sur les explications de Toni Wilen glanées au fil du temps. Nous mettrons pour l’instant le FPGA de coté.
On lit souvent que WinUae est trop rapide ou trop lent, mais de quoi parle t’on au juste ? Eh bien tout simplement de l’émulation du microprocesseur ( le 68EC020+ ). Je vais rester dans le cadre du mode ” Cycle Exact ” qui est censé être le mode le plus précis possible ( s’approchant au mieux du comportement réel d’une vraie machine mais qui n’a rien à voir avec la compatibilité obtenue ). Je conçois que ce terme n’est peut être pas des plus adaptés pour le CPU du 1200. En très gros, un CPU dispose d’un certain nombre de ” cycles ” qui sont répartis d’une certaine manière entre les éléments de la machine suivant ce que vous demandez à la machine de faire. En assembleur, diverses instructions sont utilisées ( move, lea par exemple qui seront par la suite transformées en langage machine à la compilation, je vous invite à regarder un code source en assembleur si vous souhaitez voir comment cela se présente ) et dont le coût en cycles est généralement connu. Donc, à ce stade, il n’y aura quasiment aucun souci. Ces mêmes instructions s’enchainent les unes à la suite des autres ( de la première on passe à la seconde et ainsi de suite ). Sur le 68000 des A500/A600 il ne se passe strictement rien entre le passage à ces 2 instructions. Malheureusement ce n’est pas du tout le cas sur le 68EC020 d’un Amiga 1200. Des choses se passent. Et c’est bien là que le bas blesse : la documentation technique officielle du CPU ne donne pas d’informations suffisamment précises et détaillées sur ce qu’il se passe exactement. Il faut donc y aller à tâtons au risque de généralement tomber à coté de la plaque. Il est certain que l’on ne peut pas deviner par magie et de manière fiable ce qu’il se passe vraiment et le coût en cycles qui en découle. Impossible donc de créer un algorithme correct et vraiment fiable. C’est tout sauf précis.
La conséquence inéluctable est un ” déréglage ” de l’ émulation au niveau des vitesses. Résultat : interprétation trop rapide ou trop lente. Des évènements se produisent trop tôt ou trop tard. Des exemples illustrés seront beaucoup plus explicites qu’un interminable blabla je pense :
Exemple 1 : Apex-Dotsy
Je considère cette démo comme un très bon exemple car une pétouille apparait le temps d’une trame ( durant 1/50 de s ), voyons donc ce qu’il se passe :
Amiga 1200 ( hard)
WinUae 4.1 :
Dans un monde idéal, si les vitesses ” d’interprétation ” étaient bonnes les deux images devraient être identiques ( elles le seraient presque totalement si nous étions sur une démo A500/A600 :D ), ce qui n’est manifestement pas le cas ici. WinUae va trop vite, on arrive déja à distinguer ” Dotsy ” qui apparait en bas à droite et on constate que les deux ronds ” presents ” n’ont pas le bon espacement tout comme les deux ” e ” entre autres choses. Bref l’image n’est pas similaire. Là, dans cet exemple nous ne sommes pas dans le cadre de quelque chose de génant ( 1 image sur 50 ), le glitch est bien présent sur hard mais est représenté de manière légèrement décalée sous WinUae. Le vrai bug est mal reproduit ( au mauvais moment ). Vous venez de découvrir le principe de précision qui fait tant défaut pour l’émulation du 020 et donc du 1200 en général. Mais rassurez vous, la plupart du temps ces décalages sont négligeables et vous ne vous rendrez compte de rien MAIS…
Parfois ce décalage est beaucoup trop important en aval ou en amont et provoque des choses qui ne devraient pas arriver. Et c’est précisément ce que nous rechercherons dans ce dossier. Je vais prendre pour exemple la démo Freezers-Symptom :
On se rend très vite compte du problème. Un glitch apparait en haut lors de la descente de l’objet.
Je n’ai malheureusement pas de vidéo sur hard mais ce bitonio est absent sur une vraie machine stock.
Pire encore, les plantages, la démo Trsi-Cubic Dreams présentée plus bas en est la parfaite illustration.
Entrons dans le vif du sujet.
Alors ? Ces fameux FPGA sont-ils plus performants qu’une émulation soft en pratique ? C’est ce que nous allons tenter de découvrir au travers de quelques démos s’étant révélées problématiques sous WinUae car je ne vais pas vous noyer avec des démos à n’en plus finir. Si cela vous intéresse quand même je vous invite à consulter la chaine Youtube de Kathleen ainsi que celle de JeanFred64 et la mienne où vous retrouverez l’ensemble de nos tests respectifs. Prenez le temps de visionner les démos sur chaque support, c’est assez instructif. Notez que seules les démos posants des problèmes ont été testées sur Mister/Hard et non pas l’intégralité de ce que j’ai personnellement essayé sous émulation. Il n’est nullement question de privilégier tel ou tel support car certains savent que je suis un fervent défenseur de l’émulation soft mais uniquement de constater ce qu’il se passe réellement dans les faits en se contentant de lancer tout bêtement ces démos et de tordre le cou au passage sur certaines idées reçues ( émulation et FPGA ).
Gods-Future
A1200 :
FPGA Mister :
WinUae 4.1 :
Pour cette première démo, les résultats sont très clairs. Sur l’Amiga 1200, hormis un glitch sur la scène du tore consécutif à la présence de Fast elle va jusqu’au bout sans broncher. Pour le Mister ainsi que pour WinUae, c’est un magistral plantage après la scène du vélo. Match nul.
Anadune-Collage
A1200 :
Mister FPGA :
WinUae 4.1
Alors pour cette démo, le Mister semble avoir un peu plus de mal que WinUae. Nous pouvons le constater lors de la première scène avec la deuxième fenêtre qui a un sacré problème sur le Mister. Un peu plus tard durant la scène des cercles un nouveau bug fait son apparition. Ce second problème est commun aux deux supports. Sur hard, tout va bien. Match nul, mais avantage WinUae.
Les Shadocks-Intro Ga
A1200 :
Mister FPGA :
WinUae 4.1 :
Ici le Mister a clairement un souci concernant l’affichage de certains crédits. Les lettres sont remplacées par un rectangle blanc. Tout comme sur hard, WinUae s’en sort sans heurts. Gagnant : WinUae 4.1.
Subspace-Ubergirl
A1200 :
Mister FPGA :
WinUae 4.1 :
Alors cette démo est vraiment intrigante. Sur hard les crédits disposent en arrière plan d’un damier bien défini qui scrolle. Sur Mister ou WinUae il est remplacé par de joyeux parasites. Match nul.
Ramsès-Benoit
A1200 :
Mister FPGA :
WinUae 4.1 :
Le résultat est sans équivoque : WinUae refuse de la démarrer alors que le Mister lui y parvient. Cependant il demeure un glitch contitué de barres noires durant la démo. Elles disparaissent en activant le Dcache du Mister mais la démo semble alors tourner au ralenti. Sous WinUae avec une astuce nous pouvons également la démarrer en conservant strictement la même configuration mais nous nous retrouvons avec le même glitch ( les barres ) que sous Mister. Mais là nous sortons du protocole dans les deux cas :D. Gagnant : Mister.
Passion-Nitte
A1200 :
Mister FPGA
WinUae 4.1
Si vous observez attentivement la fin de la séquence ” Nitte Field ” à 1:55 une image ” fantôme ” qui n’est pas présente sur l’Amiga 1200 de cette même scène réapparait à la transition. C’est également le cas avec le Mister à 3:32. De surcroit, il semble qu’il y ait un bug d’affichage sur la scène elle même sur ce dernier. Peut être un filtre je ne saurais trop dire. Match nul avantage WinUae.
Zomo-Speed
A1200
Mister FPGA
WinUae 4.1
Cette démo me parait en effet très étrange dans son comportement sous WinUae. En effet, l’invite du cli réapparait très brièvement après 2 transitions. C’est tellement rapide que lors de l’upload sur Youtube le problème n’apparait plus. J’ai quand même mis la vidéo même si elle ne démontre pas le souci. Tout passe comme un timbre à la poste avec le Mister. N’apparait pas sur hard. Gagnant : Mister
TRSI-Cubic Dreams 3
A1200
Mister FPGA
WinUae 4.1
Pour cette dernière démo, je vais être assez bref le résultat étant éloquent. En un mot, c’est le plantage sous Mister et WinUae. Sur hard, tout va bien et jusqu’au bout. Match nul. A noter que WinUae ne plante qu’à la transition de la seconde scène alors que le Mister lui plante après le loader. Match nul.
Conclusion :
A n’en point douter, c’est un débat qui continuera à faire rage entre les partisans de l’émulation soft et ceux du FPGA. Comme je l’ai déjà précisé, cette première partie n’est ni à charge ni à décharge vis à vis de telle ou telle méthode. A vous de juger. On peut toutefois remarquer que l’on est bien loin du 99,99/100 % de compatibilité vantés ici et là pour l’Amiga 1200. Alors oui je suis allé chercher la petite bête mais dois-je rappeler que la documentation technique est la même pour tous et ce quel que soit le support. Croyez moi ou non, cela a son importance.
Ceci étant écrit, nous nous attaquerons plus tard aux tests de latence lors de la seconde partie tout en espérant que ce premier petit dossier aura répondu à certaines de vos interrogations.
Zarnal.
Dossier – WinUae VS Mister, le concret. Partie 1
Extrait de l’article :
L’article complet est disponible ici : https://www.amigafrance.com/dossier-emulateur-vs-fpga-le-concret-partie-1/
A1200 Commodore mutant " FrankenAmiga" + 68040 + 8MO + SD 8go - A1200 ESCOM. HD 20MO. Mon meilleur et seul A500 : WinUae. CPC 6128-CPC 464.