Processeur Hitachi 6309 : test sur MO5

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Daniel
Messages : 10126
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Processeur Hitachi 6309 : test sur MO5

Message par Daniel » 12 sept. 2016 13:24

Depuis longtemps je voulais écrire un programme pour le processeur Hitachi HD63C09EP, installé sur un MO5, pour évaluer le gain obtenu sur des programmes réels. Je l'ai fait aujourd'hui.

Comme exemple j'ai pris SDPLAY 2016 : http://dcmoto.free.fr/programmes/sdplay-2016/index.html

Ce programme joue de la musique en streaming à partir d'une carte SD. La boucle de lecture d'un octet est "déroulée" pour optimiser la vitesse, mais le basculement du bit d'horloge nécessite deux LDB, soit quatre cycles. En utilisant alternativement les registres B et E, on économise ces deux LDB à chaque bit, on gagne ainsi 24 cycles par octet. Le gain de vitesse est environ 12%, sans gros changement du programme et en laissant le 6309 en mode émulation.

Si on passe le 6309 en mode natif, on gagne en plus un cycle sur chaque instruction, soit 4 cycles par bit et 32 cycles par octet. Dans ce cas le gain de vitesse est environ 33% par rapport au 6809, ce qui permet de passer de 5,6kHZ à plus de 8kHz pour le streaming audio.

Le qualité audio est incontestablement bien meilleure.

Code : Tout sélectionner

*------------------------------------------------------
* LECTURE D'UN OCTET AVEC SDMO
* Le registre B n'est pas preserve
* Valeur de l'octet dans le registre A en sortie
*------------------------------------------------------
RBYTEMO
  LDB   #$7F                                    (2) 
  LDE   #$36                                    (3) 
* premier bit
  STB   <$C2          clock high                (3/4)
  CMPB  <$C0          PA b7 (bit lu) -> carry   (3/4)
  STE   <$C2          clock low                 (4/5) 
  ROLA                C (bit lu) -> b0 reg A    (1/2)
* deuxieme bit
  STB   <$C2          clock high                (3/4)
  CMPB  <$C0          PA b7 (bit lu) -> carry   (3/4)
  STE   <$C2          clock low                 (4/5) 
  ROLA                C (bit lu) -> b0 reg A    (1/2)
* troisieme bit
  STB   <$C2          clock high                (3/4)
  CMPB  <$C0          PA b7 (bit lu) -> carry   (3/4)
  STE   <$C2          clock low                 (4/5) 
  ROLA                C (bit lu) -> b0 reg A    (1/2)
* quatrieme bit
  STB   <$C2          clock high                (3/4)
  CMPB  <$C0          PA b7 (bit lu) -> carry   (3/4)
  STE   <$C2          clock low                 (4/5) 
  ROLA                C (bit lu) -> b0 reg A    (1/2)
* cinquieme bit
  STB   <$C2          clock high                (3/4)
  CMPB  <$C0          PA b7 (bit lu) -> carry   (3/4)
  STE   <$C2          clock low                 (4/5) 
  ROLA                C (bit lu) -> b0 reg A    (1/2)
* sixieme bit
  STB   <$C2          clock high                (3/4)
  CMPB  <$C0          PA b7 (bit lu) -> carry   (3/4)
  STE   <$C2          clock low                 (4/5) 
  ROLA                C (bit lu) -> b0 reg A    (1/2)
* septieme bit
  STB   <$C2          clock high                (3/4)
  CMPB  <$C0          PA b7 (bit lu) -> carry   (3/4)
  STE   <$C2          clock low                 (4/5) 
  ROLA                C (bit lu) -> b0 reg A    (1/2)
* huitieme bit
  STB   <$C2          clock high                (3/4)
  CMPB  <$C0          PA b7 (bit lu) -> carry   (3/4)
  STE   <$C2          clock low                 (4/5) 
  ROLA                C (bit lu) -> b0 reg A    (1/2)
*
  RTS                 retour (octet dans A)     (4/5)
Daniel
L'obstacle augmente mon ardeur.

__sam__
Messages : 3921
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Processeur Hitachi 6309 : test sur MO5

Message par __sam__ » 12 sept. 2016 13:53

Je crois que tu peux faire encore un poil plus rapide (cout du rts): Utiliser A/B pour l'horloge (1 cycle par bit de gagné), et utiliser W via un ROLW (2/3, 1 cycle perdu par bit) pour récupérer 16bits (2 échantillons) dans W. A la réflexion: hum c'est marginal comme gain mais récupérer 16 bits par contre peut avoir un intérêt.

Par ailleurs j'ai regardé avec un LDW #2, TFM X+,Y (Y=$A7C2) histoire de faire la bascule clock high/low rapidement, et bien non c'est pas rapide. Le TFM coute 6+3*W, donc 12 cycles pour mettre #$7F/ #$36. C'est bien plus lent que STB/STE.
Samuel.
Amiga 500+GVP530(MMU/FPU) (hs), A1200(030@50mhz/fpu/64mb/cf 8go), R-Pi, TO9, TO8D, TO8.
New Teo 1.8.4 8)

