- 6502
-
MOS Technology 6502
Le MOS Technology 6502 est un microprocesseur 8 bits conçu par MOS Technology en 1975. Quand il fut présenté, il était de loin le processeur le plus économique sur le marché, à environ 1/6 du prix, concurrençant de plus grandes compagnies telles que Motorola ou Intel. Il était néanmoins plus rapide que la plupart d'entre eux, et avec le Zilog Z80, brilla dans une série de projets d'ordinateurs qui furent par la suite la source de la révolution d'ordinateurs personnels des années 1980. La conception du 6502 était à l'origine sous-traitée par Rockwell et Synertek et plus tard fut autorisée à un certain nombre de compagnies, il est encore fabriqué pour des systèmes embarqués.
Sommaire
Histoire et utilisation
Le 6502 a été conçu principalement par l'équipe qui avait développé le Motorola 6800. Après avoir quitté Motorola en bloc, ses ingénieurs ont rapidement sorti le 6501, d'une conception complètement nouvelle mais dont le brochage restait néanmoins compatible avec le 6800. Motorola entama des poursuites judiciaires immédiatement, et bien qu'aujourd'hui l'affaire aurait été déboutée, les dommages que MOS encourut furent suffisants pour que la société accepte de cesser de produire le 6501.
Le résultat fut le 6502, un modèle « juridiquement inattaquable ». Il différait du précédent par une simple réorganisation du brochage, ce qui le rendait inutilisable sur une carte mère 6800. Motorola abandonna alors ses poursuites. Cependant, ce changement handicapa MOS à obtenir de nouveaux développeurs, jusqu'à ce que l'ingénieur Chuck Peddle conçoive le KIM-1, un ordinateur monocarte. À la grande surprise de ses concepteurs, le KIM-1 fut énormément vendu à des amateurs et des bricoleurs aussi bien que sur le marché initialement prévu des ingénieurs.
Le 6502 sortit sur le marché en septembre 1975 à 25 $, alors que les 6800 et Intel 8008 se vendaient pour 179 $. Tout d'abord, beaucoup de personnes pensèrent qu'il s'agissait d'une blague, mais Motorola et Intel baissèrent subitement leurs prix à 79 $. Au lieu de l'effet escompté, cela légitima le 6502 dont les ventes décollèrent.
Le 6502 possédait une particularité qui le rendait particulièrement adapté à l'utilisation dans un ordinateur personnel : l'architecture interne garantissait que le processeur n'accéderait pas au bus pendant une période de son cycle d'exécution,. Le système vidéo mettait à profit cette latence pour accéder à la mémoire écran, sans devoir recourir à un arbitreur externe. L'efficacité des systèmes était ainsi accrue jusqu'à 25 %. En revanche, le 6502 ne disposait pas du compteur 8 bits de rafraîchissement DRAM comme son concurrent le Z80.
Une des premières utilisations « publiques » fut la console de jeu vidéo Atari 2600. Les 2600 utilisaient un dérivé du 6502 appelé 6507, qui avait moins de broches et ne pouvait adresser que 8 Ko de mémoire. Des millions d'exemplaires furent vendus sous cette forme. Les 6502 furent utilisés ensuite dans la famille des Apple II, puis dans les divers ordinateurs personnels de Commodore (séries PET et CBM), ACORN (modèle ATOM), Atari, le BBC Micro, l'Oric, et un nombre énorme d'autres systèmes que l'histoire a désormais oublié. Un descendant du 6502, le 6510, a équipé les Commodore 64.
Dans la NES, les 6502 utilisés avaient été modifiés. Cette série, qui fut produite seulement pour Nintendo, pris le nom de « 2A03/2A07 ». Les 2A03/2A07 n'avaient pas le mode BCD des 6502 mais 23 registres supplémentaires memory-mapped pour la génération du son, l'affichage des sprites et la gestion des manettes.
La conception optimisée des 6502 inspira également les principaux concepteurs du processeur ARM RISC, et on peut ainsi dire qu'ils sont les successeurs de cette (famille) de processeurs puisque son esprit vit encore dans la conception de l'ARM, utilisée dans plusieurs ordinateurs de bureau aussi bien que dans une quantité de systèmes portatifs et systèmes embarqués, et vendu comme une boîte noire pour des systèmes totalement intégrés.
Description
Le 6502 est un processeur 8 bits avec un bus d'adressage à 16 bits. La logique interne fonctionne à la même vitesse que la fréquence externe. Cette fréquence d'horloge apparemment lente, typiquement 1 MHz, donnait cependant des performances comparables à celles d'autres processeurs à l'horloge quatre fois plus véloce. Le 6502 est équipé d'une logique interne câblée et pipelinée, alors que les autres CPU de cette époque étaient microprogrammés et avaient des vitesses internes finalement comparables aux 6502 (l'horloge interne du Z80 par exemple, se trouvait divisée par quatre). Bien que ceci puisse ressembler à une « astuce », les périphériques pouvaient tourner moins vite, ce qui abaissait le coût global du système, un facteur crucial sur le marché très concurrentiel des consoles de jeux et des ordinateurs personnels.
À la différence de l'Intel 8080 et des microprocesseurs semblables, le 6502 possède très peu de registres. À cette époque la mémoire était plus rapide que les processeurs, il était plus sensé de vouloir optimiser l'accès mémoire plutôt que d'augmenter le nombre de registres. À l'intérieur on trouve un accumulateur de 8 bits (A), deux registres d'index de 8 bits (X et Y), un registre statut de 8 bits (SR), un pointeur de pile de 8 bits (SP) et un compteur de programme de 16 bits (PC).L'accès logiciel à la pile se fait par l'intermédiaire de quatre instructions en mode d'adressage implicite type push ou pop de l'accumulateur ou du registre de statut du processeur.
La puce utilise le registre d'index et de pile efficacement dans plusieurs modes d'adressage, y compris un mode raccourci ou en page zéro qui accède aux adresses allant de 0 à 255 avec un seul octet d'extension (pas besoin d'en charger un deuxième comme pour une adresse longue) - le code spécifique 6502 recourt beaucoup à l'adressage en page zéro pour remplacer les registres inexistants. Pour des raisons évidentes, dans la plupart des micro-ordinateurs organisés autour du 6502 avec un système d'exploitation, l'OS lui-même faisait massivement appel à la page zéro, laissant au mieux une poignée d'octets inutilisés.
Les modes d'adressage incluent également un mode implicite (instructions de 1 octet), absolu (3 octets), relatif (2 octets), accumulateur (1), indirect X et Y (2) et immédiat (2) :
- Le mode absolu constitue un mode d'utilisation général ;
- Le mode relatif sert aux instructions de branchement conditionnels qui peuvent déplacer le PC jusqu'à 128 octets vers l'avant ou vers l'arrière ;
- Le mode accumulateur utilise l'accumulateur comme adresse réelle, et n'a besoin d'aucun opérande ;
- Le mode immédiat exploite un opérande littéral d'un octet ;
- Les modes indirects facilitent le traitement matriciel et les boucles. Avec le mode indirect Y, le registre de 8 bits Y s'ajoute à une base de 16 bits située dans la mémoire en page zéro (dont un octet de l'instruction donne l'adresse). Les registres X et Y de 8 bits fonctionnent comme pointeurs plutôt qu'en tant d'index normaux. L'incrémentation de X ou de Y, nécessaire à parcourir séquentiellement le tableau prend deux cycles, le tableau pouvant être situé n'importe où dans l'espace d'adressage de 16 bits. C'est l'un des points où le 6502 innove le plus par rapport au Motorola 6800. Un regard trop rapide sur les spécifications du 6502, laissant croire qu'il n'y a que deux registres d'index de 8 bits, ne reflète pas toute la puissance du processeur.
Voir l'article Hello world (en anglais) pour un exemple simple mais caractéristique du langage assembleur du 6502
Des caractéristiques floues
Les 6502s sont connus pour recéler une quantité d'instructions non documentées qui changent d'une version à une autre du processeur. Le décodeur d'instruction du 6502 est réalisé dans une logique câblée dont le fonctionnement n'est garanti que pour les opcodes valides. Les 32 opcodes non documentés déclenchent plusieurs instructions simultanément, conduisant à des résultats inattendus.
L'instruction de branchement indirect du 6502, JMP (xxxx), est boguée. Si l'adresse, en hexadécimal, est xxFF, le processeur saute non pas à l'adresse stockée à (xxFF) et (xxFF+1), mais plutôt à (xxFF) et (xx00). Ni les 6510 ni les versions NMOS postérieures du 6502 telles que le 8502 et le 2A03 n'ont corrigé ce bogue. Bill Mensch, du Western Design Center, fut le premier à le rectifier dans le dérivé CMOS 65C02 ; le 65C816, un successeur 16 bits du 65C02, en est également exempt.
Remarques sur le 6502
- En 1984 dans le film de science-fiction Terminator avec Arnold Schwarzenegger, le public a un moment voit une scène à travers l'œil/caméra du robot T-800 Model-101, où un fragment de programme en code assembleur du 6502 défile en bas de l'écran. Le code réel montré est la sortie écran d'un programme de checksum pour Apple II publié dans le magazine « Nibble ».
- Dans la série animée de télévision Futurama, Il fut indiqué dans l'épisode « Fry & the Slurm Factory » que Bender, un « robot industriel » androïde de fiction, construit en 2998, avait des 6502 en tant que « cerveau ».
Références
- Mansfield, Richard (1983). Machine Language For Beginners. Personal Computer Machine Language Programming For The Atari, VIC, Apple, Commodore 64, And PET/CBM Computers (or, Machine Language Programming For BASIC Language Programmers). Greensboro, North Carolina: Compute! Publications, Inc. Copyright © 1983, Small System Services, Inc. ISBN 0-942386-11-6. voir les liens externes en dessous.
Liens externes (en français)
- (fr) Le jeu d'instructions du 6502/6510 – sur le site "idoc64.free.fr"
Liens externes (en anglais)
- (en) Language Machine pour débutants (texte complet) – de atariarchives.org
- (en) www.6502.org
Cet article est basé sur une traduction de la Free On-line Dictionary of Computing et est utilisé avec permission selon la GFDL.
Catégorie : Microprocesseur
Wikimedia Foundation. 2010.