CPU 6809E à 1 MHz pour toute generation Thomson 8 bits ?

Les bouquins, les scans, les pdf ou les liens qui vont bien... ici c'est la bibliothèque.

Modérateurs : Papy.G, fneck, Carl

Bernouilli92
Messages : 1481
Inscription : 24 déc. 2021 09:46
Localisation : Région parisienne

Re: CPU 6809E à 1 MHz pour toute generation Thomson 8 bits ?

Message par Bernouilli92 »

Fool-DupleX a écrit : 10 juin 2024 07:57 On ne peut pas changer de processeur sans douleur. Un seul constructeur a vraiment eu le courage de faire table rase tous les 10 ans tout en ne décédant pas au passage, c'est Apple. Chaque nouvelle génération (6502, 68000, PowerPC, Intel, Arm) est absolument et totalement incompatible avec la précédente, mais Apple a eu l'intelligence de fournir des couches d'émulation pour faciliter la transition, sauf peut-être pour l'Apple ][ (je n'ai pas l'info).
Les couches d'émulation ont commencées quand le macintosh est passé du 68000 au powerpc.
L'apple II n'a pas été concerné par cela, de son coté, il a eu comme évolution l'apple IIgs qui a utilisé un processeur 16bits mais compatible 6502. Les jeux/applications apple ii tournaient aussi sur IIgs.
A noter toutefois que Apple a sorti une carte "Apple II" avec un processeur 6502 qui s'utilisait sur certains modèle de macintosh (gamme LC) et qui permettait d'utiliser des applications Apple II sur ces macintosh. On pouvait même y brancher un lecteur de disquette 5"1/4 et un joystick.
Avatar de l’utilisateur
Squeepty
Messages : 51
Inscription : 02 janv. 2024 01:15
Localisation : Californie/Toulouse
Contact :

Re: CPU 6809E à 1 MHz pour toute generation Thomson 8 bits ?

Message par Squeepty »

Et la frequence dans tout ca ? pas moyen d'augmenter (les performances) et garder la compatibilite ?
Squeepty - Retrouvez moi sur la Communauté Thomson_TO7_MO5 https://www.reddit.com/r/Thomson_TO7_MO5/
Avatar de l’utilisateur
sporniket
Messages : 425
Inscription : 22 mars 2022 20:23
Localisation : Pas trop loin au sud de Paris

Re: CPU 6809E à 1 MHz pour toute generation Thomson 8 bits ?

Message par sporniket »

Il me semble que le sujet du surcadencement dispose déjà dune discussion par ici, et j'en avait retenu que c'est en l'état quasi impossible, le gate array étant conçu pour 16mhz.

Il faudrait plutôt faire comme les cartes acceleratrices qu'on peut voir pour les Atari (exemple que je connais mieux) avec : un cpu compatible supportant des fréquences plus élevées (le 68b09 va jusqu'à 2 mhz si je ne dis pas de bêtises) ou soyons fou une re-création fpga ;un cache (tag ram + ram statique) pour que le cpu ne passe pas son temps à attendre le bus pour les accès ram , une eprom pour la rom pour la même raison, et un système logique (PALs, Gals, plds) pour orchestrer tout ça et communiquer avec le système hôte via l'empreinte du cpu d'origine . (ce que je décris est une reprise du descriptif qu'on pourrais faire du PAK68/3, carte acceleratrices permettant d'avoir un 68030 sur cadencé à la place du 68000). La difficulté étant que contrairement à la famille 68k, j'ai l'impression que que le bus 6809 ne supporte pas un état d'attente , à moins qu'on puisse jouer sur les signaux E et Q ? Donc le système de cache disposera d'un budget temps contraint.
__sam__
Messages : 8331
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: CPU 6809E à 1 MHz pour toute generation Thomson 8 bits ?

Message par __sam__ »

Il me semble que le sujet du surcadencement dispose déjà dune discussion par ici, et j'en avait retenu que c'est en l'état quasi impossible, le gate array étant conçu pour 16mhz.
Tout à fait, les thomson sont des machines totalement synchrones.

