DCMOTO - Emulateur universel Thomson 8 bits : Forum - Machines et périphériques - Des performances du TO16 PC
Auteur Message
Fool-DupleX
Visiteur
Date : 19/04/2005 12h44
Ces temps, j'ai ressorti un TO16-PC de mon stock pour jouer avec. En fait je decouvre les joies de bidouiller du 8088 (je n'avais jamais trouve cela gratifiant jusqu'a present, mais ca m'amuse follement d'essayer de redorer le blason du TO16 - Et y'a du boulot). D'anciens articles SVM donnent, par rapport au PC-AT2 de reference, une performance de 79%, contre 29% pour le TO9. Tests criticables diront certains, vu que l'architecture est differente, mais bon. Ca donne le sentiment qu'un TO16 est tres grossierement 2.5 fois plus rapide qu'un Thomson 8 bits. Ce fut une premiere surprise pour moi, je le croyais quand meme plus veloce.

J'ai installe une bonne vieille suite de developpement : Borland Pascal 7, compose de Turbo-Pascal, Turbo-Assembleur, Turbo-Debugger et Turbo-Profiler.

Hier soir, j'ai ecrit un code pour afficher un plasma en CGA (je confirme que c'est tres laid). Le code est en Pascal, mais est calque sur un autre code que j'avais ecrit en assembleur pour MO5 (yoann connait). Resultat consternant : c'est super-lent et ca saccade (mo5: super-fluide). Pour une machine qui a une horloge 9.54 fois plus elevee, ca m'a refroidi.

Alors bon, je vais reecrire la chose en assembleur d'ici la semaine prochaine, histoire de determiner si le TO16 est vraiment mauvais ou bien si c'est le compilateur turbo-pascal qui nous a menti durant tant d'annees, en nous annoncant des performances de ouf.

Fool
en haut - en bas
Yoann
Visiteur
Date : 19/04/2005 13h03
Je pense que si tu ecris un code tres similaire en 8088 (et tu dois avoir plus de mnemoniques utiles sur le 8088 pour faire de chouettes calculs), ca sera plus rapide que sur MO5, faut pas exagerer quand meme ;)

La seule chose que je ne me rappel plus, c'est l'adresse du mode CGA ... je ne sais plus si c'est par plan (comme le mode 320x200x4 du thomson) ou si c'est un truc genre 1 octets et 2 points consecutifs. Si c'est le cas, ca devrait etre rapide a adresser (plus facilement en tout cas que le mode TO7 pour la gestion des couleurs)
en haut - en bas
Yoann
Visiteur
Date : 19/04/2005 14h00
Citation :
Borland Pascal 7


Il me semble avoir vu un compartif a l'epoque entre Borland C++ et Borland Pascal 7 (que j'ai d'ailleur beaucoup utilise il fu un temps). Ils decortiquaient certaines choses du programme assembleur genere, par exemple le fait de mettre un registre a zero etait fait en lui allouant 0 plutot que d'utiliser la mnemonique pour effacer le registre. Le compilateur C++ le faisait par contre.

Donc ils avaient trouve des trucs qui etaient mal optimises apparement. Il me semble avoir vu ca dans un SVM.
en haut - en bas
Fool-DupleX
Visiteur
Date : 19/04/2005 14h12
CGA : en fait c'est les deux. non seulement il y a 2 bits par pixel, mais en plus les lignes sont entrelacees. Et je ne parle pas du mode special 16 couleurs du TO16 qui necessite deux plans de bits type CGA separes.

Je viens de jeter un oeil au jeu d'instruction du 8088 et je commence a comprendre ce qui cloche : charger 8 bits depuis la memoire dans un registre necessite entre 20 et 25 cycles contre 3 a 5 sur le 6809. Hallucinant non ?

Comme je ne fais que du calcul 8 bits dans mon algo, et que le 8088 possede 8 registres 8 bits, je pense que je devrais pouvoir tout faire uniquement avec des registres au lieu de variables en memoire; Cependant, ca ne resoud pas le probleme de l'affichage : 25 cycles multiplie par 16 Ko, ca fait a peine du 23 images/s a 9.54 MHz et encore, en ne comptant que les ecritures en memoire (pas les boucles, pas l'algo de calcul...). Un veritable scandale, ce processeur est une tortue en puissance.

