MOS 6510

MOS 6510

Le MOS Technology 6510 est un microprocesseur 8 bits étroitement dérivé du célèbre MOS 6502. Développé chez MOS Technology à la charnière des années 1970 et 1980, il ne constitue pas une nouvelle architecture : il reprend l’essentiel du fonctionnement du 6502 et lui ajoute principalement un port d’entrées/sorties programmable intégré au processeur.Cette évolution paraît modeste. Elle va pourtant prendre une importance particulière dans la machine qui rendra le 6510 célèbre : le Commodore 64. Dans cet ordinateur, quelques lignes du port intégré participent à la configuration de la mémoire et permettent de résoudre un problème assez élégant : comment faire cohabiter 64 Ko de RAM, plusieurs ROM et les circuits d’entrées/sorties alors que le processeur ne peut adresser que 64 Ko à la fois ?


Un 6502 légèrement adapté

Le 6510 conserve l’architecture générale du MOS 6502. Il travaille sur des données de 8 bits et possède un bus d’adresses de 16 bits. Avec 16 bits pour former une adresse, il peut distinguer 65 536 emplacements, de $0000 à $FFFF, soit un espace d’adressage total de 64 Ko.

Le programmeur retrouve également les principaux registres du 6502 : l’accumulateur A, les registres d’index X et Y, le pointeur de pile, le compteur ordinal et le registre d’état. Le jeu d’instructions reste lui aussi très proche de celui du 6502. Le passage du 6502 au 6510 ne bouleverse donc pas la manière de programmer le processeur.

La différence essentielle se situe à l’interface avec le reste de la machine. Le 6510 possède un port d’entrées/sorties directement intégré au circuit. Sur le Commodore 64, six lignes de ce port sont utilisées. Certaines servent à la gestion de la mémoire, d’autres au lecteur de cassette Commodore.


Deux adresses qui ne sont pas de la RAM ordinaire

Ce port intégré est commandé par deux registres situés aux toutes premières adresses de l’espace du processeur. L’adresse $0000 contient le registre de direction : chaque bit indique si la ligne correspondante doit fonctionner comme une entrée ou comme une sortie. L’adresse $0001 contient le registre du port proprement dit et permet de lire ou de modifier l’état de ces lignes.

Ces deux adresses ont donc un statut particulier. Lorsqu’un programme accède à $0000 ou $0001, il ne lit pas simplement deux octets de RAM : il communique avec une fonction intégrée au 6510.

Dans le Commodore 64, les trois premiers bits du port portent les noms LORAM, HIRAM et CHAREN. Ils interviennent dans la configuration des zones mémoire $A000-$BFFF, $E000-$FFFF et $D000-$DFFF. Les trois lignes suivantes sont liées au lecteur de cassette : écriture des données, détection de l’état du bouton et commande du moteur.


Le paradoxe des 64 Ko

L’intérêt de ce mécanisme devient évident lorsqu’on examine la mémoire du Commodore 64. Comme son nom l’indique, la machine possède 64 Ko de RAM. Or 64 Ko correspondent déjà à la totalité de l’espace que le 6510 peut adresser avec ses 16 lignes d’adresse.

Mais le C64 contient également environ 20 Ko de ROM : 8 Ko pour l’interpréteur BASIC, 8 Ko pour le KERNAL et 4 Ko pour le générateur de caractères. À cela s’ajoutent les registres des circuits vidéo, sonore et d’entrées/sorties.

Il est donc impossible de donner simultanément une adresse distincte à toute la RAM, à toutes les ROM et à tous les périphériques dans un espace limité à 65 536 adresses. Commodore résout le problème en permettant à certaines zones de l’espace d’adressage de présenter des ressources différentes selon la configuration de la machine.

Le 6510 n’adresse donc jamais plus de 64 Ko à un instant donné. Il ne faut pas parler ici d’une extension de son espace d’adressage. Ce qui change est la ressource à laquelle certaines adresses donnent accès.


RAM, ROM ou périphérique : qui répond à l’adresse ?

La zone comprise entre $A000 et $BFFF fournit un bon exemple. Dans la configuration habituelle du Commodore 64, elle permet au processeur de lire la ROM contenant l’interpréteur BASIC. Pourtant, de la RAM existe également dans cette partie de l’espace d’adressage. Lorsque la ROM BASIC est masquée, cette RAM peut devenir accessible au processeur.

Le même principe s’applique entre $E000 et $FFFF, où se trouve normalement la ROM du KERNAL. Là encore, la configuration peut permettre d’accéder à la RAM correspondante.