Les rams sont rafraichies pendant les phases inactives du cpu. Si tu veux accélérer ce dernier, il faut accélérer la gestion des rams. Or l'affichage vidéo se cale aussi sur le rafraichissement des rams pour récupérer les octets vidéos à afficher. Il faudra donc aussi reconcevoir la gestion vidéo. Pire: l'horloge CPU est dérivée de l'horloge 16Mhz qui sert à la vidéo. Donc changer la vitesse du cpu impliquerait aussi de changer l'horloge vidéo et donc reconcevoir le circuit vidéo. Or ces 16Mhz peuvent venir d'un crystal interne, mais aussi d'un VCO externe (circuit d'incrustation vidéo) qui ne peut pas être modifié.

Donc: accélérer la fréquence cpu nécessite de changer la gestion (ou la techno) des rams, la gestion vidéo.. C'est à dire l'essentiel des fonctions d'un micro-ordinateur. Il faudrait donc une machine bâtie sur une autre architecture, moins synchrone.
pour que le cpu ne passe pas son temps à attendre le bus pour les accès ram
Même pas, et ce serait même l'inverse. Il n'y a pas de wait-state dans la conception synchrone des Thomson. Le CPU n'attends jamais que la ram réponde. Il a sa tranche de temps impartie. Avec un CPU disposant de sa propre horloge, par exemple 2mhz, sera bloqué par le rafraichissement des ram qui utiliserait le bus un cycle sur deux, bref il tournera effectivement à 1mhz car le jeu d'instruction du 6809 utilise beaucoup les accès mémoires (pas d'opérations arithmétiques ou logiques sans usage de la ram).
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Fool-DupleX
Messages : 2523
Inscription : 06 avr. 2009 12:07

Re: CPU 6809E à 1 MHz pour toute generation Thomson 8 bits ?

Message par Fool-DupleX »

Explication parfaite, je n’aurais pas fait mieux. Au fait, où en sommes-nous de ce prometteur projet de 6809E à 2 MHz sur TO8 ? :mrgreen:
Daniel
Messages : 18019
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: CPU 6809E à 1 MHz pour toute generation Thomson 8 bits ?

Message par Daniel »

Nous l'avons répété souvent : Le seul moyen d'accélérer un TO8 est de remplacer le 6809E par un 6309E et de réécrire la ROM.

Ou à la limite, avec la ROM d'origine, écrire des programmes en mode 6309 sans utiliser les fonctions du moniteur, de l'extra-moniteur et du BASIC.
J'ai fait des essais d'accès SPI à une carte SD en mode 6309. Le gain en vitesse est de l'ordre de 30% grâce à la diminution du nombre de cycles des instructions, mais aussi et surtout grâce aux registres supplémentaires qui évitent des accès à la RAM.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 8331
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: CPU 6809E à 1 MHz pour toute generation Thomson 8 bits ?

Message par __sam__ »

Fool-DupleX a écrit : 12 juin 2024 08:38 Explication parfaite, je n’aurais pas fait mieux. Au fait, où en sommes-nous de ce prometteur projet de 6809E à 2 MHz sur TO8 ? :mrgreen:
Dans mon souvenir il y avait plusieurs problèmes:
  • description du circuit pour le "coco" incomplet / non 100% fonctionnel (ca n'est qu'une bidouille de coin de table pas finalisée, ou pas complètement détaillée sur le blog)
  • et surtout de gros problèmes pour générer une horloge stable à 2mhz. Il faut dire que faire un E et Q stables en quadrature c'est pas aussi simple que doubler la vitesse d'un quartz sur une carte fille qu'on met en piggy-bag sur le socket cpu.
J'ajoute aussi qu'il faudra aussi prévoir de gérer l'arbitration du bus qui n'était pas nécessaire dans la conception originale de la machine.

Le truc qui avait le plus de potentiel était un 6809 "soft-core" (émulation cpu logiciellement) avec shadow-ram sur carte locale comme cela s'est fait sur Z80. Mais outre le CPU, il faut s'occuper proprement de la gestion mémoire et détecter l'écriture/lecture dans les pages physiques 0,1,2 ou 3 (et pas les autres) qui sont susceptibles d'être affichées par le circuit vidéo pour ne pas utiliser que la mémoire "onboard" mais la mémoire native (shadow-ram). Il faudrait aussi détecter logiciellement les différents modes de commutation et mapping mémoire qui sont variables d'un thomson à l'autre. Cela revient à ajouter à l'émulation logicielle du CPU une émulation parallèle d'une partie du FPGA système.

C'est clairement un vrai projet compliqué avec plein de problèmes à découvrir et régler. Un truc de plusieurs mois qui peut n'aboutir nulle part ou ne pas être si prometteur qu'on ne l'espérais car une bonne part du temps cpu est occupé à lire/écrire les registres du moniteur ou du basic et/ou la pile qui sont en ram non-commutable (page 1) qui doit être en shadow-ram (puisque susceptible d'être utilisé par le circuit vidéo), c'est à dire synchronisée sur le bus à 1mhz dans le slot réservé au CPU, donc à la vitesse d'origine.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Fool-DupleX
Messages : 2523
Inscription : 06 avr. 2009 12:07

Re: CPU 6809E à 1 MHz pour toute generation Thomson 8 bits ?

Message par Fool-DupleX »

De bonnes raisons donc d'espérer la sortie prochaine d'un TO10. Franchement, cessons la fumisterie. :roll:
__sam__
Messages : 8331
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: CPU 6809E à 1 MHz pour toute generation Thomson 8 bits ?

Message par __sam__ »

Daniel a écrit : 12 juin 2024 09:10 J'ai fait des essais d'accès SPI à une carte SD en mode 6309. Le gain en vitesse est de l'ordre de 30% grâce à la diminution du nombre de cycles des instructions, mais aussi et surtout grâce aux registres supplémentaires qui évitent des accès à la RAM.
Tout à fait: ce qui pénalise le 6809 sont le nombre de cycles par instruction. Déjà c'est minimum 2 cycles y compris pour les opérations dites "inhérentes" (1 octet, sans variabilité), le fait de ne pas pouvoir faire d'arithmétique registre à registre (il faut passer par la ram -> compter 6 cycles pour pusher 8bit sur la piles, puis dépiler et exécuter l'operation -> +6/7 autres cycles, donc 12 cycles à minima pour ajouter ou faire le "ou exclusif" des deux accumulateurs 8 bits, pire encore pour du 16 bits). Et même si on ne fait pas d'arithmétique, par exemple si on veut échanger deux registres c'est 8 cycles, ce qui est une éternité pour un cpu à 1mhz. Au final, le nombre d'instructions par cycle d'horloge n'est pas exceptionnel sur le 6809. Les benchs ne le classent pas vraiment en tête des meilleurs 8bits pour l'exécution du même code en basic Microsoft:
  • 6809: Time ~52 secs
  • 6502: Time ~38 secs
  • Z80: Time ~ 27 secs
Le 6309 améliore tout cela tout en gardant une compatibilité de l'horloge et des signaux. Son seul défaut est le format de pile différent lors des interruptions, ce qui implique de ré-écrire tous les softs qui utilisent l'organisation de la pile lors des interruptions matérielles. Or c'est juste très fréquent sur Thomson ne serait-ce que parce que sur MO, l'appel au moniteur se fait par interruption logicielle.

Pour aller plus profond dans l'étude du jeu d'instruction du 6809, voici un article de recherche bien vintage (1981), en 3 parties de 50 pages:
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
hlide
Messages : 3952
Inscription : 29 nov. 2017 10:23
Localisation : Yvelines

Re: CPU 6809E à 1 MHz pour toute generation Thomson 8 bits ?

Message par hlide »

Suite à de multiples déboires avec l'outil de développement de Teensy 4.1, je n'ai même pas attaqué l'émulation du 6809 comme je l'avais envisagé un certain temps. De plus, contrairement au Z80, je connais assez mal ce processeur sur la gestion des cycles pour chaque instruction (quel signal doit passer au front montant ou descendant, etc.). Je n'ai pas trouvé bonheur sur ce point sur la documentation que j'ai.

Si on tire un trait sur une compatibilité lié au respect des cycles dans le logiciel et que l'on offre l'accélération maximum en écrivant soi-même le logiciel (ou en réadaptant l'existant), on peut améliorer plusieurs aspects :

1) il ne faut pas juste un processeur mais aussi de la RAM interne embarquée qui remplace (ou serve de cache). Supposons que l'on puisse mettre la totalité des ROM et des RAM dans cette RAM interne : pas d'accès au bus. Tout accès de lecture en ROM et RAM peut se faire directement cette RAM interne sans se synchroniser à l'horloge externe. Tout accès direct à de la mémoire associée à un périphérique externe est synchronisé avec l'horloge externe le temps nécessaire de l'accès au bus. Cela veut dire que plusieurs instructions peuvent s'enchainer dans le cycle d'horloge externe aussi longtemps qu'un accès externe n'est pas demandé. Le cas d'écriture dépend de la nature de la mémoire accédée. Si c'est une RAM en accès non partagé par le CPU alors c'est direct, sans passage par le bus. Si c'est partagé avec d'autres composants, il faut se synchroniser lors de l'écriture tout en faisant une copie dans la RAM interne.

2) Dans le cas d'un TO8 par exemple, la DRAM est entièrement partagée entre le CPU et la vidéo de ce que j'ai compris (avec quelques nuances mais bon on traite au pire cas). Du coup, la RAM va servir de cache et non de remplacement. Les accès en lecture seront directs, sans "délai", sans synchronisation : les instructions qui n'écrivent pas dans la RAM ou dans "registres" de périphériques s'enchainent à toute vitesse.

3) On devrait quand même conserver les cycles d'origines pour garder une compatibilité avec les logicielles récalcitrants. On peut marquer programmatiquement les zones de mémoires (ou banques) faisant l'objet ou pas d'accélération, en adaptant le logiciel qui fait usage de l'accélération.

4) Avec Teensy 4.1, dans le cas du MZ-80 K qui fait de la "neige" sur l'écran lorsque le Z80 accède la VRAM durant l'affichage d'une ligne écran, j'avais rajouté la possibilité d'appeler une instruction à la synchro verticale qui va blitter un bloc d'octet à raison de 2 cycles (au lieu des 16 cycles via LDI) par octet : j'ai un affichage nickel des trames à 60Hz. On peut envisager cette forme d'accélération pour la vidéo pour d'autres machines. Autre fait : pouvoir charger un fichier binaire MZF depuis un SD pour le sauvegarder sur cassette; ça m'a permit de recréer une cassette BASIC avec le lecteur d'origine (je ne retrouvais plus la cassette d'origine) avec une facilité déconcertante.

