Obligement - L'Amiga au maximum

Mardi 23 avril 2024 - 21:29  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Dossier : Architecture et compatibilité des processeurs 68000, 68008, 68010, 68012 et 68020
(Article écrit par Thomas L. Johnson et extrait de Byte - septembre 1986)


Un aperçu de l'architecture et de la compatibilité matérielle et logicielle

Depuis son lancement en 1979, la famille de microprocesseurs MC68000 de Motorola s'est agrandie et compte aujourd'hui cinq membres : le MC68000 original de 16 bits, le MC68008, une version du MC68000 avec un bus de données de 8 bits, le MC68010, une version avec mémoire virtuelle/machine virtuelle, le MC68012, une version avec adresse étendue du MC68010, et le MC68020, un microprocesseur complet avec mémoire virtuelle/machine virtuelle de 32 bits.

processeurs 68000
Figure 1 : la généalogie de la famille MC68000

Chaque membre de la famille comprend des améliorations architecturales qui offrent certains avantages, en termes de logiciels, de matériel et de conception de systèmes. Toutefois, le degré de compatibilité logicielle et matérielle entre les membres de la famille varie.

Présentation de la famille

Les principales différences externes résident dans le nombre de lignes d'adresse, de données et de contrôle.

MC68000 MC68008 MC68010 MC68012 MC68020
Lignes d'adresse 24 20/22 24 31 32
Plage d'adresses virtuelles 16 Mo 1 Mo/4 Mo 16 Mo 2 Go 4 Go
Lignes de données 16 8 16 16 32
Protocole du bus Asynchrone Asynchrone Asynchrone Asynchrone Asynchrone
Cycle d'horloge/Cycle de bus 4 4 4 4 3
Nombre de signaux impulsionnels de données 2 1 2 2 1
Nombre de confirmations de transfert 1 (DTACK) 1 (DTACK) 1 (DTACK) 1 (DTACK) 1 (DTACK)
Lignes de code de fonction 3 3 3 3 3
Lignes d'arbitration du bus 3 2/3 3 3 3
Tableau 1

La famille MC68000 utilise un code de fonction à trois fils qui transmet au système l'état de traitement du processeur sur une base de "cycle de bus par cycle de bus". Cela permet au concepteur de maintenir dans le matériel du système les distinctions de privilèges de mémoire maintenues dans le processeur. Pour les MC68000 et MC68008, ces codes de fonction peuvent indiquer le mode superviseur ou le mode utilisateur, les accès au programme ou aux données et les cycles de bus de confirmation de réception des interruptions. Les MC68010 et MC68012 utilisent les mêmes codages sur les broches de code de fonction mais changent le nom de l'espace de confirmation de réception d'interruption en "espace processeur". Un accès à l'espace processeur indique soit une confirmation de réception d'interruption, soit une confirmation de réception de point d'arrêt. Le MC68020 étend les accès à l'espace processeur pour inclure les communications entre coprocesseurs et la vérification du niveau de permission d'accès, qui peut être utilisé dans des schémas de gestion de la mémoire sophistiqués pour implémenter des architectures de protection en anneau. Tous les codages sont effectués de manière à être compatibles avec le haut de gamme, de sorte que les systèmes qui reconnaissent une confirmation de réception d'interruption sur un MC68000 fonctionneront correctement même si un MC68020 est inséré dans le système (Voir figure 2).

processeurs 68000
Figure 2 : codage des bus d'adresses de l'espace processeur (FC0-2 = 111)

Modèle de programmation au niveau utilisateur

Pour le programmeur utilisateur, il n'y a absolument aucune différence dans les ressources sur puce disponibles pour l'un ou l'autre des processeurs de la famille. Ainsi, une fois le modèle assimilé, nul besoin de tout réapprendre lors du passage d'un membre de la famille à un autre. L'architecture de base de l'utilisateur comprend huit registres de données de 32 bits totalement non dédiés, auxquels on peut accéder en tant qu'octets, mots ou mots longs (valeurs de 32 bits) et qui peuvent être utilisés comme source ou destination de toute opération permettant l'utilisation d'un registre de données (c'est-à-dire toutes les opérations arithmétiques, logiques et de déplacement de données). Les utilisateurs ont également à leur disposition huit registres d'adresse de 32 bits auxquels ils peuvent accéder en tant qu'entités de 16 ou 32 bits. Un seul de ces registres peut être considéré comme dédié, A7, qui est le pointeur de pile implicite de l'utilisateur pour les appels de sous-routines, etc.

