PLCC-84 · 8372A · dessin, pas une photo
Puces de l'AmigaCommodore (MOS / CSG)
1985
Agnus / Alice
La puce qui commande la mémoire de l'Amiga, et qui renferme le Copper et le Blitter.
Agnus décide qui utilise la mémoire Chip et quand, et cache deux coprocesseurs : le Copper, qui modifie la vidéo au rythme du faisceau de l'écran, et le Blitter, qui copie et dessine des blocs d'image sans occuper le processeur. Il a évolué de l'Agnus d'origine à 512 Ko jusqu'à Alice, de l'AGA, avec 2 Mo.
- 16
Une console faite de plaques d'essai
Tout commence en 1982 chez Hi-Toro, la petite entreprise californienne qui prit peu après le nom d'Amiga Corporation. Jay Miner, qui avait déjà conçu les puces graphiques de l'Atari 2600 et des Atari 8 bits, dirigeait le matériel d'une console au nom de code Lorraine, le prénom de la femme de Dave Morse, le président de l'entreprise.
Avant d'exister en silicium, les puces se présentaient comme des piles de plaques d'essai (breadboards) couvertes de composants courants et reliées par un enchevêtrement de fils. On raconte que l'ensemble remplissait une table de cuisine. C'est dans cet état que Lorraine fut montrée au salon CES de janvier 1984.
Au début, les trois puces s'appelaient Agnus, Daphne et Portia. Agnus fut la seule à garder son nom ; les deux autres allaient devenir Denise et Paula.
Le portier de la mémoire Chip
Dans l'Amiga, l'image, le son et les données de la disquette vivent dans une mémoire partagée, la Chip RAM. Le processeur et les autres puces ne peuvent pas y toucher librement : ils doivent en faire la demande à Agnus. Celui-ci gère 25 canaux de DMA (accès direct à la mémoire), ce qui veut dire que la vidéo, le son et la disquette vont chercher leurs données tout seuls, sans que le processeur ait à les charger un par un.
L'astuce tient au partage du temps. Le 68000 n'utilise la mémoire qu'un cycle sur deux, alors Agnus donne les cycles impairs à la vidéo, au son et à la disquette et laisse les pairs au processeur. En usage normal, aucun des deux ne remarque l'autre. Ce n'est que lorsque l'écran utilise beaucoup de couleurs en haute résolution, ou quand le Blitter travaille à fond, que le processeur doit attendre.
Tout cela tourne au rythme de l'écran. L'unité de temps d'Agnus est le cycle couleur, d'environ 280 nanosecondes, la durée de deux pixels en basse résolution. Agnus tient les compteurs de position du faisceau et peut se synchroniser sur un signal vidéo externe (genlock), l'une des raisons pour lesquelles l'Amiga entra si vite dans les studios de télévision.
Le Copper : un coprocesseur qui ne pense qu'à l'écran
Le Copper (de coprocessor) est une petite machine qui exécute son propre programme, la liste Copper, en parallèle du processeur. Il ne connaît que trois instructions : MOVE écrit une valeur dans un registre des puces, WAIT attend que le faisceau atteigne une position de l'écran, et SKIP saute l'instruction suivante si le faisceau est déjà passé. Chaque instruction occupe 4 octets.
Cela paraît peu, mais c'est ce qui donne à l'Amiga son allure. Comme le Copper peut changer les couleurs, la résolution ou l'adresse de l'image en milieu d'écran, une ligne peut avoir d'autres couleurs que la suivante : ce sont les barres de couleur (raster bars) de tant de démos et de jeux. C'est aussi le Copper qui permet au Workbench d'afficher deux écrans de résolutions différentes, l'un au-dessus de l'autre, en même temps.
La liste recommence au début à chaque image, 50 fois par seconde en PAL. Il n'y a pas d'instruction de fin : on termine par un WAIT sur une position que le faisceau n'atteint jamais. Pendant qu'il attend, le Copper libère le bus et ne consomme pas de cycles mémoire.
Le Blitter : copier, combiner, dessiner
Blitter vient de « block image transfer ». Il lit jusqu'à trois blocs de mémoire (appelés A, B et C), les combine bit à bit selon une fonction logique au choix et écrit le résultat dans un quatrième bloc, D. Il y a 256 fonctions logiques possibles, et au passage chaque ligne peut être décalée de 0 à 15 pixels. C'est ainsi qu'on dessine un personnage détouré par-dessus le décor : le masque indique où le personnage cache le fond et où il le laisse voir.
Les programmeurs appelaient bobs (blitter objects) ces personnages dessinés par le Blitter, pour les distinguer des sprites de Denise. Le Blitter trace aussi des lignes (selon l'algorithme de Bresenham) et remplit des zones entre des lignes, ce qui, ensemble, donne des polygones pleins : la base des vecteurs 3D des démos. Même la lecture des disquettes l'utilise, pour décoder les données MFM de chaque piste.
Dans le chipset d'origine, chaque opération couvre au maximum 1024 × 1024 pixels. Avec le Blitter pour copier fenêtres et graphismes, le processeur reste libre pour d'autres tâches, et c'est pourquoi un 68000 à 7 MHz parvenait à déplacer fenêtres et jeux avec une fluidité que peu d'ordinateurs de l'époque avaient.
D'Agnus à Alice : les révisions
Le premier Agnus, celui de l'A1000 et du premier A2000, était livré en boîtier DIP de 48 broches : le 8361 pour le NTSC et le 8367 pour le PAL. Il adresse 512 Ko de Chip RAM. En 1987, avec l'A500 et le B2000, arriva le Fat Agnus (8370 NTSC, 8371 PAL), dans un PLCC carré de 84 broches. Il reste limité à 512 Ko de Chip RAM, mais gère 512 Ko de Slow RAM en plus, la mémoire de la trappe de l'A500.
L'ECS apporta le 8372A, qui adresse 1 Mo de Chip RAM et fonctionne en PAL ou en NTSC. Il apparut dans les dernières révisions de l'A500 et du B2000 (à partir de la révision 6) et dans le CDTV. Les 8372AB et 8372B de l'A3000 et plusieurs versions du 8375 (A500 Plus et A600) atteignent 2 Mo. L'Agnus ECS fait aussi des blits jusqu'à 32 768 × 32 768 pixels et a des compteurs de faisceau programmables, qui permettent des modes vidéo comme le Productivity, en 640 × 480 non entrelacé.
Dans l'AGA, le successeur s'appelle Alice (8374), et il équipe l'A1200, l'A4000 et le CD32. Il adresse 2 Mo de Chip RAM et va chercher les données d'image et des sprites par mots de 32 bits et en mode page rapide, ce qui multiplie la bande passante par quatre. Curieusement, le Blitter et le Copper d'Alice travaillent toujours en 16 bits, comme en 1985.
Pourquoi Agnus a compté
Sans le Copper et le Blitter, il n'y aurait pas eu de demoscene Amiga : les barres de couleur, les écrans partagés, les défilements fluides et les vecteurs pleins viennent tous de là. Dans les jeux, les bobs du Blitter et les palettes changées par le Copper en milieu d'écran donnaient plus de couleurs et plus d'objets que le matériel ne semblait le permettre.
En vidéo, le genlock et une synchronisation proche de celle de la télévision firent de l'Amiga un générateur de titres et d'effets bon marché. Le Video Toaster de NewTek, qui reçut un Emmy technique en 1993, réalisait une bonne partie de ses effets avec l'aide du chipset de l'Amiga, synchronisé sur le signal NTSC.
Le saviez-vous…
On dit qu'Agnus vient de « Address GeNerator UnitS », les unités qui génèrent les adresses mémoire.
On dit que les puces portaient des prénoms féminins pour que les ingénieurs puissent en parler en public sans éveiller les soupçons : qui entendait parler d'Agnus ou de Portia croyait qu'il s'agissait de personnes.
Le nom Fat Agnus (Agnus le gros) vient du boîtier : le PLCC de 84 broches est bien plus large que le DIP d'origine. Celui de 1 Mo, certains l'appellent Fatter Agnus.
Une liste Copper se termine, par tradition, par l'instruction $FFFF,$FFFE : un WAIT sur une position de l'écran qui n'arrive jamais.
Un bit donne au Blitter la priorité totale sur le processeur, laissant le 68000 à l'arrêt, en attente. Les programmeurs l'appelaient blitter nasty.
La carte de l'A4000 a un cavalier marqué pour 8 Mo de Chip RAM. Il ne sert à rien : Alice n'adresse que 2 Mo, quelle que soit la position.
Mitchy, la chienne de Jay Miner, le suivait partout. On raconte que, dès l'époque d'Atari, elle avait un badge d'employée portant le numéro 000.
Avant l'ECS, Commodore conçut un chipset plus ambitieux, le Ranger. Il fut annulé en 1989 parce que trop cher, et l'ECS prit sa place.
Le Copper en action
Le Copper est un petit coprocesseur dans Agnus qui suit le faisceau de l'écran et modifie des registres en plein tracé. Changer la couleur de fond à chaque ligne, sans occuper le processeur, donne ces barres de couleur : la signature des démos Amiga.
MOVE #$0F00,COLOR00