Daniel
Messages : 10126
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Processeur Hitachi 6309 : test sur MO5

Message par Daniel » 12 sept. 2016 14:30

Je suis sûr qu'avec les nouveaux registres et les nouvelles instructions du 6309 on peut trouver de nombreuses optimisations, il y a tout un monde à explorer. La question reste l'audience que pourront avoir ces développements : combien de collectionneurs vont sortir le fer à souder pour remplacer le 6809 de leur machine de collection ?

Comme écrit dans ma signature, l'obstacle augmente mon ardeur, il en fallait pour tester "en vrai" et ça fait plaisir d'y arriver. Par contre l'ardeur retombera vite si personne n'utilise le programme. Pour essayer de motiver les foules, je compte toujours ajouter l'émulation 6309 à dcmoto, mais c'est long à écrire et surtout très difficile à tester dans tous les détails. En lisant les sources de Mame j'ai déjà noté un certain nombre d'erreurs ou d'imprécisions, mais ma version est infiniment plus médiocre. Il y a encore beaucoup de travail...
Daniel
L'obstacle augmente mon ardeur.

__sam__
Messages : 3921
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Processeur Hitachi 6309 : test sur MO5

Message par __sam__ » 12 sept. 2016 14:37

C'est vrai que la communauté des thomsonistes actifs est très très faible. Début 2000 il y avait beaucoup beaucoup plus de monde. Je ne sais pas où ils sont tous passés.
Samuel.
Amiga 500+GVP530(MMU/FPU) (hs), A1200(030@50mhz/fpu/64mb/cf 8go), R-Pi, TO9, TO8D, TO8.
New Teo 1.8.4 8)

jester
Messages : 2149
Enregistré le : 01 janv. 2009 23:16

Re: Processeur Hitachi 6309 : test sur MO5

Message par jester » 12 sept. 2016 15:11

Pas l'impression qu'il y ait beaucoup d'activités de manière générale sur les machines françaises... on est pourtant pas tous décédés, dans 40ans je ne dis pas !

Daniel
Messages : 10126
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Processeur Hitachi 6309 : test sur MO5

Message par Daniel » 12 sept. 2016 15:38

Rien n'empêche de suivre l'exemple des communautés dynamiques. Par exemple : http://users.axess.com/twilight/sock/4mhzproj.html
Mon MO5 a exactement le même processeur :D
Daniel
L'obstacle augmente mon ardeur.

Zaxxon
Messages : 295
Enregistré le : 22 mai 2013 01:10
Localisation : Livry Gargan (93) / Paris (75)

Re: Processeur Hitachi 6309 : test sur MO5

Message par Zaxxon » 12 sept. 2016 15:49

Bonjour,

Malheureusement la communauté autour des ordinateurs francophones se réduit d'années en années :(

Pour en revenir au 6309, ça semble intéressant. :)

Par contre quand est-il de la compatibilité 6809e, et des outils de développement?

Une chose à laquelle je pensais à un moment (peu orthodoxe certes), serait d'implémenter un émulateur 6809e , sur un micro contrôleur 32 bits genre pic32, à la place du cpu (sur un pcb). On pourrait avoir un gain de vitesse interne, tout en restant synchro avec les timings des autres composants (il y a quelques pics32 5v tolérant)
Thomas,

__sam__
Messages : 3921
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Processeur Hitachi 6309 : test sur MO5

Message par __sam__ » 12 sept. 2016 16:41

La communauté des Coco est bien plus active que celle des Thomsonistes. Je pense que c'est lié à l'Angleterre où l'on trouve une certaine fascination pour les ordis et du coup un certain nombre de musées bien vivants sur les ordinateurs comme celui-ci à Betchley-park ou cet autre à Nottingham ou encore ici à Cambridge.
Samuel.
Amiga 500+GVP530(MMU/FPU) (hs), A1200(030@50mhz/fpu/64mb/cf 8go), R-Pi, TO9, TO8D, TO8.
New Teo 1.8.4 8)

Daniel
Messages : 10126
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Processeur Hitachi 6309 : test sur MO5

Message par Daniel » 12 sept. 2016 16:58

J'ai ce 6309 dans un MO5 depuis plusieurs années. On l'oublie complètement. Par défaut il démarre en mode émulation 6809 et réagit exactement de la même façon que le 6809 tant qu'il n'y a pas d'instruction invalide. J'ai utilisé le MO5 avec des logiciels commerciaux et mes propres programmes sans jamais noter de comportement anormal.

Des anomalies pourraient arriver, probablement, avec des cassettes MO5 de jeux protégés Infogrames, qui utilisent des instructions non documentées, par exemple le code opération $01. Mais il y a bien longtemps que je n'utilise plus les cassettes pour charger les programmes, je n'ai pas eu ce cas.

Sinon, un autre avantage du 63C09 est sa très faible consommation électrique. Il chauffe moins et sollicite moins l'alimentation.