Le modèle utilisateur est complété par un registre de code de condition de 8 bits et un compteur de programme de 32 bits. Le registre de code de condition contient non seulement les bits de condition "normaux" pour les opérations arithmétiques et logiques "zero" (zéro), "carry" (retenue), "overflow" (débordement), "negative" (négatif), mais aussi un bit pour les opérations de précision "extended" (étendue).

L'inclusion de structures 32 bits a préfiguré la conception du MC68020 entièrement 32 bits, ouvrant la voie à une compatibilité ascendante du code utilisateur dans les futurs processeurs.

Modèle de programmation au niveau superviseur

Un regard sur le modèle de programmation au niveau superviseur (figure 3) révèle finalement les différences de fonctionnalité des membres de la famille. Alors que le programme au niveau utilisateur n'a accès qu'aux ressources de niveau utilisateur, le programme au niveau superviseur a accès non seulement au modèle complet de niveau utilisateur, mais aussi au modèle complet de programmation au niveau superviseur pour ce processeur. Notez que les pointeurs de pile du superviseur sont également désignés par A7. Un changement de contexte automatique concernant ces pointeurs de pile se produit lorsque le flux passe du niveau superviseur au niveau utilisateur et inversement, sans qu'il soit nécessaire de charger et de recharger les registres de pointeurs de pile.

processeurs 68000
Figure 3 : le modèle de programmation du superviseur

Le tableau 2 présente toutes les ressources disponibles pour le programme au niveau superviseur sur les différents processeurs.

MC68000/008 MC68010/012 MC68020
Registre de statut
Bits Trace matériels
1 1 2
Registre de statut
Bit d'état du superviseur
Oui Oui Oui
Registre de statut
Bits de masque d'interruption
3 3 3
Registre de statut
Sélection du pointeur de pile
Non Non Oui
Pointeurs de pile
Pile d'interruption
Oui Oui Oui
Pointeurs de pile
Pile Master
Non Non Oui
VBR Non Oui Oui
Registres de contrôle du cache Non Non Oui
Codes de fonction alternatifs Non Oui Oui
Tableau 2

En progressant du MC68000 au MC68020, davantage d'instructions sont disponibles pour manipuler les ressources de supervision supplémentaires, et chaque modèle est un sous-ensemble approprié du processeur immédiatement supérieur. Ainsi, le code qui manipule le registre de code de condition sur le MC68008 (la version 8 bits du MC68000) s'exécutera intact sur n'importe quel autre processeur.

Cette forme de "sur-ensemble" des ressources sur les membres les plus récents de la famille assure une compatibilité ascendante et est maintenue au sein de la famille pour les modèles de programmation au niveau superviseur et utilisateur, les instructions (au niveau du bit), les modes d'adresse et tous les types de données.

Ressources supplémentaires au niveau superviseur

Le vecteur VBR (Vector Base Register), introduit sur le MC68010, permet à un programme au niveau superviseur de relocaliser la table vectorielle d'exception de 1 ko à n'importe quel endroit de la carte d'adresses physiques du processeur. Cette table de vecteurs d'exception est utilisée dans la famille MC68000 pour acheminer des exceptions spécifiques vers le gestionnaire approprié dans l'espace de code de supervision. La table vectorielle se compose de 256 entrées de quatre octets, chacune d'entre elles pouvant être utilisée pour pointer vers l'adresse d'entrée de son gestionnaire spécifique. Sur ces 256 entrées de vecteurs, 37 à 39 vecteurs (selon le processeur) sont dédiés au traitement d'exceptions prédéfinies telles que les erreurs de bus, les instructions TRAP, et ainsi de suite. 26 vecteurs supplémentaires ont été réservés pour une extension future de la fonctionnalité, et 192 entrées de vecteurs peuvent être définies par l'utilisateur.