La zone $D000-$DFFF est encore plus intéressante. Selon la configuration, elle peut donner accès aux registres des circuits d’entrées/sorties, à la ROM du générateur de caractères ou à la RAM.

Une même adresse dans l’espace d’adressage du 6510 peut donc donner accès à des ressources différentes. Cela ne signifie pas que plusieurs composants occupent une même « adresse physique ». L’adresse est placée sur le bus, puis la logique électronique de la machine détermine quel composant doit répondre.


Le rôle essentiel de la PLA

Il faut ici distinguer le rôle du 6510 de celui de la logique de décodage du Commodore 64. Les bits LORAM, HIRAM et CHAREN du port du processeur participent au choix de la configuration mémoire, mais le 6510 ne réalise pas seul la sélection des différents composants.

Le C64 utilise notamment une PLA, pour Programmable Logic Array. Ce circuit reçoit plusieurs informations concernant l’adresse demandée et l’état du système, puis produit les signaux de sélection permettant d’activer la RAM, une ROM ou un périphérique.

Le manuel de maintenance du Commodore 64 identifie cette PLA sous la référence U17. C’est elle qui participe notamment au décodage de la ROM BASIC en $A000-$BFFF, de la ROM KERNAL en $E000-$FFFF, de la ROM de caractères en $D000-$DFFF ainsi que des différentes zones d’entrées/sorties.

On peut donc résumer le mécanisme ainsi : le port du 6510 fournit une partie des informations de configuration, tandis que la PLA effectue le décodage nécessaire pour déterminer quel composant devient visible.


Un exemple concret : masquer le BASIC

Imaginons qu’un programme n’ait plus besoin de l’interpréteur BASIC. Dans la configuration normale, les adresses $A000 à $BFFF donnent accès à sa ROM. Le programme peut modifier la configuration mémoire à l’aide du port du 6510 afin que cette ROM ne soit plus sélectionnée.

Lorsqu’il accède ensuite à une adresse de cette plage, ce n’est plus la ROM BASIC qui répond : la RAM située dans cet espace devient accessible. Le programme peut alors exploiter cette mémoire pour ses propres données ou son propre code.

Ce procédé est particulièrement intéressant pour les programmes en langage machine qui cherchent à utiliser autant de RAM que possible. Une partie de la mémoire apparemment occupée par les ROM peut ainsi être récupérée dès lors que leurs fonctions ne sont plus nécessaires.


Le 6510 n’est pas seul maître du bus

L’architecture du Commodore 64 comporte une autre particularité importante : le processeur principal partage l’accès à la mémoire avec le circuit vidéo VIC-II. Celui-ci doit régulièrement lire les données nécessaires à la construction de l’image affichée à l’écran.

Lorsque le VIC-II a besoin d’effectuer certaines lectures, il peut prendre temporairement le contrôle des bus du système. Le signal BA, pour Bus Available, prévient le processeur quelques cycles auparavant. Le 6510 doit alors attendre que le circuit vidéo ait terminé ses accès mémoire avant de poursuivre normalement son travail.

Cette coopération montre pourquoi la fréquence du processeur ne suffit pas à décrire les performances du Commodore 64. Le fonctionnement réel de la machine dépend des échanges permanents entre le 6510, le VIC-II, la mémoire et les autres circuits spécialisés.


Une fréquence proche de 1 MHz

Dans le Commodore 64, le 6510 fonctionne à une fréquence voisine de 1 MHz. Elle est d’environ 0,985 MHz sur les machines PAL et 1,023 MHz sur les machines NTSC, les différences étant liées à l’organisation des circuits vidéo et aux standards de télévision auxquels les différentes versions de la machine doivent se synchroniser.

Comparer directement cette fréquence à celle d’un processeur moderne n’aurait toutefois guère de sens. Les architectures, les jeux d’instructions, l’organisation de la mémoire et la répartition des tâches entre composants sont profondément différents.


Le processeur au sein d’une architecture spécialisée

Le 6510 constitue le processeur généraliste du Commodore 64, mais il travaille avec plusieurs circuits spécialisés qui prennent en charge des tâches précises. Cette organisation permet de ne pas faire reposer toutes les fonctions de la machine sur le processeur central.

  • Le VIC-II assure la génération de l’affichage et dispose notamment de fonctions graphiques et de sprites matériels.
  • Le SID prend en charge la synthèse sonore.
  • Les deux CIA 6526 assurent différentes fonctions d’entrées/sorties, de temporisation et de communication avec les périphériques.
  • La PLA participe au décodage des adresses et à la sélection des différentes ressources mémoire.
  • Le 6510 exécute les programmes et fournit notamment, par son port intégré, certains des signaux utilisés pour configurer la mémoire.