Fool
en haut - en bas
Fool-DupleX
Visiteur
Date : 19/04/2005 14h22
hum, en fait je me suis avance un peu. Il semblerait que ca tourne plutot autour de 5-10 cycles. Si quelqu'un trouve le jeu d'instruction officiel avec le nb de cycle par instruction sur cette babasse, je suis preneur. Je n'ai trouve que ceux des procs plus recent jusqu'a present (genre 386).

Fool
en haut - en bas
Yoann
Visiteur
Date : 19/04/2005 14h33
J'ai trouver ca qui a l'air assez detaille sauf en ce qui concerne les cycles :

http://titan.etf.bg.ac.yu/~gvozden/mips/download/i8088_microprocessor.pdf


(mais je l'ai parcouru tres rapidement)
en haut - en bas
Fool-DupleX
Visiteur
Date : 19/04/2005 14h36
ben oui mais c'est justement que les cycles qui m'interessent, le jeu d'instruction en soit, je le connais deja depuis belle lurette... merci tout de meme.

Fool
en haut - en bas
Yoann
Visiteur
Date : 19/04/2005 14h43
J'ai telecharge des datasheet d'autres sites, mais ce sont tous les meme (comme ci dessus). Si tu trouves, fait moi signe, ca me brancherait bien de me remettre un peu au 8088 aussi
en haut - en bas
Fool-DupleX
Visiteur
Date : 19/04/2005 15h08
T'es d'accord que c'est quand meme fou de ne pas trouver cette doc, non ?

Je vais regarder au musee, on doit surement avoir ca dans la bibliotheque.

Pour le TO-16 c'est clair que ca a relativement peu d'interet, mais je me disais qu'une petite demo avec son mode 16 couleurs, histoire de montrer qu'il pouvait quand meme afficher 2-3 jolies choses... enfin voila quoi.

Fool
en haut - en bas
Yoann
Visiteur
Date : 19/04/2005 15h12
J'ai un TO16 en france, mais ca m'ennuie un peu de l'amener jusqu'a HK pour faire une petite demo. Alors, pourrais-tu faire un emulateur de TO-16 a la place ?
en haut - en bas
Fool-DupleX
Visiteur
Date : 19/04/2005 15h20
Ah non, le specialiste des emus ici c'est ------> Daniel

Fool
en haut - en bas
Daniel
Visiteur
Date : 19/04/2005 15h37
Le TO16 sur PC, ce n'est srement pas trs difficile, toutes les instructions doivent tre plus ou moins compatibles Pentium 4, et les modes video pas trop eloigns
Malheureusement j'ai un autre projet beaucoup plus ambitieux en cours

Daniel
en haut - en bas
Fool-DupleX
Visiteur
Date : 20/04/2005 11h27
J'ai trouve quelque chose ici :

http://www.deec.uc.pt/~jlobo/tc/opcode_i.html

Interessant de constater qu'un AND mem,reg prend entre 29 et 36 cycles sur un 8088 et seulement ... 3 sur un Pentium.
Egalement interessant de noter que AND reg,mem prend deux fois moins de cycles que AND mem,reg !!!

36 cycles... tu verses quand tu songes aux malheureux 5 ou 6 cycles max pour la meme operation sur un 6809

Fool
en haut - en bas
Fool-DupleX
Visiteur
Date : 22/04/2005 09h18
C'est bon .. j'ai recupere la spec officielle. Y'a des trucs super (pas) rigolos : par exemple, si on stocke a une adresse impaire en memoire, il faut rajouter 4 cycles !

Fool
en haut - en bas
Daniel
Visiteur
Date : 22/04/2005 10h01
Si, c'est super rigolo : si Yoann convertit Chinese Stack pour TO16, il devra faire deux versions : une pour chargement une adresse paire, et une autre pour adresse impaire
Et j'espre pour lui qu'il y a plus de cycles que sur le TO8 entre deux VBL

(ne cherchez pas comprendre : c'est de l'humour d'informaticien)

Daniel
en haut - en bas