Les registres de code de fonction alternatifs (SFC et DFC) permettent au superviseur de récupérer et de modifier des données dans n'importe quelle carte d'adresses (utilisateur ou superviseur, programme ou données). Sur tous les membres de la famille, les sorties de code de fonction sont commandées automatiquement en fonction du type et de l'emplacement du cycle du bus mémoire, et ces sorties peuvent être utilisées pour renforcer la protection matérielle dans le sous-système de mémoire. Comme les MC68000 et MC68008 ne sont pas des processeurs de machines virtuelles, ils n'ont pas besoin d'outrepasser cette protection matérielle, mais les processeurs MC68010, MC68012 et MC68020 ont besoin de cette capacité. Les registres de code de fonction alternatif permettent à ces processeurs plus récents d'exécuter cette fonction pour contrôler l'environnement virtuel.

Les deux registres de contrôle de cache introduits dans le MC68020 (le registre de contrôle de cache CACR et le registre d'adresse de cache CAAR) permettent au superviseur de contrôler la mémoire cache d'instructions sur puce (64 entrées de quatre octets) pour ce dispositif. Le cache est désactivé à la mise sous tension, et le superviseur peut, à sa discrétion, choisir de l'activer ultérieurement. De plus, le superviseur peut sélectivement invalider des entrées de cache.

Le registre d'état du MC68020 contient un bit supplémentaire pour le contrôle du mécanisme de traçage matériel intégré dans tous les membres de la famille. Les MC68000, MC68008, MC68010 et MC68012 peuvent suivre une instruction ou une séquence d'instructions donnée lorsque le superviseur active le mécanisme de suivi. Le MC68020 peut également effectuer un traçage uniquement lors d'un changement d'instruction de déroulement du programme, tel qu'un branchement ou un saut.

La seule autre ressource de supervision ajoutée est le pointeur de pile maître (MSP), également nouveau sur le MC68020, qui permet de séparer l'empilement des exceptions liées et non liées à une tâche. En utilisation, le MC68020 se met sous tension et charge le pointeur de pile d'interruption comme pointeur de pile de supervision actif. C'est l'équivalent de la séquence de mise sous tension de tout autre membre de la famille dans laquelle le pointeur de pile de supervision unique est chargé. À un moment ultérieur, le système d'exploitation peut choisir d'activer le pointeur de pile maître en activant le bit "MSP" dans le registre d'état (le bit de sélection du pointeur de pile). À partir de ce moment (jusqu'à ce qu'il soit désactivé), toutes les exceptions courantes du programme, y compris les TRAP et les divisions par zéro, qui se produisent, entraîneront la sauvegarde des informations d'état sur la pile maître jusqu'à ce qu'une interruption se produise.

Les interruptions étant des événements asynchrones qui n'ont normalement aucune incidence sur la tâche en cours d'exécution dans un environnement multitâche, il est souhaitable de séparer les informations relatives aux interruptions de celles relatives à la tâche. Pour ce faire, il faut d'abord empiler les informations relatives à la tâche en cours sur la pile principale, puis effectuer une commutation automatique sur le pointeur de la pile d'interruption à utiliser pendant le traitement des interruptions, loin de la tâche interrompue. Ici, une trame de pile "factice" est stockée sur la pile d'interruption, de sorte qu'à la fin du traitement de l'interruption, une seule instruction "RTE" (retour d'exception) provoquera automatiquement une commutation vers le pointeur de pile maître, pour recharger l'état de la tâche précédemment sauvegardé et reprendre cette tâche. L'avantage est que le superviseur n'a pas besoin de fournir d'espace de pile pour les interruptions qui peuvent se produire pendant l'exécution normale de la tâche et qui peuvent être sans rapport avec la tâche en cours d'exécution.

Jeux d'instructions

Sur le MC68020, l'instruction "RTE" peut exécuter un grand nombre de fonctions discrètes (vérifier la présence d'une trame factice, changer les pointeurs de pile, recharger l'état) ; cependant, il s'agit de la même instruction utilisée sur les MC68000, MC68008, MC68010 et MC68012, La fonction exécutée par l'instruction RTE sera liée aux ressources et fonctionnalités disponibles sur les processeurs respectifs. Ainsi, pour les MC68000 et MC68008, afin de revenir du traitement des interruptions ou du traitement normal des exceptions, cette instruction rétablit simplement le registre d'état et le compteur de programme de la tâche suspendue à partir du pointeur de pile de supervision, alors que sur les MC68010 et MC68012, elle vérifie également le format de la pile et peut recharger la quantité plus importante d'informations pour l'état interne sauvegardé. Sur tous les processeurs, l'instruction RTE effectue tout ce qui est nécessaire pour revenir d'une exception.

