Nous utilisons des cookies pour améliorer votre expérience.

MacBidouille

Les CPU des Mac : Motorola 68000 (1/2)

Juste après le prototype basé sur un M6809 (6809E) à 1 Mhz fin 1979, un prototype est né début 1980 avec le Motorola 68000 à 8 Mhz dit 16/32 bits avec 64 Ko de RAM et son modèle mémoire et de programmation beaucoup plus ambitieux, tellement ambitieux d'ailleurs qu'il est sorti sans les instructions PACK et UNPK prévues pour le support du BCD et référencées dans sa documentation originelle de 1979...

Intel en effet avait sorti son 8086 avec deux unités incroyables, le 8087 qui est à la base de la norme IEEE-754 pour les calculs flottants (et pas que!), mais aussi le 8089 qui est un processeur d'entrées/sorties programmable changeant la portée de l'architecture initiale pour pouvoir implémenter l'équivalent d'un mini-ordinateur transactionnel.

Le génie a été de choisir une CPU plus chère mais bien plus capable, en simplifiant sa logique de bus, et en faisant prendre en compte des services comme la synthèse sonore ou les échanges du bus RS-422 par interruption sans implémenter de DMA.

Ce prototype ressemblait fortement dans sa définition au premier Macintosh, très différent de l'esprit du PC IBM des origines, puisque les services définis par le logiciel et généralement fournis dans cette première mouture par la CPU sans hardware spécialisé.

Par rapport au prototype à base de M6809, le 68000 ou M68k apportait une bande passante mémoire 4 fois plus importante, par doublement de la fréquence et doublement de la largeur de bus, mais aussi une instruction permettant de maximiser les échanges MOVEM qu'on verra dans la seconde partie, il disposait aussi de MOVEP pour adresser des périphériques 8 bits en minimisant le nombre de cycle pour lire ou charger plusieurs registres contigus.

Une architecture relativement orthogonale, au détail près des 8 registres 8/16/32 bits de données et des 8 d'adresses de 32 bits, des modes d'adressages souples et très adaptés aux langages compilés, y compris de haut niveau, un modèle de programmation et d'adressage 32 bits, tout cela parlait en sa faveur, voyant bien plus loin que les 16 bits du 8086 et son principe de segmentation.

Un programme compilé proprement pour le 68000 allait pouvoir tourner en supportant 4 Go de RAM (!!!) un jour sur un successeur, puisque Motorola avait promis juré craché que cette fois-ci c'était la bonne et la gamme s'étendrait pour très longtemps!

Le Macintosh a hérité d'une seconde banque mémoire poussant celle-ci à 128Ko, car le jeu d'instructions par mots de 16-bits du 68000 était plus consommateur en espace que celui du 8086 et les 8 bits où nombre d'instructions usuelles sont codées sur 8-bits permettant plus de compacité et d'efficacité du bus mémoire sur leur lecture.
Le graphisme bitmap de 512x342 pixels monochromes n'aidant pas vraiment.

Tout comme le 6809 avant lui avec OS/9, le 68000 a très rapidement hérité d'un système multitâche, OS/9-68k.

Les avantages du 68000:

  • Grand niveau de performance en assembleur, ainsi qu'en langage de haut niveau, même objet
  • Architecture orthogonale, grand nombre de registres et de modes d'adressage
  • Possibilité d'y adjoindre une MMU, pour la protection mémoire en mode utilisateur, toujours sans faute de page exploitable
  • Un adressage flat, 32 bits théoriques, 24 bits de bus d'adresse (-1!), soit 16 Mo
  • Des performances permettant vraiment d'implémenter directement une interface graphique
  • Une famille destinée à durer très longtemps, dixit Motorola

Les inconvénients du 68000:

  • Consommation mémoire pour le code, ainsi que le stockage des pointeurs
  • Support initial pas nécessairement parfait de la part des compilateurs C
  • Pas de véritable support de mémoire virtuelle, sauf à adjoindre un second 68000!
  • Pas de mémoire virtuelle
  • Pas de puces de support comparables aux 8087 et 8089
  • Accès mémoire 16 et 32 bits avec obligation d'alignement sur 16 bits (et perte d'espace)

Je vais revenir demain dans une seconde partie sur nombre de ces points, on va aller plus dans le dur, mais ce que je retiendrais c'est le choix d'un modèle de programmation et d'adressage 32 bits, permettant en théorie au code écrit ou généré de tourner sur des futures CPU totalement 32 bits en exploitant totalement leurs capacités. Et assez rapide pour une interface graphique!

Sondage

Comptez-vous acheter un Vision Pro ?