Encore une fois, si vous voulez juste rendre la machine plus rapide en gardant une compatibilité à 100% de la logithèque, c'est que vous ne connaissez pas la nature des machines 8-bit de cette époque : c'est un leurre compte tenu des aspects techniques choisis à l'époque.
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3131
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: CPU 6809E à 1 MHz pour toute generation Thomson 8 bits ?

Message par Papy.G »

Fool-DupleX a écrit : 10 juin 2024 07:57Un seul constructeur… …sauf peut-être pour l'Apple ][ (je n'ai pas l'info).
L'Apple // n'était pas considéré comme la même plateforme que le Macintosh, ces deux gammes ont coexisté.
Bernouilli92 a écrit : 10 juin 2024 08:44A noter toutefois que Apple a sorti une carte "Apple II" avec un processeur 6502 qui s'utilisait sur certains modèle de macintosh (gamme LC) et qui permettait d'utiliser des applications Apple II sur ces macintosh. On pouvait même y brancher un lecteur de disquette 5"1/4 et un joystick.
Ce n'est pas une carte d'upgrade, mais de cross-compatibilité, où le logiciel tourne en parallèle comme sur un système quasiment autonome, il y a eu des cartes DOS-compatibles aussi, en 486DX-2 sur port LC-PDS (Processor Direct Slot), des fabricants tiers en ont proposé avec des processeurs plus récents en format PCI.