Le jeu d'instructions de l'architecture de base, celle du MC68000, se compose d'un ensemble d'instructions disponibles pour l'utilisateur et d'un ensemble d'instructions privilégiées pour le contrôle des ressources système sensibles. Les MPU de la famille suivante ont amélioré ce jeu d'instructions (voir tableau 3).

MC68000/008 MC68010/012 MC68020
Déplacement de données 7 9 9
Arithmétique/logique 17 18 18
Décimal codé en binaire 5 5 7
Opérande simple 9 9 9
Déplacement et rotation 8 8 8
Manipulations de bits 4 4 4
Manipulations du champ de bits 0 0 8
Branches (16 conditions) 3 3 3
Relatif aux exceptions 5 7 8
Contrôle 12 13 20
Instructions génériques au coprocesseur 0 0 7
Total 70 75 101
Tableau 3

Modes d'adressage

Comme pour les jeux d'instructions, les modes d'adressage sont également compatibles d'un membre de la famille à l'autre. Tous les modes d'adressage des processeurs de la famille MC68000 peuvent être divisés en quatre catégories principales :
  • Données, si un mode d'adressage peut faire référence à des opérandes de données.
  • Mémoire, si le mode d'adressage peut être utilisé pour faire référence à des opérandes en mémoire.
  • Contrôle, si le processeur n'a absolument pas besoin de connaître la taille de l'opérande avant de calculer l'adresse effective.
  • Modifiable, si le mode peut faire référence à des opérandes inscriptibles.
Comme il est possible de se référer à un opérande de données modifiable en mémoire, il s'ensuit qu'un mode donné peut être classé dans plus d'une catégorie.

Syntaxe Donnée Mémoire Contrôle Altérable
Registre de données direct Dn o o
Registre d'adresses direct An o
Registre de données indirect (An) o o o o
Registre d'adresses indirect
avec post-incrémentation
(An)+ o o o
Registre d'adresses indirect
avec pré-décrémentation
-(An) o o o
Registre d'adresses indirect
avec déplacement
d(An) o o o o
Registre d'adresses indirect
avec index
d(An,Rx) o o o o
"Short" absolu xxx.W o o o o
"Long" absolu xxx.L o o o o
PC relatif avec déplacement d(PC) o o o
PC relatif avec index d(PC,Rx) o o o
Immédiat #xxx o o
Tableau 4

Les modes d'adressage du tableau 4 sont exactement les mêmes pour les microprocesseurs MC68000, MC68008, MC68010, MC68012 et MC68020. Ces modes offrent une grande souplesse et une grande puissance. Par exemple, les modes "(An)+" et "-(An)" permettent de gérer jusqu'à huit piles par tâche, une capacité particulièrement intéressante dans le domaine de l'intelligence artificielle. À ces modes, le MC68020 en ajoute un autre : le mode mémoire indirecte. Le mode mémoire indirecte présente un grand nombre de variantes et peut être illustré au mieux par les expressions syntaxiques ([bdAn],Xn.size*scale,od) et ([bd,An,Xn.size*scale],od). Dans ces nouveaux modes, "bd" et "od" font référence à des déplacements de base et externes optionnels de 8, 16 ou 32 bits avec extension de signe ; An, à un registre d'adresse de base optionnel (A0-A7) ; Xn, à un registre d'index optionnel (D0-D7 ou A0-A7) ; size, la quantité du registre d'index à utiliser (16 ou 32 bits) ; et scale, un facteur d'échelle pour le registre d'index (1, 2, 4 ou 8).

Étant donné que le mode de mémoire indirecte permet que n'importe lequel du déplacement de base, du registre d'adresse de base, du registre d'index et du déplacement extérieur soit facultatif, et permet que le registre d'index soit ajouté au calcul de l'adresse avant ou après le premier accès à l'adresse (pré-indexation et post-indexation), toute combinaison concevable de ces modes est autorisée. Cela inclut la mémoire déplacée indirecte ([bd],od), le registre de données indirect (Dn) ; et le registre doublement indirect ([Rn]).

