les microprocesseurs 80286/80386 nouvelles architectures pc
Transcription
les microprocesseurs 80286/80386 nouvelles architectures pc
LES MICROPROCESSEURS 80286/80386 NOUVELLES ARCHITECTURES PC RESUME MANUELS INFORMATIQUES MASSON L'explosion de l'IBM PC et de tous ses clones a donné à l'architecture de la famille INTEL 8086 une solide pérennité. On est en effet passé en cinq années du 8086 (0,2 MIPS) au 80386 (4 MIPS) constituant le cœur de microordinateurs dont le prix est resté constant mais dont les performances ont été multipliées par vingt. Si le 8088 est simple, la seconde génération 80286 et 80386 présente des concepts architecturaux beaucoup plus complexes qui n'ont été que peu exploités jusqu'à ce jour. En effet MS/DOS, système d'exploitation attaché à cette architecture n'a pas été sensiblement modifié en cinq ans! Cette situation est préjudiciable aux utilisateurs et le but de cet ouvrage est de montrer ce qui est réellement novateur dans le 80286 et son cadet le 80386. Après un chapitre consacré au matériel, les concepts multitâches, identiques dans les 2 cas, sont longuement exposés. La notion de protection, abordée ensuite, montre dans quelle mesure on dispose, avec ces processus, de systèmes d'exploitation fiables et Multi-Utilisateurs, mettant non seulement en œuvre des mémoires centrales importantes, mais aussi une mémoire virtuelle. Une grande partie de l'ouvrage s’intéresse au développement de logiciels en langage d'assemblage et en langage évolué : Il présente en outre les outils pour concevoir un système statique ou dynamique. Ces notions sont complétées par un exemple de moniteur temps réel utilisant ces concepts. Le dernier chapitre présente le 80386 en insistant sur les progrès que cette puissante unité centrale 32 bits amènera aux architectures futures. TABLE DES MATIERES Contents Chapitre 1 1.1 1.2 1.3 1.4 Chapitre 2 2.1 2.2 2.3 2.4 2.5 2.6 12 INTRODUCTION 15 Architecture standard des familles 8086 Systèmes d'exploitation Environnement multifenêtre Réseaux 17 18 20 21 STRUCTURE MATERIELLE DU 80286 Caractéristiques générales du produit Principaux circuits de la famille 2.2.1 Contrôleur de bus 82288 2.2.2 Accès au MULTIBUS 82289 2.2.3. Générateur d'horloge 82284 2.2.4 Coprocesseur numérique 80287 2.2.5 Boîtiers classiques Architectures système Structure interne du processeur 80286 Interfaces bus 2.5.1 Organisation physique de la mémoire 2.5.2 Opérations d'accès bus 2.5.3 Organisation des interruptions 2.5.4 Utilisation du coprocesseur numérique 80287 Architecture de base du 80286 2.6.1 Segmentation 2.6.2 Types de données manipulées par le 80286 25 25 27 28 28 29 30 31 32 39 42 42 45 46 49 53 53 58 2.6.2 2.6.3 2.6.4 2.6.5 Chapitre 3 3.1 3.2 3.3 3.4 3.5 Chapitre 4 4.1 4.2 4.3 4.4 4.5 Chapitre 5 5.1 5.2 5.3 Types de données manipulées par le 80286 Registres de la machine Modes d'adressage Introduction à la notion de protection 58 59 64 65 LE 80286 EN MODE PROTEGE Gestion de la mémoire 3.1.1 Adressage virtuel protégé 3.1.2 Descripteurs et tables de descripteurs 3.1.3 Registres de gestion de la mémoire Mécanismes de protection 3.2.1 Types de protection 3.2.2 Implémentation des protections 3.2.3 Protection et gestion de la mémoire 3.2.4 Protection et niveaux de privilège 3.2.5 Segments conformant 3.2.6 GATES Gestion des tâches 3.3.1 Table de descripteur d'une tâche : TSS 3.3.2 Descripteur de TSS 3.3.3 Changement de contexte de tâche 3.3.4 Utilisation des TASK GATE 3.3.5 Accès contrôlé au système Interruptions 3.4.1 Interruptions en mode réel 3.4.2 Interruptions en mode virtuel protégé Mémoire virtuelle 3.5.1 Politique de gestion des pages 3.5.2 Gestion des entrées / sorties 67 67 69 71 78 80 81 82 83 83 87 87 92 92 95 96 96 98 98 98 105 114 116 117 PROGRAMMATION DU 80286 Logiciels 80286 4.1.1 Côté applications 4.1.2 Côté système Langage d'assemblage 4.2.1 Définition de segment 4.2.2 Définition des données 4.2.3 Initialisation des registres de base 4.2.4 Directive END 4.2.5 Structuration en procédures 4.2.6 Structures, Records, Macro-instructions Programmation modulaire en langage d'assemblage 4.3.1 Partage des segments 4.3.2 Données et procédures PUBLIC 4.3.3 Appel de l'Assembleur Outils de développement 4.4.1 BUILDER 4.4.2 BINDER 4.4.3 MAPPER 4.4.4 Bibliothécaire LIB286 4.4.5 Gestionnaire d"'overlays" OVL286 Le langage PLM / 286 4.5.1 Un langage système de haut niveau : PLM / 286 4.5.2 Variables et constantes 4.5.3 Structure d'un programme 4.5.4 Opérateurs 4.5.5 Instructions de contrôle 4.5.6 sous-programmes 4.5.7 Variables basées 4.5.8 Programmation modulaire 4.5.9 Programmation système 119 119 119 120 120 123 124 125 126 127 128 128 130 131 132 133 133 139 141 141 142 142 142 143 145 146 148 150 152 154 155 4.5.10 Gestion système 4.5.11 Modes de compilation 4.5.12 Appel du compilateur 156 158 158 SYSTEMES D'EXPLOITATION Système d'exploitation orienté temps réel : iRMX 286 5.1.1 Gestion de la mémoire 5.1.2 Gestion des objets 5.1.3 Gestion des descripteurs 5.1.4 Exceptions 5.1.5 Adjonction de primitives Système d'exploitation orienté développement : XENIX 286 Système d'exploitation sur mesure 5.3.1 Tâches 160 160 161 161 161 162 162 163 164 165 5.4 Chapitre 6 6.1 6.2 6.3 Chapitre 7 7.1 7.2 7.3 7.4 7.5 ANNEXE A ANNEXE B ANNEXE C 5.3.1 Tâches 5.3.2 Niveaux de privilège 5.3.3 Architectures logicielles 5.3.4 Configuration des systèmes Application : ETR_286 : Une boîte à outils 80286 5.4.1 Spécification 5.4.2 Ordonnance des tâches 5.4.3 Descripteur de tâches 5.4.4 Temporisations 5.4.5 Files d'attente de messages 5.4.6 Sémaphores 5.4.7 Evènements 5.4.8 Allocation de mémoire 5.4.9 Gestionnaire des entrées / sorties 5.4.10 Extensions 5.4.11 Exceptions 5.4.12 Utilitaires 5.4.13 Création d'un code absolu 5.4.14 Chargeur binaire 165 168 168 169 171 172 173 174 175 178 179 179 180 181 183 184 184 184 185 ENTREES / SORTIES ET RESEAUX Gestion physique des entrées / sorties 6.1.1 Point de vue matériel 6.1.2 Point de vue logiciel 6.1.3 Réseaux locaux Protocoles de haut niveau OpenNET 6.3.1 Fonctionnement sous iRMX286 6.3.2 Fonctionnement sous XENIX286 6.3.3 PC / NETWORK 187 187 187 188 189 193 193 194 196 196 LE MICROPROCESSEUR 80386 Caractéristiques générales du 80386 7.1.1 Caractéristiques logicielles 7.1.2 Caractéristiques matérielles Structure du 80386 : le point de vue applicatif 7.2.1 Registres généraux, indicateurs 7.2.2 Coprocesseur numérique 7.2.3 Mémoire et adressages Structure du 80386: le point de vue système 7.3.2 Gestion de la mémoire 7.3.3 Mémoire virtuelle et protections 7.3.4 Ruptures de séquence Mémoire cache. 7.4.1 Définition du cache 7.4.2 Critères à prendre en compte 7.4.3 Structure du cache Utilisation d'un 80386 197 197 197 199 200 200 204 204 211 217 220 222 222 223 224 224 228 JEU D'INSTRUCTIONS DU 80286 JEU D'INSTRUCTIONS DU 80386 LISTAGES ETR ETR_286 230 259 263 Glossaire Bibliographie Index 311 313 314 TABLE DES FIGURES 2.1.1 2.2.1 2.2.2 2.2.3 2.2.4 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.4.1 2.4.2 2.5.1 2.5.2 Le 80286 Contrôleur de bus 82288 Arbitreur de bus 82289 Générateur d'horloge 82284 Synoptique du 80287 Système multiprocesseur Bus local et bus système Câblage du MULTIBUS 80286 et son coprocesseur numérique Architecture complexe Structure interne du 80286 Régime pipeline Organisation de la mémoire Transfert de mot désaligné 25 28 29 30 31 32 33 36 37 38 39 41 43 44 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 2.6.6 2.6.7 2.6.8 2.6.9 2.6.10 2.6.11 Transfert de mot désaligné Cycle de lecture du 80286 Table des descripteurs d'interruptions Traitement des interruptions simultanées 8259A contrôlant la broche INTR Architecture du 80287 Registres du 80287 Mémoire segmentée Déplacement ou "offset" Calcul d'adresse en mode réel Mémoire réservée en mode réel Forme d'un sélecteur Implantation physique des données Registres généraux Adressage en mode virtuel protégé Indicateurs et mot de contrôle Modes d'adressage Forme d'un descripteur 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.1.10 3.1.11 3.2.1 3.2.2 3.2.3 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.6 3.4.7 3.4.8 Accès aux données segmentées Format d'un sélecteur Aiguillage par le bit TI Espace adressable et isolation intertâche Descripteur de segment Descripteur système Types de segments Mécanismes logiques de l'adressage virtuel Traduction de l'adresse virtuelle en adresse physique Données communes, non globales Registres de segmentation Descripteur de GATE Gestion de la pile lors d'un CALL GATE Exemples d'appel par CALL GATE Structure de TSS Gestion des TSS pour deux tâches Descripteur de TSS TASK GATE Commutation par TASK GATE 8259A contrôlant la broche INTR Prise en compte du numéro d'interruption Différentes causes d'interruption Pile pendant une séquence d'interruption Table des descripteurs d'interruption Mémoire cache et registre IDTR Accès au descripteur d'interruption TRAP ou INTERRUPT GATE 44 45 47 47 48 51 52 54 55 56 56 58 59 60 62 63 64 66 67 70 71 72 73 73 74 75 76 78 79 87 90 91 93 94 95 97 97 99 101 102 103 105 106 107 109 3.4.9 Pile au cours d'un déroutement en erreur 3.4.10 Imbrication de tâches 3.5.1 Mémoire virtuelle 110 113 115 4.2.1 4.3.1 4.3.2 4.4.1 4.4.2 4.5.1 4.5.2 4.5.3 4.5.4 Un programme simple Modèle restreint Modèle étendu Synoptique du BUILDER Synoptique du BINDER Structure d'un programme PLM/286 Squelette d'un sous programme Variables basées Définition et utilisation des PUBLIC / EXTERNAL 123 129 130 134 140 146 151 153 155 5.1.1 5.2.1 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.4.1 5.4.2 5.4.3 5.4.4 Adjonction de primitives à iRMX286 Organisation de XENIX/286 Séparation des données intertâches Partage des données intertâches Structure à quatre niveaux de privilège Construire un système statique Construire un système dynamique Schéma de principe ETR_286 Gestion des temporisations File d'attente des messages Entrées/sorties ETR_286 162 163 166 167 169 170 171 175 177 178 182 6.1.1 6.1.2 6.2.1 Connexion d'un 82588 Trame 82588 Protocoles OSI/CCITT 189 190 192 6.2.1 6.3.1 6.3.2 Protocoles OSI/CCITT iNA960 sous iRMX286 Arborescences OPEN NET 192 194 195 7.2.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3.1 7.3.2 7.3.3 7.3.4 7.3.5 7.3.6 7.3.7 7.4.1 7.4.2 7.4.3 Registres généraux du 80386 Registre des indicateurs Traduction de l'adresse logique Registres de segments Résumé des modes d'adressage Champs d'un descripteur Descripteur de segment système Registres de descripteurs de segment Principaux champs du TSS Registres de contrôle Principes de traduction d'adresse Mécanisme de pagination Cache de 64 KO à associativité directe Matériel du cache direct Logique du cache à double chemin 201 203 206 207 208 213 213 214 215 216 218 219 225 226 226 CONTENTS Chapter 1 Introduction to new architecture concepts for 80286 and 80386. New markets and motivation to use the 80286. Chapter 2 Description of 80286 hardware and introduction to the companion components. such as bus arbiter, mathematical co-processor, latches Chapter 3 Protected Virtual Address Mode. Introduction to the basic features of protection: Tables GDT, IDT, LDT; Tasking; Interruptions; Virtual memory Chapter 4 Programming the 80286. Main tools for programming: ASM286, BUILDER for creating the main tables, BINDER for linking programs. A last paragraph describes the PLM/286the major system programming language Chapter 5 Operating systems. A brief note about iRMX286 and XENIX/286 is followed by the concepts of custom operating systems build around the 80286. The last paragraph is a complete example of how to write a small real time monitor (ETR_286) for iAPX286. Chapter 6 Input output and networks. Presentation of the concepts of networking with. modern microprocessors Chapter 7 80386. This last chapter presents the new INTEL processor: the 80386. The major sections are devoted to new concepts like paging, virtual memory, cache memory The book ends with the 80286 and 80386 instruction set and with a selection of ETR_286 listings. A glossary, bibliography and index is provided TOP