En dehors d'augmenter la fréquence du processeur, on peut aussi faire appel à des versions plus récentes, dont les cycles sont optimisées, mais il faut pour cela que le processeur original offre un peu de marge (genre, remplacement d'un 8032 à 12 cycles horloge par instruction, par une version X2, X3, ou X4), et l'on peut conserver le reste de l'architecture sur un Minitel, par exemple, et les logiciels seront peu impactés car l'on dispose d'un mode "original" activable (quelques instructions ne retrouvent pas exactement le timing original), mais cela reste une architecture de machine où le dispositif d'affichage est très indépendant du Processeur principal (Jusqu'à avoir des sources de cadencement affichage/processeur totalement différenciées), peu répandue chez les ordinateurs de l'époque.

Pour revenir au sujet, il me semble qu'il y a eu des machines où le processeur a été délesté de la tâche de gérer ou devoir attendre la vidéo d'une version à l'autre, c'est un gain important sans toucher à la fréquence du processeur.

J'ai eu l'occasion d'expérimenter un peu des associations Fréquence/Multiplicateur, sur une machine plus récente, en faisant des benchmarks et de l'utilisation quotidienne, pour constater que l'amélioration obtenue par l'augmentation de la fréquence d'un processeur peut être grandement atténuée s'il doit attendre après le bus système.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Sappas
Messages : 772
Inscription : 02 oct. 2022 18:11

Re: CPU 6809E à 1 MHz pour toute generation Thomson 8 bits ?

Message par Sappas »

Pour l'apple II et son 6502 et 65C02 Apple a effectivement construit une carte d'extension pour Macintosh LC avec la puce le Mega //
Ceci pour conserver la compatibilité du marché éducation et vendre du Macintosh
Personnellement je trouve cette solution assez pourrie dans sa réalisation et son rendu.
Il faudrait que je relance ce truc pour me parfaire l'idée
Répondre