L'ajout de ces nouveaux modes n'a cependant aucune incidence sur la compatibilité des modes précédents. Tout mode d'adresse légal pour les MC68000, MC68008, MC68010 et MC68012 fonctionne exactement de la même manière sur le MC68020.

Fonctionnement virtuel

En raison de l'architecture interne des processeurs, il existe trois machines de base : l'architecture MC68000/008, l'architecture MC68010/012 et l'architecture MC68020. En résumé, tout code au niveau utilisateur écrit pour s'exécuter sur le MC68000/008 s'exécutera sans modification sur n'importe lequel des autres processeurs, et tout code au niveau utilisateur écrit pour s'exécuter sur le MC68010/012 s'exécutera sans modification sur le MC68020. Cette compatibilité ascendante s'applique même au niveau binaire. La principale différence entre les processeurs en ce qui concerne le traitement des exceptions réside dans les informations de la trame d'état qui sont stockées à la suite d'une exception pour gérer la mémoire virtuelle et le fonctionnement de la machine virtuelle.

La mémoire virtuelle est une technique qui permet à toutes les tâches exécutées sur un processeur de se comporter comme si chacune d'elles avait à sa disposition la totalité de la plage d'adressage du processeur, quelle que soit la quantité de mémoire physique présente dans le système. La machine virtuelle est une technique dans laquelle toutes les ressources du processeur et du système requises par une tâche semblent être présentes, même si elles ne sont pas implémentées. Pour gérer la capacité de mémoire virtuelle, toute instruction donnée doit être "annulable" et d'une certaine manière "redémarrable".

Par exemple, supposons que la tâche A exécute une instruction MOVE 32 bits de mémoire à mémoire et que la partie physique de la mémoire requise pour l'opérande de destination n'est pas actuellement disponible. L'extraction de l'instruction et de l'opérande source est effectuée avec succès, mais lorsque l'écriture vers la destination est tentée, le gestionnaire de mémoire indique une erreur "non résidente" au moyen d'une erreur de bus ou d'une ligne d'erreur au processeur. Le processeur doit alors sauvegarder l'état de la tâche A, trouver une partie vide de la mémoire (éventuellement en échangeant une partie actuellement résidente sur un disque), charger la partie cible de la mémoire depuis le disque, restaurer la tâche A et permettre à l'instruction MOVE de redémarrer ou de se terminer. Ainsi, depuis le moment de l'erreur jusqu'à l'achèvement de l'instruction MOVE, la tâche A n'était pas en train de s'exécuter mais n'a aucune indication de ce fait.

Bien que tous les processeurs de la famille MC68000 aient la capacité "d'abandonner" via l'entrée d'erreur de bus (BERR) des processeurs, les MC68000 et MC68008 ne sont pas des processeurs à mémoire virtuelle et ne possèdent donc pas toutes les caractéristiques nécessaires pour gérer la mémoire virtuelle. Plus précisément, les informations sur l'état interne du processeur sont insuffisantes à la réception d'une erreur de bus pour permettre la récupération de l'instruction défectueuse. Les autres membres de la famille (MC68010, MC68012 et MC68020), en revanche, enregistrent suffisamment d'informations d'état pour permettre la restauration complète de l'instruction défaillante. L'instruction défectueuse doit être récupérée par l'une des deux méthodes suivantes : le redémarrage de l'instruction, dans lequel le processeur est "remonté" jusqu'au début de l'instruction qui a provoqué la panne, ou la poursuite de l'instruction, dans laquelle l'instruction défectueuse est autorisée à terminer son exécution à partir du point de la panne. Le choix de la méthode peut sembler être une question de dogme informatique, mais en fait, il a une importance pratique. Les modes d'adressage avancés de la famille MC68000 et le désir de protéger l'utilisateur contre "l'emballement" du processeur ont amené les concepteurs de la famille MC68000 à choisir la méthode de continuation des instructions.

Poursuite des instructions

