# Motorola 6809

Le 6809 est un microprocesseur 8 bits (avec certaines caractéristiques 16 bits) de Motorola. Il fut introduit vers 1977–1978. Ce microprocesseur fut une avancée majeure par rapport à ses deux prédécesseurs, le 6800 de Motorola et son quasi-clone, le 6502 de MOS Technology. Parmi les systèmes à utiliser le 6809 on retrouve la gamme de micro-ordinateurs Thomson, le TRS-80 Color Computer, la console Vectrex, et des machines d'arcade du début des années 1980, ainsi que divers appareils tels que l'échantillonneur Fairlight CMI-III.
Le 6809 était, par son design, le premier microprocesseur pour lequel il était possible d'écrire du code indépendant de sa position en mémoire (adressage relatif), et complètement ré-entrant d'une manière simple, sans utiliser d'artifice de programmation. C'était aussi l'un des premiers microprocesseurs à implémenter une instruction matérielle de multiplication ; il dispose en outre d'une unité arithmétique de 16 bits complète et d'un système d'interruptions particulièrement rapide.

## Description

Parmi les améliorations significatives introduites par le 6809, on trouve une paire d'accumulateurs à 8 bits (A et B) qui pouvaient être combinés en un seul registre D de 16 bits. Il y avait aussi deux registres d'index à 16 bits (X et Y) et deux pointeurs de pile à 16 bits (S - système - et U - utilisateur). Les registres d'index et de pile permettaient des modes d'adressage très avancés. L'adressage relatif du compteur ordinal permettait de créer facilement du code indépendant de sa position en mémoire - voir (en) Position independent code - alors que le pointeur de pile utilisateur facilitait l'écriture de code ré-entrant.
Par comparaison, le 6502 ne disposait que d'un seul accumulateur, de 2 registres d'index à 8 bits et d'un seul pointeur de pile à 8 bits.
Le 6809 était compatible avec le 6800 au niveau du code source, même si le 6800 avait 78 instructions et le 6809, seulement 59. Certaines instructions furent remplacées par d'autres qui étaient plus générales (l'assembleur se chargeait de les traduire) ; d'autres furent même remplacées par des modes d'adressage. Le jeu d'instructions et l'ensemble des registres étaient très orthogonaux, ce qui rendait la programmation en langage assembleur assez plaisante, contrairement au cauchemar de cas spéciaux qui était typique de la plupart des autres microprocesseurs de l'époque, comme les 6800 ou 6502.
On pouvait aussi compter sur une des premières instructions de multiplication de l'époque, sur l'arithmétique à 16 bits, et sur un système d'interruptions particulièrement rapide. Par ailleurs, le 6809 était fortement optimisé et atteignait jusqu'à cinq fois la vitesse des processeurs de la série 6800. Tout comme le 6800, il possédait l'instruction « Halt and Catch Fire (HCF) » (« arrête et prends feu »), qui servait à tester le bus.
La performance accrue du 6809 reflétait le fait que, contrairement à beaucoup de processeurs de l'époque, le séquenceur était câblé (comme pour les processeurs RISC apparus vers les années 1990) plutôt que microprogrammé (comme c'est en général le cas sur un processeur CISC). Ceci réduisait le nombre de cycles d'horloge du processeur nécessaires à l'exécution des instructions. Par exemple, l'instruction ADDA 63 prenait 3 cycles : deux pour l'obtention de l'instruction (fetch) et un pour effectuer l'addition.
Sur le Z80 de Zilog, qui était probablement le principal concurrent du 6809, l'instruction ADD A,63 prenait 7 cycles. En conséquence, le Z80 avait besoin d'une vitesse d'horloge d'au moins deux fois celle du 6809 pour en égaler la performance. De plus, les processeurs à 8 bits de Motorola utilisaient un cycle d'horloge par accès à la mémoire, plutôt que l'horloge d'état interne de la plupart des autres microprocesseurs de ce temps. Une seule opération de lecture de la mémoire sur un Z80, par exemple, nécessitait plusieurs cycles d'horloge, contre un seul pour un 6800 ou un 6809.
Le 6809 avait un générateur d'horloge interne qui n'avait besoin que d'un cristal externe. Le 6809E avait besoin d'un générateur d'horloge externe. Il y avait des variantes comme le 68A09(E) et le 68B09(E), où la lettre du milieu indiquait la vitesse d'horloge nominale du processeur.

