NOUVELLES ARCHITECTURES D'ORDINATEURS PROCESSEURS ET SYSTEMES D'EXPLOITATION PIERRE VINCENT RESUME Ce livre est particulièrement destiné aux étudiants en informatique se préparant à des activités de conception de systèmes. Les informaticiens professionnels (ingénieurs de conception de matériel, architectes de systèmes, responsables de plan informatique) trouveront dans cet ouvrage une ouverture vers les nouvelles perspectives de développement des ordinateurs. La première partie de l'ouvrage aborde les architectures monoprocesseur avec leur support matériel (bus, mémoire) et la manière de les gérer. L'accent est mis sur les avantages de techniques récentes telles que les processeurs RISC, sur des exemples de gestion mémoire performante et sur des machines orientées intelligence artificielle comme la Symbolics. Dans une deuxième partie, l'auteur s'intéresse aux architectures parallèles. Le Cray fournit l'exemple d'un super-ordinateur à base de multiprocesseurs. Une présentation approfondie du Transputer et du langage Occam donnent ensuite un aperçu précis de systèmes s'appuyant sur des interconnexions entre processeurs. TABLE DES MATIERES Introduction 19 Architectures monoprocesseurs - Modèle de Von Neumann - Extensions du modèle de Von Neumann - Evolutions - Différents types de composants - Processeur - Bus - Mémoires - Gestion mémoire - Mécanismes divers - Décomposition en couches d'un ordinateur 19 19 21 21 22 24 24 24 24 25 25 Architectures parallèles - Architectures à mémoire partagée - Support matériel du parallélisme - Exploitation du parallélisme - Environnements à mémoire distribuée 27 27 28 29 29 PREMIERE PARTIE ENVIRONNEMENT MONOPROCESSEUR Chapitre 1 PROCESSEUR Architecture des microprocesseurs - Bases matérielles de conception - Stratégie d'accélération des performances - Améliorations de conception - Amélioration de l'utilisation 33 33 33 34 34 34 - Amélioration de l'utilisation - Possibilités techniques - Référence sur composant - Référence hors composant - Problèmes introduits par la vitesse d'horloge - Mesures de performances - Mécanismes d'accélération des performances - Caches - Pipe-fine instructions - Vectorisation - Registres - Modes d'adressage - Mécanismes évolués implémentés - Gestion mémoire - Jeu d'instructions - Machines à pile - Machines à registres - Gestion d'objets de type évolué - Optimisation à la compilation - Utilisation des constantes - Optimisation au niveau instructions - Optimisation au niveau boucle - Fusion de boucles - Coprocesseurs - Sécurité d'un système - Interférence entre les différents mécanismes - Environnement multiprocesseur - Possibilités de recherche d'erreurs - Tendances architecturales - Emergence de standards - Architectures dédiées - Architecture générale 34 35 35 35 36 36 39 39 39 39 41 42 43 45 45 45 48 51 52 52 53 54 54 55 56 57 57 58 59 59 60 Processeur à jeu d'instructions réduit - Instructions implantées sur un processeur - Jeu d'instructions réduit - Conception du jeu d'instructions - Avantages d'un jeu d'instructions simple - Jeu d'instructions et compilateur - Efficacité d'un pipe-line - Utilisation d'un cache - Cache données - Cache instructions - Saut différé - Chargement différé - Fenêtre de registres - Jeu d'instructions réduit et mémoire virtuelle - Jeu d'instructions réduit et temps réel - Processeur à jeu d'instructions réduit et technologie 60 60 62 62 62 64 65 65 65 65 66 67 68 69 70 70 Architecture et système Unix sur 68020 - Présentation d'Unix et du 68020 - Vue d'ensemble de l'architecture du 68020 - Vue d'ensemble de l'architecture Unix - Fonctions d'Unix - Initialisation du système - Gestion des processus - Appels systèmes - Sections critiques - Changement de contexte - Niveaux d'interruptions - Langage C 70 70 71 74 77 77 77 77 78 78 78 79 - Extension automatique de pile - Appels systèmes et librairies Chapitre 2 BUS 80 80 81 Principe des bus - Rôle d'un bus - Protocole - Protocole synchrone - Protocole asynchrone - Différents niveaux de couplage - Système fortement couplé 81 81 82 83 83 85 85 Bus partagés 86 Bus partagés - Méthodes d'arbitrage centralisées - Méthodes d'arbitrage décentralisées - Avantages-inconvénients des différentes méthodes - Conclusion 86 86 89 90 91 Standards de bus - Caractéristiques matérielles d'un bus - Norme Multibus 2 - Aspect matériel - Caractéristiques principales - Bus global - Bus local - Différents cycles de bus - Echanges de messages dans l'architecture Multibus 2 - Interruptions sur Multibus 2 - Numéro des modules - Centralisation sur Multibus 2 - Liaison série dans Multibus 2 - Norme VME - Aspect matériel - Caractéristiques principales - Cycles bus - Centralisation dans VME - Bus série - Comparaison VME-Multibus 2 - Points communs . - Multiplexage ou non - Espace d'adressage - Echanges synchrones ou asynchrones - Accès au bus et arbitrage - Logique d'arbitrage - Autres standards 92 92 92 92 92 93 93 93 96 97 97 97 97 98 98 98 98 100 100 101 101 102 102 102 103 103 103 Chapitre 3 105 MEMOIRE PHYSIQUE ET CACHES Différents types de mémoires - Mémoires dynamiques - Temps d'accès et temps de cycle - Différents cycles d'accès mémoire - Evolution de la capacité - Mémoires statiques - Organisation des bancs mémoire - Mémoires associatives - Mémoire associative et système - Principe de fonctionnement des mémoires associatives 105 105 106 107 110 110 110 112 112 112 Caches - Caches physiques - Raison d'être des caches - Algorithme de placement - Algorithme de remplacement - Invalidation du cache - Gestion des écritures dans le cache 114 114 114 114 118 118 119 - Cohérence du cache en environnement multiprocesseur - Cohérence en cas d'écriture différée - Bloc 119 120 122 - Eclatement de caches - Programmation du cache - Cache interne ou externe - Cache interne du 68020 - Mécanisme de gestion matériel du cache du NS32532 - Cache logique - Cache logique du système Unix - Conclusion 123 123 125 125 128 128 128 131 Chapitre 4 UTILISATION DE LA MEMOIRE Gestion mémoire - Mécanisme de traduction d'adresse - Traduction par table - Traduction par registres - Niveaux de traduction - Différents mécanismes de traduction d'adresse - Adressage direct 133 133 133 134 135 135 135 136 - Adressage direct - Adressage associatif - Adressage mixte - Support matériel du mécanisme de mémoire virtuelle - Reconnaissance du défaut de page ou segment - "Swapping" et pagination . - Informations relatives au placement et au remplacement - Reprise d'instruction en cas de défaut de page - Techniques de protection et sécurité - Pagination - Principe de la pagination - Choix de la taille d'une page - Problèmes de cohérence - Algorithmes de remplacement: stratégies de changement de page - Problèmes liés à l'utilisation de la pagination - Segmentation - Principe de la segmentation - Mise en oeuvre de la segmentation - Mécanisme mixte employant la pagination et la segmentation - Mécanisme de base et algorithme de gestion mémoire - Partage de zones mémoires entre utilisateurs différents - Mémoire virtuelle et cache - Cache adressé physiquement - Cache adressé logiquement - Entrées-sorties et gestion mémoire 136 137 137 137 137 138 138 139 140 141 141 143 144 144 145 145 145 147 148 149 150 150 150 152 152 Exemples de gestion mémoire 154 Gestion mémoire au niveau matériel - Gestion mémoire du Vax 780 - Table des pages inverses du PC/RT - Gestion mémoire au niveau système - Gestion mémoire sous le système "Unix" - Ejection d'un processus - Allocation de l'espace de "swap" - Régions - Zones mémoires partagées - Structure de données employées pour gérer la demande de page - Entrées-sorties directes - Processus de détection des pages inutilisées - Gérant de validité - Gestion mémoire de 4.2 BSD - Demande de page - Ejection de page - Création d'un processus fils - Librairies partagées - Code en zone de débordement 154 154 156 157 157 158 158 158 159 161 166 166 167 168 168 169 169 170 170 - Environnement MACH : processus et tâches - Gestion mémoire sous VMS - Pagination - Swapping 170 171 171 172 - Le 80386 - Principes généraux de fonctionnement - Segmentation - Pagination - Segmentation et pagination combinés - Privilèges - Guichets - Multitâche - Entrées-sorties 172 172 174 175 175 175 177 177 178 Hiérarchie mémoire - Raison d'être d'une hiérarchie mémoire - Gestion de la hiérarchie mémoire - Méthode de lecture - Dimensionnement - Coût et temps d'accès - Localité des informations - Espace d'adressage unifié - Analogie entre les fichiers et les processus - Différents espaces d'adressage du PC/RT - Adressage d'un fichier dans l'environnement 4.2 179 179 180 181 181 182 182 184 185 187 188 Chapitre 5 189 MACHINES DE NOUVELLE GENERATION - Environnement symbolique - Mémoire typée - Principe du typage en mémoire - Avantage du typage en mémoire - Désavantages d'une architecture typée - Méthode intermédiaire - Récupération mémoire - Algorithmes classiques - Marquage et balayage - Comptage de références - Problèmes des algorithmes classiques - Algorithmes modernes - Algorithme de Baker - Récupération par génération Architectures orientées intelligence artificielle: l'exemple de la Symbolics - Référence des objets et des données - Stockage en mémoire de la représentation d'un objet - Motivations de l'architecture de données - Instructions - Architecture du processeur de la Symbolics - Buffer de pile - Avantages du buffer de pile - Pipe-line - Exemple : exécution d'une addition - Gestion mémoire - Récupération mémoire sur Symbolics - Localité des données - Localité des références - Interruption adressage de l'ancien espace - Différentes classes de stockage d'un objet - Tables des pages - Collaboration entre le récupérateur et le gérant de mémoire - Processeur LISP 189 189 189 190 190 190 191 191 191 191 192 193 193 193 194 194 195 195 196 196 196 197 197 197 197 198 199 199 199 199 200 201 201 DEUXIEME PARTIE ENVIRONNEMENT MULTIPROCESSEUR Chapitre 6 PARALLELISME ET ARCHITECTURE Architectures parallèles - Raison d'être du parallélisme - Classifications - Classification de Flynn - Caractéristiques particulières du modèle SIMD et du modèle MIMD - Classification selon le pilotage des traitements - Différentes formes d'algorithmes et types de données échangées - Axes de développement du parallélisme - Parallélisation explicite ou implicite - Granularité du parallélisme - Interconnexion des processeurs - Support d'échange - Echange de données: mémoire partagée ou messages ? - Mémoire partagée - Messages - Echanges synchrones ou asynchrones - Architecture hybride - Différents types de machines - Super-ordinateurs - Multiprocesseurs - Multi-ordinateurs - Mise en oeuvre logicielle du parallélisme - Fonctions de mise en oeuvre du parallélisme - Synchronisation . - Compilateurs assurant une vectorisation automatique - Algorithmes parallèles ou distribués - Parallélisme et système - Répartition des processus - Unix et répartition - Analyse des performances - Degré d'accélération des performances - Loi de Minsky . - Loi d'Amdhal 205 205 205 205 205 206 206 207 208 208 209 210 212 213 213 214 214 214 214 214 214 216 218 218 218 219 219 219 221 221 221 221 222 222 Réseaux d'interconnexion mémoire - Utilisation des réseaux d'interconnexion - Caractéristiques d'un réseau d'interconnexion mémoire - Elément de base - Mélange parfait - Réseau oméga - Différents types d'accès - Placement des données - Réseaux d'interconnexion et mémoire virtuelle 222 222 223 224 225 226 227 227 227 Traitement vectoriel - Principe d'une opération vectorielle - Différents types de processeurs vectoriels - Instruction vectorielle - Instructions spéciales - Chaînage d'unités fonctionnelles - Différentes améliorations des traitements vectoriels 228 228 228 228 228 229 229 Pipe-line - Opérations exécutables par un pipe-line - Opérations exécutables en même temps par un pipe-fine - Pipe-line scalaire ou vecteur - Problèmes d'un pipe-line - Verrouillage de pipe-line et compilateur 230 231 231 231 231 231 Chapitre 7 SUPER-ORDINATEURS VECTORIELS Architecture du Cray X-MP - Mémoire centrale du Cray X-MP - Entrées-sorties - Périphérique mémoire - Système d'entrées-sorties - Processeur 233 233 233 235 235 236 236 - Unité d'instructions - Registres - Unités fonctionnelles - Unité d'instruction - Communications inter-processeurs - Hiérarchie mémoire du Cray 236 238 239 241 242 242 - Résolution des conflits mémoires du Cray : - Résolution de conflits - Conflits liés - Multitâche sur Cray X-MP - Avantage du traitement vectoriel - Rendement du processeur - Autres développements - Unix sur Cray - Système de gestion de fichiers - Partitions disque - Entrées-sorties asynchrones - Création d'un processus 242 243 243 244 245 246 247 247 247 248 248 248 Parallélisation de programmes - Dépendance de données : - Dépendance vraie - Antidépendance - Dépendance de sortie - Dépendance des données dans les boucles - Relation d'antidépendance dans une boucle - Génération de code - Vectorisation de boucle - Parallélisation de boucle - Eclatement de haut-niveau - Vectorisation et parallélisation - Assignation unique - Reconnaissance des variables d'induction - Interblocage de pipe-line - Détection du parallélisme avec une matrice d'incidence - Mode d'opération 249 249 249 249 250 250 251 251 252 252 253 254 254 254 254 255 255 Ordonnancement dynamique d'instructions - Lancement dynamique des instructions - Processeur utilisé - Ordonnancement statique ou dynamique des instructions - Algorithme de Tomasulo 256 256 256 257 260 - Algorithme de Tomasulo - Accès mémoire - Envoi d'une instruction à une unité fonctionnelle - Préparation d'une nouvelle instruction - Autorisation d'exécution d'une instruction - Début d'exécution d'une instruction - Problème d'interblocage - Terminaison d'une instruction - Mise en oeuvre - Algorithme de Thornton - Accélération introduite par l'ordonnancement dynamique 260 260 261 262 262 262 262 263 263 263 264 Architecture à flot de données - Principe des machines à flot de données - Structure d'une architecture à flot de données - Différents modèles à flot de données - Machine à flot de données statique - Machine à flot de données dynamique - Mécanismes de base nécessaires au support du flot de données - Eléments dépendants de l'architecture à flot de données - Implémentation des mécanismes de base - Traitement d'un nœud - Structures de données employées dans le modèle à flot de données 265 265 267 267 267 269 269 270 270 271 271 Principe d'un processeur à instructions longue - Machines à instructions longues et Unix 272 272 - Taille du programme exécutable 273 Chapitre 8 MULTI-ORDINATEURS ET APPLICATIONS - Interconnexion de processeurs - Relier des sous-ensembles : du bus aux liaisons dédiées - Différentes caractéristiques d'une topologie de processeurs - Hypercube - Différentes règles concernant les hyper-cubes - Propriétés géométriques - Propriétés liées à la numérotation - Placement de processus - Processeurs virtuels 275 275 275 276 277 278 278 279 279 280 Architecture du Transputer - Eléments matériels du Transputer - Liens . - Gestion de processus intégrée - Interruption - Utilisation des différents registres - Pile d'évaluation - Espace de travail - Mémoire sur le composant - Gestion de la concurrence - Communications - Implémentation des canaux - Gestion des processus - Instructions de gestion de la concurrence - Instructions de base - Instructions courantes - Gestion de l'alternative - Variables locales - Variables non locales et structure de données - Procédure - Transfert de processus - Conclusion - Mémoire partagée - Modèle à flot de données généralisé et Transputer 281 281 281 282 283 283 283 284 284 284 285 285 287 289 289 289 290 291 291 291 291 292 292 293 Langage Occam - Présentation d'Occam - Jeu d'instructions - Constructeurs d'Occam - Instructions d'échange - Informations échangées par canal - Tableaux de taille variable - Règles d'utilisation des canaux - Autres instructions - Procédures - Placement des processus sur les processeurs 293 293 294 294 294 297 300 300 301 301 301 - Placement des processus sur les processeurs - Gestion des processus en Occam - Comparaison Ada et Occam - Analogies Ada-Occam - Différences Ada-Occam Transputer et algorithmes parallèles - Interconnexion des cartes Transputer - Parallélisme sur Transputer - Contraintes matérielles liées au parallélisme dans Occam - Environnement de programmation Occam - Algorithmes distribués et programmation - Multiplication de matrices: - Principe employé - Découpage au niveau calcul d'un élément - Flot de données - Données échangées - Différents canaux employés - Placement sur les différents processeurs - Algorithme du serveur - Algorithmes exécutés sur le processeur de traitement - Evaluation des performances - Nombre d'opérations - Durée des échanges - Débit du serveur de pipe-line - Problème de la répartition de charge - Routage 301 301 302 302 303 304 305 306 306 307 307 309 309 310 311 311 311 313 315 315 318 318 318 319 319 320 - Principe du routage - Configuration Modèle de routage et de traitement 320 321 322 Conclusion 325 Bibliographie 329 Glossaire TOP 333