L'emballement du processeur peut être un problème très handicapant pour les systèmes de mémoire virtuelle. L'exemple utilisé ci-dessus peut également servir à illustrer ce problème. Dans cet exemple, on a supposé que les extractions du code opération ("opcode") et de l'opérande source se sont déroulées sans incident, mais qu'une faute a été commise lors de l'écriture de l'opérande. Puisque la plupart des algorithmes de remplacement de la mémoire recherchent des segments non modifiés à échanger (parce que ces segments n'ont pas besoin d'être écrits sur un disque avant de libérer l'espace mémoire), un bon candidat peut être la page contenant l'opérande source. Si ce segment est choisi pour être échangé avec la page de destination, alors lorsque l'instruction est relancée (au lieu d'être poursuivie), l'instruction sera à nouveau erronée - cette fois pour l'extraction de l'opérande source. L'emballement a maintenant commencé, les zones source et destination étant continuellement échangées entre elles (puisqu'aucune écriture en mémoire ne se produira jamais), et l'instruction ne sera jamais terminée. Certains algorithmes de remplacement prennent également en compte "l'âge" d'une zone dans le processus de sélection, de sorte que l'emballement sera normalement limité à deux redémarrages. Cependant, la plupart des systèmes d'exploitation enverront une nouvelle tâche en attendant que le sous-système de disque remplisse la zone demandée, et donc la zone nouvellement remplie sera quelque peu "vieillie" au moment où elle sera finalement utilisée. La continuation d'instruction, utilisée par les MC68010, MC680I2 et MC68020, résout complètement ce problème car une fois qu'une zone a été accédée avec succès, elle n'est plus jamais utilisée par cette instruction.

En raison des exigences en matière de virtuel et de la nécessité d'accomplir cette virtualité sans code de système d'exploitation massif, les MC68010, MC68012 et MC68020 ont des trames de pile plus grandes associées aux exceptions d'erreur de bus (voir figure 4). Sur les processeurs MC68000/008, très peu d'informations doivent être sauvegardées pour les erreurs de bus car les MPU prennent en compte les erreurs système plutôt que les erreurs virtuelles. Les processeurs MC68010/012/020, en revanche, sauvegardent davantage d'informations internes pour assurer la poursuite des instructions. Ces variations dans les trames de pile sont enterrées dans les gestionnaires d'exception fonctionnant dans le mode de supervision d'un système d'exploitation. Seuls les gestionnaires d'exception qui s'occupent de la maintenance de la pile de supervision ou qui attendent des valeurs à des décalages spécifiques sur la pile de supervision sont affectés par les différences de pile.

processeurs 68000
Figure 4 : cadres de la pile d'erreurs de bus

Ainsi, tout code de traitement des exceptions écrit pour être exécuté sur un processeur ne nécessitera que des modifications mineures, voire aucune, pour être exécuté sur un autre processeur de la famille. Ces modifications logicielles sont un élément normal de la mise à niveau d'un système, puisque les systèmes de gestion de la mémoire sont généralement mis à niveau d'un système à l'autre, en particulier lorsqu'on passe d'un environnement de mémoire non virtuelle à un environnement de mémoire virtuelle. Toutefois, le type spécifique de gestion de la mémoire mis en oeuvre n'a aucune incidence sur la compatibilité, puisque le processeur lui-même n'est pas affecté par le schéma de gestion de la mémoire choisi.

Interface de bus physique

Tous les membres de la famille MC68000 utilisent la même interface de bus asynchrone simple vers le monde extérieur. Sur un bus asynchrone, le processeur lance le cycle du bus et le monde extérieur contrôle la durée de ce cycle. De ce fait, chaque partie du sous-système de mémoire (y compris les périphériques à mémoire définie) peut répondre au cycle du bus dans le temps optimal qui lui est propre. Les signaux de base du bus de transfert de données du MC68000 sont l'impulsion d'adresse (AS), qui indique les adresses valides, l'impulsion de données (DS), qui indique les données valides pendant un cycle d'écriture, et la confirmation de réception de transfert de données (DTACK), qui est le signal de poignée de main externe utilisé pour provoquer la fin d'un cycle de bus. Ces signaux sont présents sous une forme ou une autre sur tous les processeurs (voir tableau 5).

MC68000 MC68008 MC68010/012 MC68020
Impulsion d'adresse AS AS/td> AS AS
Impulsion de donnée UDS/LDS DS/td> UDS/LDS DS
Confirmation de transfert de données DTACK DTACK DTACK DTACK
Taille de l'opérande non disponible non disponible non disponible SIZ0/1
Tableau 5

Les processeurs MC68000/010/012 utilisent deux signaux impulsionnels de données (signaux impulsionnels de données supérieurs et inférieurs, UDS/LDS), qui agissent comme des sélections d'octets vers le sous-système de mémoire, alors que les processeurs MC68008/020 n'utilisent qu'un seul signal impulsionnel de données. Le MC68008, avec son bus de données de 8 bits, n'a pas besoin de sélection d'octets et ne nécessite qu'une seule impulsion de données. Le MC68020, en raison de la présence des broches de taille d'opérande codées (SIZ0/1), ne nécessite également qu'une seule broche. Les broches de taille d'opérande communiquent au monde extérieur la taille de l'opérande restant à transférer par le contrôleur de bus interne du MC68020. En raison de la convention matérielle utilisée, ces broches de taille d'opérande peuvent être combinées avec les deux bits d'adresse de poids faible pour générer les sélections d'octets nécessaires. La fonction de dimensionnement dynamique du bus du MC68020, qui est activée par le codage des signaux d'accusé de réception de transfert de données (DSACK0/1), permet de modifier la taille du port mémoire de 8 à 16 ou 32 bits sur une base "cycle de bus par cycle de bus" (avec un codage non défini réservé). Le MC68020 gère également le désalignement des opérandes au niveau de l'octet.

La principale différence dans les cycles de bus externes est que les MC68000/008/010/012 exécutent un cycle de bus minimum en quatre cycles d'horloge, tandis que le MC68020 exécute son cycle minimum en seulement trois cycles d'horloge (voir figures 5 et 6). En raison de la nature asynchrone du bus, il est facile de monter un MC68020 sur une carte d'adaptation compatible avec n'importe quelle autre unité centrale de traitement, et le MC68020 peut être branché dans un connecteur MC68000, MC68008, MC68010 ou MC68012 et peut exploiter le bus d'un système existant. Ainsi, la compatibilité matérielle est maintenue au sein de la famille, et tout périphérique qui fonctionne avec un MC68000 fonctionne également avec n'importe quel autre membre de la famille.

processeurs 68000
Figure 5 : le cycle du bus READ pour les MC68000, MC68008, MC68010 et MC68012

processeurs 68000
Figure 6 : le cycle du bus READ pour le MC68020

Améliorations spécifiques de la famille

Outre la gestion de la mémoire virtuelle et des machines virtuelles par l'architecture MC68010, le MC68010/012 a également implémenté une forme de cache appelée "mode boucle" pour faciliter l'exécution de fonctions répétitives telles que les déplacements de blocs et les opérations de chaîne. Ce mode boucle permet de verrouiller certaines séquences de code dans le pipeline interne du processeur, ce qui permet d'accéder aux instructions en deux cycles d'horloge - soit une économie de 50% tout en libérant de la bande passante sur le bus de transfert de données externe. Les séquences sont composées d'une instruction de 2 octets, telle que MOVE ou ADD, qui est immédiatement suivie d'une instruction de décrémentation et de branchement sur condition (DBcc) pour revenir à l'instruction de 2 octets. Lorsque le processeur reconnaît cette séquence, il recycle simplement les instructions et n'effectue que des accès aux données du monde extérieur jusqu'à la fin de la boucle.

En plus du mode boucle, le MC68010/012 a implémenté une gestion spéciale des points d'arrêt du programme. Dans ce cas, la reconnaissance d'un modèle binaire de point d'arrêt (l'un des huit codages d'instructions illégales spécifiques) amène le processeur à exécuter un cycle de bus d'espace processeur spécifique pendant le traitement des exceptions pour le modèle binaire illégal afin d'indiquer qu'un point d'arrêt a été atteint.

Le MC68020 va encore plus loin avec ces deux caractéristiques (mode boucle et points d'arrêt). Le MC68020 dispose d'un cache d'instructions de 256 octets intégré, qui augmente les performances globales du processeur de 40 à 80%, en fonction de la localité de référence du code exécuté. Le code présentant la plus grande localité de référence (par exemple, les boucles courtes) présentera la plus grande amélioration de performance en activant le cache, tandis que le code qui présente moins (ou pas) de localité de référence (boucles longues ou code en ligne) présentera moins (ou pas) d'augmentation de performance. Le cache est implémenté sur le MC68020 sous la forme d'un cache à attribution directe de 64 entrées et de 32 bits. Le programmeur superviseur a le contrôle sur cette nouvelle ressource au moyen du registre de contrôle du cache.

Les améliorations apportées par le MC68020 à la fonction de point d'arrêt du MC68010 font non seulement en sorte que le processeur exécute le cycle de bus de confirmation de réception du point d'arrêt comme auparavant, mais elles permettent également au matériel externe de fournir un code d'opération d'instruction de 16 bits à exécuter au lieu de prendre l'instruction illégale en défaut. Cela signifie que le MPU peut exécuter le point d'arrêt un nombre fixe de fois, en substituant le code opérationnel de remplacement à chaque fois dans la boucle jusqu'à ce que le compte expire et que le point d'arrêt arrête la boucle.

Le MC68020 est le premier processeur de la famille à offrir une gestion inhérente aux coprocesseurs. Cette interface de coprocesseur permet à tout coprocesseur développé pour le MC68020 d'être également utilisé sur n'importe quel autre membre de la famille. Pour ce faire, la maintenance de l'interface du coprocesseur dépend des cycles de lecture/écriture standard du bus. Comme l'interface est générique par nature, les nouveaux processeurs ne nécessiteront pas de modifications des coprocesseurs existants, et les nouveaux coprocesseurs ne nécessiteront pas de modifications des processeurs existants. En fait, l'interface du coprocesseur donne aux utilisateurs du microprocesseur la possibilité de développer leurs propres coprocesseurs personnalisés.

L'extensibilité offerte par l'interface coprocesseur est l'une des caractéristiques les plus puissantes de l'architecture de la famille MC68000. Le processeur et le coprocesseur se partagent la maintenance de l'interface, chacun effectuant les tâches pour lesquelles il est le mieux adapté : Le processeur envoie des commandes au coprocesseur, transfère des données et calcule les adresses effectives, tandis que le coprocesseur exécute ses propres fonctions spécialisées, qu'il s'agisse de mathématiques à virgule flottante, de contrôle robotique, de transformées de Fourier, de fonctions graphiques ou de tout autre chose. Alors que le MC68020 offre une gestion microcode implicite pour l'interface du coprocesseur, l'émulation du protocole d'interface permet aux coprocesseurs développés spécifiquement pour le MC68020 d'être utilisés comme coprocesseurs à mémoire (par opposition aux coprocesseurs à processeur) sur les MC68000 et MC68008 ou comme coprocesseurs à mémoire ou à processeur sur les MC68010 et MC68012.

Le MC68020 comprend également la gestion microcode des niveaux d'autorisation d'accès, ce qui permet à un système d'exploitation (en association avec du matériel externe) de gérer une granularité beaucoup plus fine des niveaux d'autorisation que le simple utilisateur ou le superviseur. Cette fonction peut gérer jusqu'à 256 niveaux d'autorisation. Un nouveau dispositif de gestion de la mémoire, le MC68851, fournit le matériel nécessaire pour gérer huit points d'arrêt simultanés (avec un nombre de boucles pouvant atteindre 256) et jusqu'à huit niveaux d'autorisation d'accès.

En outre, le MC68020 dispose d'UAL 32 bits complètes et d'un "décaleur en barillet" 32 bits pour améliorer les performances des instructions arithmétiques, logiques et champ de bit. Un pipeline d'instructions restructuré avec un contrôleur de bus intelligent et découplé permet un haut degré de concurrence dans l'exécution des instructions avec une activité de bus externe.

Conclusions

En dernière analyse, le secret du jeu est la compatibilité. Et le bilan de la compatibilité entre les membres de la famille MC68000 montre que, pour le code utilisateur, tous les membres de la famille ont une compatibilité ascendante à 100% pour le code objet, tandis que le code de niveau superviseur ne nécessite que des changements dans les gestionnaires d'exception de niveau superviseur qui utilisent des informations spécifiques sur les piles de supervision. La compatibilité matérielle est également bonne. En fait, un MC68010 peut être directement inséré dans un socle MC68000, et un MC68020 peut également être utilisé avec la carte d'adaptation appropriée.

La famille MC68000 offre non seulement les hautes performances d'un microprocesseur commercial, mais aussi la compatibilité, protégeant ainsi l'investissement logiciel de l'utilisateur.


[Retour en haut] / [Retour aux articles]