## Histoire

Le 6809 de Motorola fut au départ produit en versions 1 MHz, 1,5 MHz (68A09) et 2 MHz (68B09). Des versions plus rapides furent produites par la suite par Hitachi (Hitachi 6309), allant jusqu'à 3,5 MHz. Laissant peu de place pour l'amélioration, le 6809 marque la fin de l'évolution des processeurs 8 bits de Motorola, l'idée de Motorola étant que le futur des produits 8 bits soit basé sur une version du 68000 avec un bus de données sur 8 bits, le 68008. Une version micro-contrôleur avec un jeu d'instructions légèrement modifié, le 68HC11, a été produite jusque dans les années 2010.
Le 6809 est parfois considéré comme le « précurseur spirituel » de la famille des 68000 de Motorola, bien que la conception du 68000 ait déjà commencé au moment où le 6809 fut commercialisé. Les projets 6809 et 68000 se déroulèrent en partie en parallèle et ont des architectures assez différentes, ainsi que des principes d'implémentation radicalement différents. Bien que leur design partage une certaine philosophie (par exemple une orthogonalité des concepts considérable ainsi que des modes d'adressage flexibles), une ressemblance dans leur assembleur et une similarité dans les mnémoniques des opcodes, le 6809 est un dérivé du 6800 alors que la conception du 68000 était totalement nouvelle.
Le 6309 de Hitachi était une version améliorée du 6809 avec des registres supplémentaires et des instructions additionnelles, incluant le déplacement de blocs de mémoire, de nouvelles opérations de multiplication, une instruction de division matérielle, le tout permettant des calculs sur 32 bits. Ce microprocesseur, à fréquence égale, apportait en mode natif - il disposait aussi d'un mode émulant le 6809 - environ 30% de performance en plus. Il était réalisé en technologie CMOS (pas encore très répandue à l’époque) qui apportait un net avantage en consommation, alors que le 6809 était en technologie NMOS. Il fut utilisé dans des mise à jours officieuses du Tandy Color Computer 3 et une version de OS-9 fut écrite, afin de profiter des améliorations apportées par le 6309: NitrOS-9.
Motorola a scindé sa division micro-processeurs en 2004 ; la division a changé de nom pour s'appeler Freescale, et a été par la suite vendue à NXP. À l'automne 2016, Qualcomm annonce l'acquisition de NXP Semiconductors ; l'acquisition n'a pas été finalisée et en juillet 2018, dans un contexte de guerre commerciale entre les États-Unis et la Chine, les autorités de la concurrence chinoises n'ayant pas accepté l'acquisition de NXP Semiconductors avant l'ultimatum de Qualcomm, celle-ci est annulée.
Ni Motorola, ni Hitachi ne produisent plus le 6809 ou ses dérivés. On peut programmer un FPGA avec un core 6809 écrit en VHDL, et obtenir ainsi un micro-processeur pouvant tourner jusqu'à 40 MHz.

## Utilisation

Le 6809 était utilisé dans l'ordinateur biprocesseur SuperPET de Commodore. Le 68A09 était utilisé dans la console de jeux vidéo vectorielle Vectrex. Le 6809E était quant à lui présent dans l'Ordinateur Couleur (CoCo) de Tandy et dans le clone britannique du CoCo, le Dragon 32/64. Il était également au cœur de toute la série de micro-ordinateurs familiaux de Thomson (TO7, TO7/70, TO8, TO9, TO9+, MO5 et MO6).
La compagnie de développement de logiciels Microware a développé le système d'exploitation OS-9 (à ne pas confondre avec Mac OS 9) sur le 6809, pour ensuite le porter vers la série 68000.
Motorola et Hitachi ne produisent plus de 6809 ni de dérivés. Il faut cependant mentionner que ce fut un des plus puissants processeurs à 8 bits d'usage général. Quelque peu en avance sur son temps, il offrait beaucoup de caractéristiques novatrices dont plusieurs ont été copiées dans d'autres processeurs par la suite.