Le Commodore 64 est donc moins un ordinateur organisé autour d’un processeur particulièrement puissant qu’un système dans lequel plusieurs composants spécialisés coopèrent autour d’une architecture soigneusement optimisée.


Caractéristiques principales

  • Constructeur : MOS Technology, alors propriété de Commodore
  • Période de développement : 1979-1980
  • Architecture : 8 bits
  • Dérivé du : MOS Technology 6502
  • Bus d’adresses : 16 bits
  • Espace d’adressage : 65 536 octets, soit 64 Ko
  • Particularité principale : port d’entrées/sorties intégré
  • Lignes utilisées sur le Commodore 64 : 6
  • Registre de direction du port : $0000
  • Registre du port : $0001
  • Signaux de configuration mémoire : LORAM, HIRAM et CHAREN
  • Fréquence dans le Commodore 64 PAL : environ 0,985 MHz
  • Fréquence dans le Commodore 64 NTSC : environ 1,023 MHz

Une petite évolution pour une machine devenue immense

Pris isolément, le MOS 6510 ne représente pas une rupture technologique majeure. Son architecture reste celle du 6502 et sa principale nouveauté tient à l’intégration de quelques lignes d’entrées/sorties. Mais cette modification répond exactement aux contraintes d’une machine que Commodore cherche à rendre à la fois performante, compacte et économique.

Son intérêt apparaît surtout lorsqu’on le replace dans l’architecture complète du Commodore 64. Le port intégré fournit à la logique de la machine les informations nécessaires pour modifier la carte mémoire, permettant de faire cohabiter 64 Ko de RAM, plusieurs ROM et les circuits d’entrées/sorties dans un espace que le processeur ne peut jamais voir au-delà de 64 Ko.

Le 6510 illustre ainsi une idée importante de l’histoire de l’informatique : une évolution technique n’a pas besoin d’être spectaculaire pour être déterminante. Dans le cas du Commodore 64, quelques lignes d’E/S ajoutées à une architecture déjà éprouvée deviennent l’un des rouages d’un système qui sera diffusé à des millions d’exemplaires.


Photo de couverture par Konstantin Lanzet – CPU collection, CC BY 3.0, Wikimedia Commons.

Publications similaires

  • Intel 8008

    Le passage au microprocesseur 8 bits L’Intel 8008 est un microprocesseur 8 bits commercialisé en avril 1972. Il constitue le deuxième microprocesseur d’Intel, quelques mois après le 4004 de 1971. Alors que le 4004, conçu à l’origine pour des calculatrices, travaille sur des données de 4 bits, le 8008 adopte une architecture 8 bits mieux…

  • |

    Zilog Z80

    Commercialisé en 1976, le Zilog Z80 est l’un des microprocesseurs 8 bits les plus importants de l’histoire de la micro-informatique. Conçu comme une évolution compatible avec l’Intel 8080, il enrichit considérablement son architecture tout en permettant de conserver une grande partie des logiciels déjà écrits pour le processeur d’Intel.Le Z80 va ainsi se retrouver au…

  • Intel 4004

    L’Intel 4004, commercialisé en novembre 1971, est généralement considéré comme le premier microprocesseur commercial disponible sur une seule puce. Son importance ne vient pas de sa puissance. Le 4004 fonctionne sur seulement 4 bits et contient environ 2 300 transistors. Pourtant, il introduit une idée qui va transformer l’électronique et l’informatique : les fonctions essentielles…

  • Motorola 6809

    Le Motorola 6809 est un microprocesseur 8 bits introduit en 1978 par Motorola. Il appartient à la famille du 6800, mais pousse beaucoup plus loin les possibilités d’une architecture 8 bits.Son bus de données reste large de 8 bits, mais le processeur dispose de plusieurs registres 16 bits, de deux pointeurs de pile et de…

  • Intel 8080

      Le processeur qui rend le micro-ordinateur réellement “pratique” L’Intel 8080 est un microprocesseur 8 bits introduit en avril 1974. Il succède au 8008 et corrige ses limites majeures (adressage, brochage, performances). Grâce à son bus d’adresses 16 bits et son boîtier 40 broches, le 8080 rend réaliste la conception de micro-ordinateurs généralistes, avec une…

  • |

    MOS 6502

    Le MOS Technology 6502 est un microprocesseur 8 bits présenté en 1975. Son importance dans l’histoire de l’informatique ne tient pas seulement à ses caractéristiques techniques. À une époque où un microprocesseur peut encore coûter plusieurs centaines de dollars, MOS Technology propose le 6502 pour environ 25 dollars. Cette rupture de prix contribue à rendre…