Pour les outils de développement, mon assembleur préféré sur PC est A09. Il a une option -oH63 que j'ai activée pour permettre l'assemblage avec les nouvelles instructions. Pour le désassemblage il y a également des outils compatibles 6309, mais de toutes façons je compte programmer un désassembleur et l'intégrer à dcmoto.

@sam : Au musée de Cambridge il y a un MO6. C'est plutôt rare en Angleterre !
Daniel
L'obstacle augmente mon ardeur.

Fool-DupleX
Messages : 978
Enregistré le : 06 avr. 2009 12:07

Re: Processeur Hitachi 6309 : test sur MO5

Message par Fool-DupleX » 12 sept. 2016 21:31

Oui, Jacques et moi-même en avons aussi un dans nos machines, moi dans mon MO5 et Jacques dans son TO9+. Il y a des choses vraiment interessantes sur ce processeur. Parmi les choses interessantes, c'est un 16/32 bits, il a l'instruction de division entière et des instructions de transfert de bloc mémoire rapide (1 cycle par octet) et encore pas mal d'autres trucs sympas.

Jacques a adapté OS-9 en ce sens, et c'est vrai que le TO9+ avec un 6309 et OS-9 est assez bluffant, c'est une belle machine.

__sam__
Messages : 3921
Enregistré le : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Processeur Hitachi 6309 : test sur MO5

Message par __sam__ » 12 sept. 2016 21:56

J'avais pensé que les opérations de transfert de bits directment en mémoire seraient utiles (LDBT, STBT), mais elles prennent finalement pas mal de cycles (6+). Au final je n'arrive pas à optimiser la boucle de lecture des bits que ce soit en cycles ou nombre d'opérations. Je pense que ton code est le plus efficace possible.
Samuel.
Amiga 500+GVP530(MMU/FPU) (hs), A1200(030@50mhz/fpu/64mb/cf 8go), R-Pi, TO9, TO8D, TO8.
New Teo 1.8.4 8)

Daniel
Messages : 10126
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Processeur Hitachi 6309 : test sur MO5

Message par Daniel » 13 sept. 2016 08:34

Si des programmeurs cherchent du travail, il y a un beau sujet à proposer : optimiser les ROM de tous les ordinateurs Thomson pour le 6309. Après on pourra lancer une campagne de remplacement des processeurs :wink:

De mon côté je compte développer une EPROM optimisée pour le contrôleur CS91-282. Elle passera en mode natif si elle détecte le 6309, sinon elle restera compatible 6809, pour être utilisable avec l'un ou l'autre processeur.
Daniel
L'obstacle augmente mon ardeur.

Avatar du membre
jb_jb_fr
Messages : 295
Enregistré le : 29 mars 2010 10:36
Localisation : Essonne (91)
Contact :

Re: Processeur Hitachi 6309 : test sur MO5

Message par jb_jb_fr » 13 sept. 2016 10:36

Daniel

Ton idée est alléchante, mais il y tout de même un petit probleme.

Certe on aura un code nickel, qui ira plus vite, et on pourra peut-être gagner la place en ROM
Mais tes émulateurs ne marcheront plus. Car tu te base sur des adresses mémoire pour simuler le clavier, la video, les K7, etc....
La meilleurs preuve : OS9 ne tourne pas sur tes émulateurs.

Donc il ne va pas falloir que changer les ROM, il va falloir aussi améliorer tes émulateurs.
Donc y'a du boulot aussi pour toi.

Jacques

Daniel
Messages : 10126
Enregistré le : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Processeur Hitachi 6309 : test sur MO5

Message par Daniel » 13 sept. 2016 16:53

Il ne faut pas avoir d'inquiétude pour l'émulation. L'émulateur s'adapte facilement à la ROM.
Il faut certainement plusieurs mois pour modifier la ROM et moins d'une demi-heure pour l'ajouter à dcmoto.
Daniel
L'obstacle augmente mon ardeur.

jasz
Messages : 318
Enregistré le : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: Fichiers images de cassettes au format .lep

Message par jasz » 18 avr. 2017 22:43

Daniel a écrit :La protection de la cassette MO5 de La Mine aux Diamants utilise l'instruction invalide $01 du processeur 6809. Dans mon MO5 de test j'ai remplacé depuis trois ans le processeur Motorola 6809 par un Hitachi HD63C09EP (3 MHz). Pour le 6309 l'instruction $01 est valide et en l'occurrence elle plante le programme de chargement. Ce matin j'ai remplacé le 63C09 par un MC68B09EP (8 MHz). Il consomme 50 mA de plus que le 63C09, mais il charge La Mine aux Diamants sans difficulté 8). Lien
Juste une parenthèse pour une petite question. Quel est l'intérêt de poser un MC68B09EP à la place d'un 6809 classique? (outre le fait de sa vitesse d'horloge qui normalement devrait exécuter les instructions plus rapidement)
Modifié en dernier par jasz le 21 avr. 2017 07:37, modifié 1 fois.

Répondre