La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

INF 2500 : Architecture des ordinateurs. Chapitre 1 : Introduction.

Présentations similaires


Présentation au sujet: "INF 2500 : Architecture des ordinateurs. Chapitre 1 : Introduction."— Transcription de la présentation:

1 INF 2500 : Architecture des ordinateurs

2 Chapitre 1 : Introduction

3 1.1 Quelques faits Début 1970 : les ordinateurs étaient totalement dépendants de la technologie des circuits intégrés (C.I). Milieu des années 70 : Les performances augmentent de 25% à 30% par année. Fin des années 70 : Larrivée des microprocesseurs augmente les taux de performances de 35 % par année. Laugmentation du nombre dordinateurs provoque la disparition du langage machine (Assembly language) au profit dun langage orienté-objet (Object oriented programming) ainsi que la création de systèmes dexploitation standards (ex: UNIX).

4 1.2 Lordinateur moderne Carte Mère (Motherboard) Constitue le tronc commun de larchitecture. Tous les périphériques lui sont directement reliés. Malgré certaines normes ou certaines technologies spécifique, la plus part des architectures possèdent les mêmes composantes fondamentales (processeurs, mémoires, contrôleurs…).

5 1.2 Lordinateur moderne (suite) Microprocesseur (CPU) Unité centrale de traitement (UCT). Exécute lensemble des instructions à partir dun langage de bas niveau (DLX,Z88,8085…). Est étroitement relié à larchitecture. Possède une hiérarchie de mémoire pour conserver les instructions (cache, cache L1, cache L2).

6 1.2 Lordinateur moderne (suite) Mémoire vive (RAM Memory) Permet de conserver linformation à court terme (machine sous tension). Leur capacité et rapidité sont en constante évolution.

7 1.2 Lordinateur moderne (suite) Les périphériques Permettent linteraction entre la machine et lusager (entrée, sortie et stockage des données). Sont reliés à la carte mère via divers connecteurs spécialisés (port série, port AGP, port parallèle, bus ISA, bus PCI…). Exemple : disque dur, souris, clavier, carte graphique, carte de son, moniteur.

8 1.3 Le rôle dun concepteur dordinateur Déterminer quels attributs sont importants pour une nouvelle machine et concevoir ensuite une machine pour obtenir la performance maximale tout en respectant les contraintes de coût Cela comporte plusieurs aspects: Design dun répertoire dinstruction rapide et optimal Etude de lorganisation fonctionnelle: ce dont on a besoin pour que le tout soit en mesure dinteragir (un processeur sans bus de communication est inutile). Design logique Réalisation

9 1.3 Le rôle dun concepteur dordinateur (suite) Loptimisation dun design présent requiert une technologie en constante évolution aussi bien pour les systèmes dexploitation que pour les compilateurs que la logique. Le jeu dinstruction utilisé dans les architectures modernes constitue la frontière entre le logiciel (software) et le matériel (hardware). En entend par Architecture, le regroupement des trois apects de la conception des ordinateurs : Larchitecture du jeu dinstruction Lorganisation La réalisation matérielle

10 1.3 Le rôle dun concepteur dordinateur (suite) Lorganisation inclut les aspects de haut niveau de la conception comme le système de mémorisation, la structure de bus et lunité centrale de traitement (UCT) qui gère larithmétique, la logique, les branchements et les transferts de données. Loptimisation du design choisi peut se faire à laide dapplications et de programmes qui sont spécifiques au domaine à optimiser (débit mémoire, jeux dinstructions…) Loptimisation dune architecture ne passe pas nécessairement par de hautes performances matérielle (haut débit, haute vitesse…). Il faut également considérer le temps de mise en marché et le coût final (un processeur ultra performant qui coût très cher nest pas optimal)

11 1.4 Lévolution des technologies et de lutilisation des ordinateurs Evolution de lutilisation des ordinateurs. Laugmentation des logiciels force laugmentation de la quantité de mémoire à raison de 1,5 à 2 par année. Ceci implique une croissance du nombre de bits dadresse au rythme de 0.5 à 1 par année. Cette augmentation entraîne également la disparition du langage assembleur pour des langages de haut niveau. Les compilateurs ont donc eux aussi évolués en incluant de nouvelles fonctions et en augmentant lefficacité dexécution des programmes. Désormais, les programmeurs de compilateurs et les concepteurs dordinateurs doivent travailler ensemble.

12 1.4 Lévolution des technologies et de lutilisation des ordinateurs (suite) Evolution des technologies dimplémentation. La technologie des circuits intégrés logiques. La densité des transistors (nombre de transistors par unité de surface) croit denviron 50% par an. La taille des puces quant à elles croient denviron 10% à 25% par année. En somme, la combinaison des deux nous donne une croissance en nombre de transistors entre 60% et 80% par an. La vitesse des composants croit aussi vite. Les temps de cycle quand à eux névoluent pas vraiment étant donné la faible évolution de la technologie de métalisation utilisée dans les interconnexions. Les DRAM en semi-conducteurs. La densité croit denviron 60% par année et quadruple en trois ans. Le temps de cycle diminue lentement, soit un tiers en 10 ans.

13 1.4 Lévolution des technologies et de lutilisation des ordinateurs (suite) Evolution des technologies dimplémentation (suite). La technologie des disques magnétiques La densité augmente de 50% par année Le temps daccès croit dun tiers en 10 ans

14 1.5 Le coût et lévolution du coût Le coût dun composant dordinateur décroît avec le temps. Lévolution du rendement (nombre de produits fabriqués ayant passés les tests par rapport au nombre initial) contribue à la baisse des coûts. Un rendement double entraînera inévitablement un coût diminué de moitié (cest la maturité du produit).

15 1.5 Le coût et lévolution du coût (suite) Le coût des circuits intégrés (suite).

16 1.5 Le coût et lévolution du coût (suite) Le coût des circuits intégrés (suite). La distribution du coût dans un système (approximatif). DRAM 36 % Microprocesseur 49% Carte vidéo 14% Moniteur 22% Disque dur 7%

17 1.5 Le coût et lévolution du coût (suite) Coût et prix. Le prix que lusager paye, est différent du coût du système. Une modification de 1000$ au niveau dun coût, se répercute en une différence de 4000$ à 5000$ au niveau du prix. On distingue: Les coûts directs qui sont directement liés avec la fabrication du produit (ajoutent environ 20% à 40% au coût des composants). La marge brute qui est un surcoût indirect du produit et qui englobe la recherche et développement, la publicité, le réseau commercial, la maintenance des équipements de fabrication, les locations de locaux, les coûts de financement, les profits avant impôts et les taxes (ce coût ajoute environ 20% à 55% au coût des composants).

18 1.5 Le coût et lévolution du coût (suite) La stratégie est donc la baisse de la marge brute, ce qui augmente le volume et conduit donc à une baisse des prix. Le prix catalogue est différent du prix de vente moyen car les compagnies abaissent ce dernier lors dun volume de vente suffisant. Ainsi le prix de vente moyen = 50% à 75% du prix de catalogue.

19 1.6 Mesurer et publier les performances Il existe plusieurs mesures de performance, elles sont souvent prises à témoin dans des spécifications techniques mais ne peuvent être interprétées séparément car elles ne reflètent quun seul aspect à la fois. Supposons deux systèmes A et B distincts en performance. A et n fois rapide que B si : On test de plus en plus les performances à laide de programmes test.

20 1.6 Mesurer et publier les performances Temps dexécution total (Total execution time) Méthode simple et rapide pour comparer les performances relatives. Temps dexécution pondéré.(Weighted execution time) Si la répartition des programmes est inégale dans la charge de travail, on introduit alors une pondération à chacun (la somme de celles-ci doit être égale à 1).

21 1.6 Mesurer et publier les performances (suite) Temps dexécution pondéré (suite). Temps dexécution normalisé (Normalized execution time) Il existe une autre méthode pour une charge de travail composée dune répartition inégale de programmes. On normalise les temps dexécution par rapport à une machine de référence et considérer les moyennes des temps dexécution normalisés.

22 1.6 Mesurer et publier les performances (suite) Temps dexécution normalisé (suite).

23 1.7 Les principes quantitatifs de la conception des ordinateurs Principe fondamental : favoriser le cas fréquent au détriment du cas rare. Ex: Une addition de deux nombres dans lUC a plus de chance de ne pas provoquer un dépassement en mémoire. Il est donc préférable de favoriser le cas où il ny a pas de dépassement. Soit int X,Y,Z, sachant quun entier est représenté sur 16 bits (variable selon larchitecture). Le plus grand nombre pouvant être représenté sur 32 bits : 2^(16)-1= Ainsi si le résultat X+Y contient une valeur supérieur à 65535, il a dépassement de mémoire. Ce cas est cependant peu probable si la conception à été faite correctement. Loi dAmdahl. Permet dévaluer le gain de performance obtenu par lamélioration dun composant dun ordinateur.

24 1.7 Les principes quantitatifs de la conception des ordinateurs (suite) Loi dAmdahl. Permet dévaluer le gain de performance obtenu par lamélioration dun composant dun ordinateur.

25 1.7 Les principes quantitatifs de la conception des ordinateurs (suite) Léquation de performance UC. Les performances de lunité centrale dépendent du temps de cycle, du nombre de cycles par instructions (CPI) et du nombre dinstructions.

26 1.7 Les principes quantitatifs de la conception des ordinateurs (suite) Léquation de performance UC (suite).

27 1.7 Les principes quantitatifs de la conception des ordinateurs (suite) Mesurer les composantes de la performance de lUC. Construire et utiliser des outils pour mesurer les aspects dun design est constitue une grande partie du travail dun designer. Il est difficile dévaluer le temps de cycle dun design qui nest pas complété. En revanche le nombre dinstructions est plus facile à déterminer à laide du compilateur. Le CPI quant à lui est également difficile à estimer car il dépend de lorganisation détaillée du Processeur et du flux dinstruction. Pour déterminer ce nombre, il convient de séparer les composantes mémoires et processeur. Pour chaque instruction i, on a : La vrai mesure de performance pour un ordinateur reste le temps.

28 1.7 Les principes quantitatifs de la conception des ordinateurs (suite) Localité de références. Une des plus importantes propriétés des programmes. Les programmes ont tendance à réutiliser les données et les instructions quils ont utilisées récemment. On peut donc prédire avec une précision raisonnable quelles instructions et quelles données un programme utilisera dans le futur proche en se basant sur ses accès dans son passé proche. Deux types de localité pour les données existent: Localité temporelle (éléments accédés dans un passé proche le seront de nouveau dans un futur proche). Localité spatiale (éléments dont les adresses sont proches les unes des autres auront tendance à être référencés dans un temps rappoché).

29 1.8 Concept de la hiérarchie mémoire Axione simple : le plus petit est le plus rapide La propagation dun signal est une cause de nombreux délais Dans plusieurs systèmes, on observe que les plus petites mémoires sont aussi les plus rapides Cette lois nest pas valable lorsque lon considère la consommation de puissance (ECC vs CMOS ou SRAM vs DRAM) Dans les systèmes courant, plus la mémoire est grandes et lente, plus elle se trouve éloignée du Processeur:

30 1.8 Concept de la hiérarchie mémoire (suite) La cache est une petite mémoire rapide, proche de lUC qui contient les données et les instructions les plus récemment accédées. Si lUC trouve linformation en cache : succès cache (cache hit) Si lUC ne trouve pas linformation en cache : défaut de cache (cache miss) Le temps requis pour les défauts de cache dépend de la latence mémoire et du débit mémoire (mo/s) Certaines informations (données, code …) résident sur le disque dur. Pour y accéder lespace dadresse est coupé en blocs de taille fixe. En mémoire vive, lespace dadresse est coupé en blocs de taille variable que lon appel page

31 1.8 Concept de la hiérarchie mémoire (suite) Lorsque le CPU référence une information dans une page (en mémoire vive) qui nest pas présente, on a un défaut de page (page fault). La page contenant linformation sur le disque est envoyée en mémoire vive. Les défauts de page étant très coûteux en temps, ces derniers sont généralement pris en charge par le côté logiciel (Système dexploitation) pour éviter de monopoliser et même bloquer le processeur. A un instant donné, une donnée réside en mémoire vive (RAM) ou sur le disque.

32 1.8 Concept de la hiérarchie mémoire (suite) Lorsque le CPU référence une information dans une page (en mémoire vive) qui nest pas présente, on a un défaut de page (page fault). La page contenant linformation sur le disque est envoyée en mémoire vive.

33 1.8 Concept de la hiérarchie mémoire (suite) Performance des caches

34 Chapitre 2 : Jeu dinstructions, principes et exemples

35 2.1 La classification des jeux dinstructions Définition dun jeu dinstruction: Portion visible de la machine pour les programmeurs ou les créateurs de compilateurs La principale différence entre les différents jeux dinstruction réside dans le type interne de stockage dans le CPU Sous forme dune pile (stack) Sous forme dun accumulateur (accumulator) Sous forme de registres (registers) Registre Mémoire (registers memory) Chargement Rangement ou registre registre (resister register)

36 2.1 La classification des jeux dinstructions (suite) Après les années 80, lensemble des systèmes ont été conçus suivant larchitecture chargement rangement car: Un registre est plus rapide quune mémoire. Il est plus facile et plus efficace de manipuler des registres pour un compilateur. Contrairement au système de pile, une expression avec lemplois de registres peut sévaluer dans nimporte quel ordre (a*b)-(c*d)- (e*f). Ce système réduit le trafic mémoire vu que les registres peuvent contenir des variables.

37 2.1 La classification des jeux dinstructions (suite) Le nombre de registres à utiliser dépend de leur usage par le compilateur: Evaluer des expression Passer des paramètres Conserver des variables

38 2.2 Ladressage mémoire La représentation de linformation en informatique se fait sur une base binaire (0 ou 1). Lunité de stockage est le bit. Ce stockage de linformation nécessite plusieurs bits que lon classe suivant léchelle suivante (celle-ci peut varier selon larchitecture). 1 octet (byte) = 8 bits 1 demi mot (half word) = 16 bits 1 mot (word) = 32 bits 1 double mot (double word) = 64 bits Il existe deux conventions pour lordre des octets: Little Endian : le bit le moins significatif se trouve à droite et le plus significatif à gauche dans un nombre binaire. Big Endian : le bit le moins significatif se trouve à gauche et le plus significatif à droite dans un nombre binaire.

39 2.2 Ladressage mémoire (suite) Modes dadressage (addressing modes) Registre (Registers) Immédiat ou littéral (Immediate) (pour les constantes) Déplacement (Displacement)(pour les variables) Indirect par registre (Register referred) Indexé (Indexed) Direct ou absolu (Direct or absolute) Indirect via mémoire (Memory indirect) Auto-Incrémenté (Autoincrement) Auto-décrémenté (Autodecrement) Indexé étendu (Scaled) Malgré leur grand nombre les plus utilisés sont les modes déplacement, immédiat et indirect par registre (75% à 99% des modes utilisés dans les programmes).

40 2.2 Ladressage mémoire (suite) Pour ce qui est du nombre de bits pour le champ de déplacement, il convient davoir 12 à 16 bits et de 8 à 16 bits pour la taille du champ immédiat.

41 2.3 Les opérations dans le jeu dinstructions Il existe différents types dopérateurs: Arithmétique et logique (ALU) (addition,soustraction) Transfert de données (Load and Store) (chargements et rangements) Contrôle (Branches and Jumps)(branchement, saut, appel de procédure) Système (appel au système dexploitation) Flottant (Opérations flottantes : addition, multiplication) Décimal (Addition décimal, multiplication décimale, conversion décimal vers caractère) Chaînes (Transfert de chaînes, comparaisonde chaînes, recherche de chaînes) Graphique (Opérations sur pixels, opérations de compression/décompression)

42 2.3 Les opérations dans le jeu dinstructions (suite) Les instructions de contrôle Le branchement conditionnel (conditionnal branch) (très utilisés) Les sauts (jumps) (souvent utilisés) Les appels de procédure (procedure calls) (moins utilisés) Les retours de procédures (procedure returns) (moins utilisés) Les instructions les plus utilisées: 1) Chargement (22% des instructions totales exécutées) 2) Branchements conditionnels (20% des instructions totales exécutées) 3) Comparaisons (16% des instructions totales exécutées) 4) Rangement (12% des instructions totales exécutées) 5) Additions (8% des instructions totales exécutées)

43 2.3 Les opérations dans le jeu dinstructions (suite) Les sauts indirects sont utiles lorsque ladresse de destination est inconnue à la compilation. Certaines structures de plus haut niveaux rencontrent justement ce besoin: Les opération de case et switch dans les langages de haut niveau. Les fonctions virtuelles, les méthodes. Les pointeurs de fonction. Les librairies dynamiques (DLLs) Les branchements et les sauts conditionnels, sont souvent optimisés au niveau des architectures en raison de la grande fréquence des tests simples (x=0?, x

44 2.4 Type et taille des opérandes Pour connaître le type dune opérande, on peut regarder son codage dans le code opération (opcode). Il existe plusieurs types dopérandes: Entier (Integer) Simple précision (Single precision) Flottant (Floating point) Double précision (Double precision) Caractère (Char)

45 Chapitre 3 : Le pipeline

46 3.1 Quest-ce que le pipeline? Technique moderne fondamentale pour réaliser des Unités Centrales (UC) rapides Semblable à une chaîne dassemblage où chaque instruction passe à travers une série détapes (ou segments) fixes. Le nombre détapes dans un pipeline dépend de larchitecture (20 étapes pour un Pentium 4 contre 5 dans une architecture RISC) Le débit du pipeline est la fréquence à laquelle les instructions sortent de celui-ci. Le temps de passage dune étape à une autre, sappelle le cycle machine (machine cycle time). Elle correspond au temps le plus long entre deux étapes. En général, un cycle machine correspond à un cycle dhorloge.

47 3.1 Quest-ce que le pipeline? (suite) Le pipeline permet un parallélisme des instructions. Les 5 étages du pipeline RISC: Cycle de lecture (Instruction fetch cycle) (LI) Cycle de décodage (Instruction decode/register fetch cycle) (DI) Cycle dexécution (Execution cycle) (EX) Cycle daccès mémoire (Memory acces) (MEM) Cycle décriture du résultat (Write-back cycle) (ER) Entre chaque étage du pipeline, on retrouve un registre pipeline pour le stockage des données et lenvoie des données vers le prochain étage du pipeline.

48 3.2 Les obstacles du pipeline :les aléas Il existe des situations, appelées aléas, qui empêchent linstruction suivante de flux dinstruction de sexécuter au cycle dhorloge prévu. Il existe trois types daléas: Aléas structurels (structural hazards) Lorsque le matériel ne peut gérer toutes les combinaisons possibles de recouvrement dinstruction au moment de lexécution. Aléas de données (data hazards) Lorsquune instruction dépend du résultat dune instruction précédente. Aléas de contrôle (control hazards) Résultent de lexécution en pipeline des branchements et des autres instructions qui modifient le compteur de programme (CP)

49 3.2 Les obstacles du pipeline :les aléas (suite) Les aléas provoquent lajout dune suspension de un ou plusieurs cycles dans le pipeline (pipeline bubble(s)). Les aléas structurels Elles interviennent lorsquune unité fonctionnelle nest pas totalement pipelinée ou si une ressource na pas été dupliquée suffisamment pour permettre à toutes les combinaisons dinstructions de sexécuter dans le pipeline. Ex: Si une machine possède un seul port décriture pour le banc de registrer, alors que dans certains cas, le pipeline peut vouloir effectuer deux écritures dans le même cycle dhorloge. Il y a alors un aléa structurel Supposant tous les autres facteurs égaux, une machine sans aléa structurel aura toujours un CPI plus petit. Il est même souhaitable parfois de conserver un tel aléa plutôt que de le régler car cela influe sur les coûts et la latence de lunité.

50 3.2 Les obstacles du pipeline :les aléas (suite) Illustration dun aléa structurel dans un pipeline

51 3.2 Les obstacles du pipeline :les aléas (suite) Résultat dun aléa structurel dans un pipeline

52 3.2 Les obstacles du pipeline :les aléas (suite) On peut régler un aléa structurel en fournissant un accès mémoire séparé pour les instructions ou diviser le cache en caches séparés pour instructions et données ou encore, en utilisant un ensemble de tampons, habituellement appelés tampons dinstructions, pour contenir ces instructions.

53 3.2 Les obstacles du pipeline :les aléas (suite) Les aléas de données Un effet majeur du pipeline est de modifier les caractéristiques temporelles des instructions en recouvrant leurs exécutions. Cela introduit des aléas de données et de contrôle. Un aléa de données intervient lorsque le pipeline modifie lordre des accès lecture/écriture aux opérandes. Supposons: DADD R1,R2,R3 DSUB R4,R1,R5 AND R6,R1,R7 OR R8,R1,R9 XOR R10,R1,R11 Toutes les instructions après DADD utilisent le résultat de linstruction DADD. La valeur de R1 est écrite à létage ER du pipeline, mais linstruction DSUB lit sa valeur pendant létage DI, soit quelques cycles avant quelle ne soit écrite en mémoire.

54 3.2 Les obstacles du pipeline :les aléas (suite) Si aucune solution nest apportée, linstruction DSUB suivant DADD lira la mauvaise valeur de R1, tout comme AND. Linstruction OR en revanche peut sexécuter dans provoquer daléa si on utilise une technique simple dimplémentation, qui est implicite les schémas de pipeline. Cela consiste à lire le banc de registres dans la seconde moitié du cycle, et à écrire dans la première moitié. En revanche, linstruction XOR opère correctement parce que sa lecture de registres intervient dans le cycle 6, après lécriture registre.

55 3.2 Les obstacles du pipeline :les aléas (suite)

56 Le problème vu dans la figure précédente peut être résolu par une technique qui sappelle lenvoi (fowarding). Vu que la valeur de R1 de linstruction DADD est évaluée dans létage dexécution (EX) et est ensuite placée dans le registre de pipeline (EX/MEM), il suffit denvoyer cette valeur à cet instant vers lendroit où linstruction DSUB en a besoin, soit dans le registre dentrée de lUAL (EX). Le résultat de lUAL du registre EX/MEM est toujours renvoyé aux registres dentrée de lUAL. Si le matériel denvoi détecte que lopération UAL précédente à écrit dans le registre correspondant à la source de lopération UAL en cours, la logique de contrôle sélectionne le résultat envoyé comme entrée de lUAL plutôt que la valeur lue à partir du banc de registres. Cette solution peut et va probablement entraîner des délais dans le pipeline.

57 3.2 Les obstacles du pipeline :les aléas (suite) Illustration de la technique de lenvoi

58 3.2 Les obstacles du pipeline :les aléas (suite) Considérons deux instructions i et j avec i intervenant avant j. Il existe trois types daléa de données: LAE (lecture après écriture) (RAW) j essaye de lire une source avant que i lécrive, j obtient alors par erreur lancienne valeur. EAE (écriture après écriture) (WAW) j essaye décrire une opérande avant quil ne soit écrit par i. Les écritures se font alors dans le mauvais ordre. Cela arrive dans les pipelines qui écrivent dans plus dun étage de pipe. EAL (écriture après lecture) (WAR) j essaye décrire dans une destination avant quelle ne soit lue par i; j obtient alors par erreur la nouvelle valeur. Ceci ne peut intervenir dans un pipeline comme celui des exemples précédents car toutes les lectures se font tôt (dans DI) et toutes les écritures se font tard (dans ER). Ces aléas sont relativement rares.

59 3.2 Les obstacles du pipeline :les aléas (suite) Aléas de données nécessitant des suspensions. Tous les aléas de données ne peuvent pas être gérés par le mécanisme denvoi. Supposons: LD R1,0(R2) DSUB R4,R1,R5 AND R6,R1,R7 OR R8,R1,R9 Linstruction LD na pas la donnée avant la fin du cycle 4 (son cycle MEM), alors que linstruction DSUB a besoin de cette donnée au début de ce même cycle. Dans ce cas-ci, la technique denvois est impossible. Un élément matériel de verrouillage de pipeline va alors insérer un délais au niveau de linstruction DSUB.

60 3.2 Les obstacles du pipeline :les aléas (suite)

61 Lordonnancement du compilateur pour les aléas de données Plusieurs types de suspensions sont tout à fait fréquents. Le schéma de génération de code typique pour une instruction telle que A=B+C produit une suspension pour le chargement de B. Au lieu de permettre au pipeline dinsérer une suspension, le compilateur peut essayer de réarranger la séquence de code pour éliminer laléa, cest lordonnancement du pipeline (pipeline scheduling) Les aléas de contrôle Ils peuvent dégrader davantage la performance du pipeline que les aléas de données. Quand un branchement sexécute, il peut modifier ou non la valeur courante du CP (Compteur de Programme) en y mettant autre chose que CP+4 (passage à la ligne de code suivante)

62 3.2 Les obstacles du pipeline :les aléas (suite) Si un branchement modifie ladresse du CP pour y mettre ladresse destination, il sagit dun branchement pris, sinon il est non pris. Si un branchement est pris, le CP de linstruction nest pas modifié avant la fin de létage MEM. Pour résoudre ce problème, il existe 4 solutions: 1) On suspend donc le pipeline jusquà létage MEM, qui détermine le nouveau CP. Cette décision doit cependant se faire après que linstruction soit décodée est reconnue comme un branchement. Il faut alors suspendre le pipeline pendant trois cycle (un cycle est une répétition de LI, et deux cycles ne font rien). Cette méthode est coûteuse en nombre de cycle et la performance du pipeline tombe de moitié. 2) Une autre méthode un peu plus complexe consiste à traiter chaque branchement comme non pris. Si il y effectivement un branchement, on procède comme en 1), en transformant linstruction lue en NOP (aucune instruction).

63 3.2 Les obstacles du pipeline :les aléas (suite) 3) On peut également considérer le branchement comme toujours pris. Vu quil est impossible de connaître ladresse de destination du branchement avant le décodage, cette approche noffre aucun avantage pour une architecture comme RISC. 4)Certaines machines utilisent un schéma appelé le branchement différé (delayed branch). Cette technique est aussi utilisée dans beaucoup dunités de contrôle microprogrammées. Dans un tel concept, on retrouve un certain nombre dinstructions après linstruction de branchement qui sont exécutées que le branchement soit pris ou non. Celles-ci constituent des délais de branchement. Le compilateur tente alors doptimiser ces délais, de plusieurs façons. Instruction avant (from before):le délai est rempli par uns instruction indépendante provenant davant le branchement. Les autres solutions sont utilisées uniquement si celle-ci est impossible.

64 3.2 Les obstacles du pipeline :les aléas (suite) Instruction cible (from target):le délai est remplacé par linstruction cible du branchement. Instruction après (from fall-through):le délai est remplacé par une instruction du chemin non pris. La prédiction de branchement statique: utiliser la technologie des compilateurs. Considérons: LW R1,0(R2) DSUB R1,R1,R3 BEQZ R1,L OR R4,R5,R6 ……… L : ADD R7,R8,R9

65 3.2 Les obstacles du pipeline :les aléas (suite) La présence dune instruction de chargement rangement suivi dune instruction ALU utilisant le registre R1 nécessite une suspension. Supposons que le branchement (BEZQ) est presque toujours pris et que la valeur de R7 ne soit pas critique dans le chemin en séquence. On pourrait accélérer le code en déplaçant linstruction ADD R7,R8,R9 juste derrière LW Pour effectuer de tel changements, on doit connaître la statistique de branchement à la compilation. Il existe deux méthodes: Examiner la structure du programme Utiliser des informations collectées sur des exécutions précédentes du programme (plus précis).

66 3.3 Ce qui rend le pipeline difficile à implémenter Il existe des situations exceptionnelles qui forcent la machine à annuler des instructions dans le pipeline avant quelles ne soient terminées. Les types dexception Requête de composant entrée/sortie. Appel système par un programme utilisateur. Tracer lexécution dun programme. Point darrêt. Dépassement de capacité arithmétique, par excès ou par défaut, pour les entiers. Anomalie arithmétique en flottant Défaut de page Accès mémoire non aligné Violation de protection mémoire Utilisation dune instruction non définie

67 3.3 Ce qui rend le pipeline difficile à implémenter Les types dexception (suite) : Problème matériel. Défaillance de lalimentation. Chaque exception possède des caractéristiques importantes qui déterminent quelle action est nécessaire par matériel. Les contraintes sur les exceptions peuvent se caractérises selon cinq axes en partie indépendants (voire livre de référence): Synchrone ou asynchrone (synchronous or a asynchronous). Requête utilisateur ou imposée. Masquable par lutilisateur ou non masquable. Pendant ou entre des instructions. Reprise ou fin

68 3.3 Ce qui rend le pipeline difficile à implémenter Les exceptions les plus difficiles ont deux propriétés Elle interviennent au cours de linstruction (dans le milieu de lexécution de linstruction en EX ou MEM) Elle doivent pouvoir être redémarrées. Le pipeline doit donc sarrêter correctement et létat doit être sauvegardé de façon à ce que linstruction puisse être relancée avec un état correct. Lorsquune instruction survient, on peut suivre les étapes suivantes pour sauvegarder létat du pipeline correctement: Insérer une instruction de trappe dans le pipeline sur le LI suivant On interdit les écritures pour linstruction fautive et les suivantes jusquà ce que la trappe sexécute.

69 3.3 Ce qui rend le pipeline difficile à implémenter Quand la routine de traitement de lexception (handler) dans lOS à reçu le contrôle, elle sauvegarde immédiatement le CP de linstruction fautive.

70 3.4 Extension du pipeline MIPS pour traiter les opérations multicycles Pour traiter les opérations flottantes, on utilise un pipeline spécifique, semblable à celui étudié mais avec quelques nuances: Létage EX peut se répéter autant de fois que nécessaire pour terminer lopération. Il peut exister plusieurs unités fonctionnelles flottantes. Dans limplémentation du MIPS, on en dénombre quatre: Lunité principale de traitement des entiers qui gère les chargements et les rangements ainsi que les opérations UAL. Le multiplieur flottant et entier. Ladditionneur flottant qui gère les additions, soustractions et conversions flottantes. Le diviseur flottant et entier.

71 3.4 Extension du pipeline MIPS pour traiter les opérations multicycles Exemple de pipeline à plusieurs opérations simultanées

72 Chapitre 4 : Réalisation dune hiérarchie mémoire

73 4.1 Introduction Les programmeurs veulent une quantité infinie de mémoire rapide. Le principe de localité dit la plus part des programmes daccèdent pas tout le code ou toutes les données uniformément. La solution: une hiérarchie mémoire à plusieurs niveaux. Chaque niveau étant plus petit, plus rapide et plus coûteux que le précédent. Cette hiérarchie est imbriquée, toute donnée dun niveau se retrouve dans le niveau inférieur.

74 4.2 Le B.A.-B.A des caches Cache est le nom généralement donné au premier niveau de hiérarchie mémoire que lon rencontre en quittant lUC. Il existe trois types dorganisation de cache: Si chaque bloc a uniquement un seule place possible dans le cache, cest un cache à correspondance directe (direct mapped). Si un bloc peut être placé nimporte où dans le cache, cest un cache totalement associatif (fully associative). Si un bloc peut être placé dans un ensemble restreint de places, c est un cache associatif par ensemble de blocs (set associative). Lensemble est choisi par sélection de bits :

75 4.2 Le B.A.-B.A des caches Les trois types de cache précédent peuvent tous être considérés comme associatif par ensemble si on considère quun cache à correspondance directe possède 1 bloc par ensemble et un cache totalement associatif de m blocs peut être appelé associatif par ensemble de m blocs.

76 4.2 Le B.A.-B.A des caches Chaque bloc des caches a une étiquette adresse qui donne le numéro de bloc présent. Pour savoir si un bloc est en cache: One examine létiquette pour voir si elle correspond au numéro de bloc provenant de lUC. Toutes les étiquettes sont examinées en parallèle. Pour savoir si linformation dans un bloc est valide, on ajoute un bit de validité (checksum) à létiquette. Si le bit nest pas positionné, il ny a pas daccès valide sur cette adresse. Les 3 parties dune adresse dans un cache associatif par ensemble ou à correspondance directe:

77 4.2 Le B.A.-B.A des caches Le déplacement dans le bloc sélectionne la donnée dans le bloc, le champ index est utilisé pour sélectionner lensemble et le champ étiquette est utilisé pour la comparaison. Laugmentation de lassociativité augmente le nombre de blocs par ensemble, ce qui diminue la taille de lindex et augmente la taille de létiquette. Quand échec intervient (cache miss), le contrôleur doit choisir un bloc à remplacer par la donnée désirée. Dans le cas de la correspondance directe, un seul bloc est testé pour déterminer sil y a succès, et seul ce bloc est remplacé. Pour lassociativité totale ou par ensemble, il y a deux stratégies de remplacement du bloc: Le hasard: Les blocs candidats sont choisis de façon alétoire. Le plus ancient (Least Recently Used –LRU-): le bloc remplacé est celui qui na pas été utilisé depuis le plus longtemps.

78 4.2 Le B.A.-B.A des caches Les écritures dominent les accès cache (25% du trafic du cache de données pour les écritures). Il faut donc que celles-ci soit optimiser à fin de diminuer lattente des processeurs. Il est possible de lire le bloc pendant que létiquette est lue et comparée. Ce nest pas le cas pour lécriture. Les écritures prennent plus de temps que les lectures. Il existe deux options pour écrire dans le cache: Lécriture simultanée (write through): Linformation est écrite à la fois dans le bloc du cache et dans le bloc de la mémoire de niveau inférieur. La réécriture (write back): Linformation est écrite uniquement dans le bloc du cache. Le bloc modifié du cache est recopié en mémoire principale uniquement quand il est remplacé.

79 4.2 Le B.A.-B.A des caches Pour diminuer le nombre de remplacements, on ajoute un bit modifié (dirty bit). Ce bit indique si le bloc a été modifié on non. Sil ne la pas été, le bloc nest pas écrit lors dun défaut de cache puisque linformation est la même au niveau inférieur. LUC doit attendre la fin des écritures lors décritures simultanées. On dit alors que lUC est en suspension décriture (write stall). Un tampon décriture (write buffer) permet à lUC de continuer son traitement une fois que la donnée est écrite dans le tampon. Il y a deux options sur un échec décriture (write miss): Écriture allouée (write allocate): Chargement du bloc et écriture. Écriture non allouée (No-write allocate): Le bloc est modifié dans le niveau inférieur et non chargé dans le cache.

80 4.2 Le B.A.-B.A des caches Performance des caches Une bonne mesure de la performance de la hiérarchie mémoire est le temps daccès mémoire moyen: Cette mesure est indirecte et nest pas aussi évocatrice que le temps dexécution.

81 4.2 Le B.A.-B.A des caches Améliorer les performances des caches implique: Réduire le taux déchec Réduire la pénalité déchec Réduire le temps daccès réussi au cache

82 4.3 Réduire les défauts de cache Il existe trois types déchecs: Obligatoire (compulsory):Le premier accès à un bloc nest pas dans le cache, et il doit être transféré dans le cache; ils sont aussi appelés échecs de démarrage à froid. Capacité (capacity): Si le cache ne peut contenir tous les blocs nécessaires pendant lexécution dun programme, des échecs de capacité interviendront à cause de blocs écartés puis rappelés plus tard. Conflit (conflict): Si la stratégie de placement des blocs est associative par ensemble ou à correspondance directe, les échecs de conflit interviennent parce quun bloc peut être écarté et rappelé plus tard si trop de blocs doivent être placés dans son ensemble. Les différentes solutions possibles face à ces échecs sont présentés dans les pages suivantes.

83 4.3 Réduire les défauts de cache Première solution: Une taille de bloc plus grande. (Ancienne méthode) Laugmentation du la taille du bloc, diminue les échecs obligatoires en raison de la localité spatiale. Elle augmente aussi la pénalité déchec (moins de blocs dans le cache, plus déchecs de conflit). Seconde solution: Une associativité plus élevée. (Ancienne méthode) Une associativité élevée améliore les taux déchec Lassociativité à 8 blocs par ensemble est aussi efficace que lassociativité totale. Loi empirique 2:1 (un cache de taille N a environ le même taux déchec quun cache associatif à deux blocs par ensemble de taille N/2). Une associativité élevée augmente le temps daccès réussi

84 4.3 Réduire les défauts de cache Troisième solution: Les caches victimes (technique moderne). Ninfluence pas la fréquence dhorloge. Consiste à ajouter un petit cache totalement associatif entre le cache et le chemin de rechargement. Ce cache contient uniquement les blocs qui sont rejetés du cache à cause dun échec et qui sont examinés lors dun échez pour voir sils contiennent linformation désirée avant daller vers le niveau inférieur. Quatrième solution: des caches pseudo-associatifs (technique moderne). Les succès cache se comportent comme dans un cache à correspondance directe. Lors dun échec, avant daller vers le niveau inférieur, une autre entrée cache est vérifiée (inversion du bit le plus significatif de lindex pour trouver lautre bloc)

85 4.3 Réduire les défauts de cache Quatrième solution: des caches pseudo-associatifs (technique moderne). (suite) Ces caches ont un temps daccès reussi rapide si laccès est effectivement réussi et un temps daccès réussi lent qui correspond à un temps daccès réussi en plus dun pseudo accès réussi et de la pénalité déchec. Le danger: trop de pseudo accès réussis baisse la performance. De plus, un temps daccès réussi peut compliquer le pipeline de lUC. Cinquième solution: la lecture anticipée par matériel des instructions et des données (Hardware prefetching of instructions and data) Il sagit dune lecture anticipée dans le cache ou dans un tampon externe avant que la donnée soit réquisitionnée par lUC Cela accélère laccès à la mémoire principale.

86 4.3 Réduire les défauts de cache Cinquième solution: la lecture anticipée par matériel des instructions et des données (Hardware prefetching of instructions and data) (suite). Cette technique est faite par le matériel à lextérieur du cache. Utilise la bande passante de la mémoire qui serait autrement inutilisée. Cette technique peut diminuer les performances si elle interfère avec le traitement des échecs. Les compilateurs peuvent aider à réduire les lectures anticipées inutiles.

87 4.3 Réduire les défauts de cache Sixième solution: la lecture anticipée contrôlée par le compilateur (compiler controlled prefetching). Le compilateur introduit des instructions de préchargement pour aller chercher la données avant quelle ne soit nécessaire. Il y a deux principaux types de lectures anticipées: La lecture anticipée de registre : charge la valeur dans un registre La lecture anticipée du cache: charge la valeur uniquement dans le cache et pas dans le registre. Chacune de ces options peut être fautive ou non fautive, cest-à- dire que ladresse peut ou non provoquer une exception pour des fautes dadresses virtuelles et des violations de protection. Les prélectures fautives se transforment en NOP si elles provoqueraient normalement une exception. Les caches doivent être non bloquant : ils continuent à fournir des instructions et des données pendant quils attendent larrivée de la donnée anticipée.

88 4.3 Réduire les défauts de cache Sixième solution: la lecture anticipée contrôlée par le compilateur (compiler controlled prefetching) (suite). Les instructions de prélecture provoquent un surcoût dinstructions, il faut donc sassurer que ces surcoûts nexcèdent pas les avantages. Ex: For(i=0;i<3;i=i+1) For(j=0;j <100;j=j+1) a[i][j]=b[j][0]*b[j+1][0] Le tableau a est écrit dans lordre de chargement en mémoire, il bénéficie donc dune localité spatiale contrairement au tableau b.

89 4.3 Réduire les défauts de cache Septième solution: les optimisations du compilateur. Aucune modification matérielle nécessaire. Tente daméliorer la localité spatiale et temporelle des données. Quatre techniques connues: La fusion de tableaux (augmente la localité spatiale) Combiner des tableaux indépendants en un seul tableau composé de telle sorte quun seul bloc de cache contiennent les éléments voulus Avant: int val [size] int key[size] Après : struct merge{ int val; int key; }; Struct merge merged_array[size]

90 4.3 Réduire les défauts de cache Léchange de boucles Changer lordre dimbrication des boucles peut faire correspondre lordre daccès à lordre de rangement. Avant for(j=0; j<100; j=j+1) for(i=0;i<5000;i=i+1) x[i][j]=2*x[i][j]; Après for(i=0; i<5000; i=i+1) for(j=0;j<100;j=j+1) x[i][j]=2*x[i][j];

91 4.3 Réduire les défauts de cache La fusion de boucles Fusionner de sections de code séparées accédant à certains tableaux en une même boucle. Les données qui sont amenées dans le cache peuvent être utilisées de nombreuses fois avant dêtre rejetées. Avant for(i=0;i

92 4.3 Réduire les défauts de cache Le blocage Améliore la localité temporelle. Faire le maximum daccès aux données dans le cache avant que les données soient remplacées. Avant for(i=0;i

93 4.3 Réduire les défauts de cache Le blocage (suite)

94 4.3 Réduire les défauts de cache Le blocage (suite) Le code original est changé pour calculer sur une sous matrice de taille B par B de telle sorte que les deux boucles internent calculent par étapes de taille B plutôt que de calculer du début à la fin de x et z. B est appellé le facteur de blocage. Après for(jj=0;jj

95 4.3 Réduire les défauts de cache Le blocage (suite)

96 4.4 Réduire la pénalité déchec cache Lobjectif est de diminuer le temps moyen daccès mémoire. Les tendances technologiques ont amélioré la vitesse des processeurs plus rapidement que les DRAM, ce qui a augmenté le coût relatif des pénalités déchec avec les années. Voici cinq optimisations possibles pour répondre au problème. Première technique: Donner la priorité aux échecs lecture sur les écritures. Avec un cache à écriture simultanée, lamélioration la plus importante est un tampon décriture de taille adéquate. Ces derniers compliquent cependant les choses car ils peuvent contenir des valeurs modifiées dune case qui fait lobjet dun échec en lecture. Il faut vérifier le contenu du tampon sur un échec lecture, et, sil ny a pas de conflit et si le système mémoire est disponible, de laisser continuer le traitement de léchec lecture.

97 4.4 Réduire la pénalité déchec cache Première technique: Donner la priorité aux échecs lecture sur les écritures. Les tampons décriture compliquent les choses car ils peuvent contenir des valeurs modifiées dune case qui fait lobjet dun échec en lecture. Solution la plus simple: les échec en lecture attendent jusquà ce que le tampon décriture soit vide Laugmentation du tampon décriture provoque cependant également laugmentation la pénalité déchecs en lecture. Une alternative: Vérifier le contenu du tampon décriture sur un échec en lecture, si ny a aucun conflit et que la mémoire est disponible, laisser léchec en lecture se poursuivre.

98 4.4 Réduire la pénalité déchec cache Première technique: Donner la priorité aux échecs lecture sur les écritures (suite). On peut également baisser le coût des écritures dans un cache à réécriture. Supposons quun échec en lecture provoque un remplacement dun bloc modifié. Au lieu décrire le bloc modifié en mémoire, et deffectuer ensuite la lecture, on peut copier le bloc modifié dans un tampon, puis faire la lecture, puis lécriture. De cette manière, la lecture que lUC est probablement en train dattendre, finira plus tôt. Seconde technique: Le placement par sous bloc. Si il y a trop détiquette pour tenir dans la puce, on peut choisir de plus gros blocs, ce qui réduit le stockage des étiquettes dans décroître la quantité dinformation que lon peut ranger dans le cache. Cela baisser le taux déchec mais augmentera la pénalité déchec.

99 4.4 Réduire la pénalité déchec cache Seconde technique: Le placement par sous bloc (suite). Un alternative: le placement en sous-blocs. Un bit valide est ajouté à des unités plus petites que le bloc entier, appelées sous-blocs. Ce bit spécifie la validité de certaines parties su bloc. En plus de légalité de létiquette, le bit de validité doit également être positionné pour que le mot soit dans le cache. La pénalité déchec des sous-blocs est alors réduite.

100 4.4 Réduire la pénalité déchec cache Troisième technique:le redémarrage précoce et le mot critique en premier. Les deux première techniques nécessitent du matériel supplémentaire. Principe: lUC a juste besoin dun mot dun bloc à la fois. On nattend pas que le bloc complet soit chargé avant denvoyer le mot demandé à lUC et redémarrer. Deux stratégies existent: Redémarrage précoce: Aussitôt quarrive le mot demandé du bloc, lenvoyer à lUC et laisser lUC continuer lexécution. Le mot critique en premier: Aller chercher dabord en mémoire le mot manquant et lenvoyer à lUC dès quil arrive; laisser lUC continuer lexécution pendant quon remplit le reste des mots du bloc.

101 4.4 Réduire la pénalité déchec cache Quatrième technique:les caches non bloquants pour réduire les suspensions sur les défauts de cache (non blocking caches to reduce stalls on cache misses). Un cache non bloquant permet au cache de données de continuer à fournir des accès réussis pendant le traitement dun échec. Cette optimisation accès réussis pendant le traitement dun échec réduit la pénalité déchec effective en utilisant le cache pendant le traitement dun échec au lieu dignorer les requêtes de lUC.

102 4.4 Réduire la pénalité déchec cache Cinquième technique: les caches de second niveau. Solution indépendante de lUC. Met laccent sur linterface entre le cache et la mémoire principale. Lajout dun autre niveau de cache entre le cache originel et la mémoire permet au premier niveau de cache dêtre assez petit pour atteindre le temps de cycle de lUC alors que le second niveau de cache peut être assez grand pour capturer beaucoup daccès qui iraient à la mémoire principale, en réduisant ainsi la pénalité déchec effective.

103 4.5 Réduire le temps de laccès réussi Première technique: des caches petits et simples. Une partie importante du temps daccès réussi au cache es lutilisation de la partie index de ladresse pour lire la mémoire détiquettes et ensuite de la comparer à ladresse. Garder un cache petit pour quil tienne dans le même circuit que le processeur pour éviter la pénalité temporelle liée à la sortie du boîtier. Seconde technique: éviter la traduction dadresse durant lindexation du cache. Un adresse virtuelle sur disque doit être transcrite en adresse physique pour accéder au contenu mémoire par le processeur. Les accès réussis sont beaucoup plus courants avec les adresses virtuelles sur le cache.

104 4.5 Réduire le temps de laccès réussi Seconde technique: éviter la traduction dadresse durant lindexation du cache (suite). Ladressage virtuel élimine le temps de traduction de ladresse du temps de laccès réussi. Il ne serait cependant pas judicieux de construire que des caches adressés virtuellement car à chaque fois quun processus (programme) est commuté, les adresses virtuelles réfèrent des adresses physiques différentes, ce qui nécessite une purge du cache. Une purge du cache trop fréquente augmente énormément les taux déchec. De plus, les systèmes dexploitation et les programmes utilisateurs peuvent utiliser deux adresses virtuelles différentes pour la même adresse physique (synonymes) peuvent conduire à deux copies de la même donnée dans un cache virtuel.

105 4.5 Réduire le temps de laccès réussi Seconde technique: éviter la traduction dadresse durant lindexation du cache (suite). De manière à obtenir le meilleur des deux types de caches, est dutiliser le déplacement dans la page, qui est la partie non affectée par la traduction dadresses, pour indexer le cache pendant que lon envoie la partie virtuelle à traduire. Cependant, le cache à correspondance directe ne peut pas être plus gros que la taille de la page. Troisième technique: pipeliner les écritures pour des écritures réussies rapides. Les écritures réussies prennent plus longtemps que les lectures réussies parce que les étiquettes doivent être vérifiées avant décrire la donnée.

106 4.5 Réduire le temps de laccès réussi Troisième technique: pipeliner les écritures pour des écritures réussies rapides (suite) Létiquette et les données sont séparées pour quelles puissent être adressées indépendamment. Sur une écriture, la cache compare létiquette avec ladresse courante de lécriture. La différence concerne lécriture de la partie données du cache qui intervient durant la comparaison détiquettes. Elle doit utiliser une autre adresse, puisque ladresse décriture courante est encore en cours de vérification. Le cache utilise ladresse et la donnée de la précédente écriture, qui a déjà été reconnue comme un succès. Le pipeline logique est entre les écritures: la seconde étape de lécriture intervient durant la première étape de lécriture suivante.

107 4.5 Réduire le temps de laccès réussi Troisième technique: pipeliner les écritures pour des écritures réussies rapides (suite). Les écritures peuvent donc être effectuées de manière continue au rythme dune par cycle parce que lUC na pas à attendre la comparaison détiquettes avant décrire.

108 4.6 Le B.A.-BA. sur la mémoire principale. La latence des mémoires se mesure principalement avec le temps daccès et le temps de cycle. Le temps daccès est le temps écoulé entre une demande de lecture et le moment où le mot demandé arrive. Le temps de cycle est le temps minimum entre deux requêtes successives à la mémoire. La moitié de ladresse est dabord envoyée, pendant le signal décriture des accès (RAS). Lautre moitié de ladresse est envoyée pendant le signal décriture des accès colonnes (CAS). Les DRAM utilisent un seul transistor pour stocker un bit. Pour empêcher la perte dinformation, chaque bit doit être rafraîchi périodiquement (Dynamic Random Acces Memory)

109 4.6 Le B.A.-BA. sur la mémoire principale. La technologie mémoire. Les SRAM (Static Random Access Memory) utilisent 4 à 6 transistors par bit pour éviter un rafraîchissement. Contrairement au DRAM, il ny pas de différence entre le temps daccès et le temps de cycle. La plus part de ordinateurs vendus depuis 1975 est composée de DRAM. Seules les caches utilisent de la SRAM. Au fur et à mesure que les DRAM augmentaient en capacité, le coût de mémoires avec lensemble des lignes dadresses devenait un problème. La solution: multiplexer les lignes dadresses.

110 4.6 Le B.A.-BA. sur la mémoire principale. Organisation pour améliorer les performances de la mémoire principale. Augmenter le débit des mémoires. Première technique: une mémoire principale élargie Laugmentation de largeur de la mémoire, diminue généralement la pénalité déchec. Il y a un coût à lélargissement : la bus mémoire. LUC accèdera encore mot par mot et un multiplexeur est maintenant nécessaire entre le cache et lUC. Également, si un utilisateur veut étendre sa mémoire, lincrément minimum est doublé ou quadruplé quand la largeur est doublée ou quadruplée.

111 4.6 Le B.A.-BA. sur la mémoire principale. Seconde technique: la mémoire entrelacée simple Accroître la largeur de bande augmente la bande passante. Un autre façon est dexploiter le parallélisme potentiel en ayant beaucoup de DRAM dans un système mémoire. Utiliser la bande passante de toutes les DRAM dans le système. Les bancs ont souvent une largeur dun mot. Lenvoi dadresses à plusieurs bancs leur permet à tous de lire simultanément. Une mémoire entrelacée est une mémoire avec bancs, dont les mots sont entrelacés. Ceci optimise les accès mémoires seéquentiels.

112 4.6 Le B.A.-BA. sur la mémoire principale. Troisième technique: des bancs mémoires indépendants. Les bancs mémoires permettaient une bande passante élevée en entrelaçant des accès séquentiels. Une généralisation des bancs est de permettre plusieurs accès indépendants, avec plusieurs contrôleurs mémoires pour permettre aux banc dopérer indépendamment. Quatrième technique: éviter le conflits de bancs mémoire. Laugmentation du nombre de bancs entraînent quand même plusieurs conflits. Uns solution serait dutiliser un compilateur pour éviter daccèder au même banc et réduire ainsi les conflits.

113 4.6 Le B.A.-BA. sur la mémoire principale. Entrelacement spécifique aux DRAM pour améliorer les performances des mémoires principales. Le temps daccès des DRAM se divise en accès ligne et accès colonne. Les DRAM mémorisent une ligne de bits dans un registre tampon du circuit pour laccès colonne. Cette ligne est généralement la racine carrée de la taille de la DRAM. Trois modes doptimisation: Le mode nibble : La DRAM peut fournir trois bits supplémentaires depuis des cases séquentielles pour chaque RAS. Le mode page : Le tampon agit comme une SRAM; en changeant ladresse colonne, on peut accéder à nimporte quel bit du tampon jusquau prochain accès ligne ou jusquau moment du rafraîchissement. Colonne statique : Très semblables au mode page, sauf quil nest pas nécessaire dagir sur la ligne déchantillonnage de laccés colonne à chaque fois que les adresses colonne changent.

114 4.6 Le B.A.-BA. sur la mémoire principale. Entrelacement spécifique aux DRAM pour améliorer les performances des mémoires principales (suite). De nouveaux types de DRAM on vu le jour, optimisant linterface entre la DRAM et lUC. RAMBUS supprime RAS et CAS, les remplaçant par un bus qui permet dautres accès sur le bus entre lenvoi de ladresse de retour de la donnée. VRAM est un DRAM avec une ligne de sortie série rapide, utilisée pour piloter les consoles.

115 4.7 Mémoire virtuelle Chaque processus (programme qui tourne sur une machine) possède un espace dadressage. On ne peut pas attribuer à chaque processus un espace dadressage mémoire complet. On doit répartir une quantité beaucoup plus petite de mémoire physique entre plusieurs processus. La mémoire virtuelle divise la mémoire physique en blocs quelle alloue à différents processus. Cette approche implique un système de protection qui confine un processus aux blocs qui lui appartiennent effectivement. La mémoire virtuelle fut inventée pour décharger les programmeurs.

116 4.7 Mémoire virtuelle Elle gère automatiquement les deux niveaux de hiérarchie mémoire (mémoire principale et secondaire). La mémoire virtuelle simplifie le chargement et le déchargement du programme pour lexécution (relogeabiblité). Un bloc de mémoire physique est léquivalent dune page de mémoire virtuelle. LUC fournit des adresses virtuelles qui sont traduites, par une combinaison matérielle et logicielle, en adresses physiques, utilisées pour accéder à la mémoire principale. Cest la correspondance mémoire ou traduction dadresse (memory mapping or address translation).

117 4.7 Mémoire virtuelle

118 Il existe quelque différences quantitatives entre la mémoire virtuelle et les caches: Le remplacement, lors de défauts de cache, est contrôlé essentiellement par matériel, alors que le remplacement dans la mémoire virtuelle est contrôlé essentiellement par le système dexploitation. La taille de ladresse du processeur détermine la taille de la mémoire virtuelle alors que la taille du cache est normalement indépendante de ladresse du processeur. Il existe deux catégories de mémoire virtuelle: Blocs de taille fixe : pages (entre 4096 et octets). Blocs de taille variable : segments (entre 1 octet et 2^32 octets).

119 4.7 Mémoire virtuelle Ladressage paginé a une seule adresse, de taille fixe, divisée en numéro de page et adresse dans la page, comme pour ladressage du cache. Pour ladressage segmenté, nécessite un mot pour le numéro de segment et un mot pour le déplacement dans le segment, soit un total de deux mots. Un espace dadressage segmenté est plus simple pour le compilateur. Aujourd'hui, quelques machines utilisent une approche hybride : la segmentation paginée, où un segment correspond à un nombre entier de pages, ce qui simplifie le remplacement des pages.

120 4.7 Mémoire virtuelle Une autre approche hybride plus récente correspond aux machines qui offrent plusieurs tailles de page, les tailles les plus grandes étant une puissance de deux fois la plus petite taille de page. La pénalité déchec pour une mémoire virtuelle correspond à laccès à un disque magnétique tournant. Celle-ci est donc relativement importante. Les systèmes dexploitation permettent aux blocs dêtre situés nimporte où en mémoire principale.

121 4.7 Mémoire virtuelle La pagination et la segmentation sont basées sur une structure de données qui est indexée par le numéro de page ou de segment. Cette structure contient ladresse physique du bloc. Pour la segmentation, ladresse dans la page est ajoutée à ladresse physique du segment pour obtenir ladresse virtuelle finale.

122 4.7 Mémoire virtuelle Pour la pagination, ladresse dans la page est simplement concaténée au numéro de page physique. La structure de données contenant les numéros de page physique se retrouve sous une table des pages. Pour réduire la taille de cette structure, certaines machines appliquent une fonction de hachage à ladresse virtuelle. Pour réduire le temps de traduction dadresse, ont utilise un cache dédié à ces traductions, le tampon de traduction anticipé (translation lookaside bufferi) TLB. LOS est responsable de minimiser les défauts de page. Ces derniers utilisent la technique LRU avec un bit de référence pour effectuer ce remplacement.

123 4.7 Mémoire virtuelle Durant une écriture la stratégie est toujours une réécriture. Le coût dun accès inutile est très grand, on utilise donc un bit modifié, de telle sorte que les seuls blocs écrits sur disque sont ceux qui ont été modifiés depuis leur chargement à partir du disque. Les techniques de traduction rapide dadresse. Les tables de pages sont rangées en mémoire principale (très grande taille) Les accès mémoires sont donc au moins deux fois plus long (1 accès pour ladresse physique et un autre pour la donnée) Ce coût est trop grand. Un solution: mémoriser la dernière traduction pour que le processus de correspondance nintervienne pas si ladresse courante correspond à la même page que ladresse précédente.

124 4.7 Mémoire virtuelle Une autre solution générale consiste à localiser les traductions dadresses, comme les accès. En conservant les traductions dadresses dans un cache spécial, un accès mémoire utilise rarement un second accès pour obtenir la donnée: cest le TLB. Une entrée TLB contient une étiquette avec des parties de ladresse virtuelle et une données qui contient un numéro de page physique, le champ de protection, le bit de valide et généralement le bit dutilisation et le bit modifié. Les étapes de traductions sont: Envoi de ladresse virtuelles à toutes les étiquette. On sassure que létiquette est marquée comme valide. On sassure quil ny a pas de violation de la protection mémoire. Létiquette qui coïncide envoie ladresse physique à travers le multiplexeur 32:1.

125 4.7 Mémoire virtuelle Le déplacement dans la page est alors combiné avec le numéro de page physique pour constituer une adresse physique complète sur 34 bits. La sélection dune taille de page Arguments pour une grande taille sur une petite taille: La taille de la table des pages est inversement proportionnelle à la taille de la page. La taille de la mémoire peut ainsi être réduite avec des pages plus grandes. Une taille de page plus grande facilite des temps de succès cache rapides. Le transfert de plus grandes pages vers ou depuis la mémoire secondaire, éventuellement à travers le réseau, est plus efficace que le transfert de petites pages. Le nombre dentrées du TLB est limitée.

126 4.7 Mémoire virtuelle La motivation principale pour une taille de page plus petite est la minimisation de lespace mémoire. Une taille de page plus petite conduira à moins de pertes quand une région contïgue de mémoire virtuelle nest pas gale en taille à un multiple de la taille des pages. Cette mémoire inutilisée se nomme la fragmentation interne.

127 Chapitre 5 : Les systémes de stockage

128 5.1 Les types de composants de stockage Les disques magnétiques. Haute capacité Mémoire à long terme non volatile 1 à 20 plateaux rotatifs avec des disques métalliques recouverts avec un matériel denregistrement magnétique des deux côtés. La surface des disques est divisé en cercles concentriques (pistes). Il y a entre 500 et 2500 pistes sur chaque surface. Chaque piste est divisée en secteurs qui contiennent les informations. Un secteur est la plus petite unité qui peut être écrite ou lue. Il y environ 64 secteurs par piste. Généralement toutes les pistes ont le même nombre de secteurs. Les pistes extérieures sont plus longues et enregistrent linformation à une densité plus faible que les pistes intérieures.

129 5.1 Les types de composants de stockage Avec larrivé dinterfaces intelligentes comme SCSI, il est possible denregistrer plus de secteurs par piste. Pour lire ou écrire, un bras mobile avec une tête de lecture/écriture est situé au-dessus de chaque surface. Les bras se déplacent ensemble au dessus de la même piste de toutes les surfaces. Un cylindre est lensemble des pistes sous le bras en un point donné de toutes les surfaces. Lors dun lecture ou dune écriture, le contrôleur de disque envoie une commande pour déplacer le bras sur la bonne piste (seek). Le temps nécessaire à cette opération est le temps de recherche. Le temps pour que le secteur désiré atteigne la tête est appelé délais de rotation. Les nouveaux disques atteignent des vitesses de 7200 tours par minute (RPM).

130 5.1 Les types de composants de stockage Le temps pour que le secteur désiré atteigne la tête est appelé délais de rotation. Les nouveaux disques atteignent des vitesses de 7200 tours par minute (RPM). Le temps de transfert est le temps nécessaire pour transférer un bloc de bits, typiquement un secteur. Cette variable dépend de la taille du bloc, de la vitesse de rotation, de la densité denregistrement dune piste et de la vitesse de lélectronique interconnectant le disque à lordinateur. Le temps contrôleur est le surcoût que le contrôleur impose pour effectuer laccès E/S.

131 5.1 Les types de composants de stockage Lavenir des disques magnétiques. Lamélioration de la capacité des disques sexprime par la densité par unité de surface. Lutilisation de DRAM en tant que disques. Solid state disks (SSD). Ce sont des DRAMs avec une batterie pour rendre le système non volatile. Il fait appel au système dexploitation pour le transferts. Une autre technologie est le stockage étendu (Extended Storage). Cest une grande mémoire qui autorise uniquement des transferts de blocs depuis et vers la mémoire principale. Les deux techniques ont des temps de recherche courts et un grand débit de transfert.

132 5.1 Les types de composants de stockage Les disques optiques. CD-ROM. Ils sont peu chers à fabriquer. Lecture seule (Les données sont non modifiables). Il existe des CD réinscriptibles (plus lents que le CD-ROM) oú linformation peut être inscrite un nombre limité de fois. Les bandes magnétiques. Même technologie que les disques magnétiques mais beaucoup moins chère en raison la géométrie de la bande qui ne permet pas un accès aléatoire. Accès séquentiel Utilisé principalement pour les sauvegardes. Les bibliothèques automatiques de bandes. Couplage de plusieurs bandes magnétiques gérées par un robot. Enorme quantité dinformation peut y être stockée.

133 5.2 Les bus – la connexion de composants dE/S à lUC et la mémoire. Un bus permet la communication entre les interfaces (UC, mémoires, périphériques…). Les bus sont très souples et peu chers. Inconvénient: crée un goulot détranglement pouvant limiter le débit maximal dE/S. Le design des bus est difficile car la vitesse maximale du bus est limitée par des facteurs physiques (longueur du bus et le nombre de composants). Ces limites empêchent daccélérer à volonté le bus. On veut des bus à E/S fréquentes et des débits dE/S élevés, ce qui pose des contraintes de conception contradictoires. Il y a deux types de bus: Bus UC-mémoire (courts,très rapide) Bus E/S (longs,moins rapide)

134 5.2 Les bus – la connexion de composants dE/S à lUC et la mémoire. Une transaction typique: Envoyer ladresse. Recevoir/envoyer la donnée. Les termes lecture et écriture se font par rapport à la mémoire. Une lecture transfert les données depuis la mémoire vers sa destination Une écriture, écrit des données en mémoire. Les décisions pour concevoir un bus Largeur du bus Largeur de données Taille du transfert Transaction éclatée Horloges

135 5.2 Les bus – la connexion de composants dE/S à lUC et la mémoire. Seules les maîtres du bus peuvent peuvent démarrer une transaction lecture ou écriture. Un bus a plusieurs maîtres quand il y a plusieurs UC ou quand les composants dE/S peuvent initialiser une transaction sur le bus. Un système darbitrage permet de gérer les différents maîtres. Avec plusieurs maîtres, un bus peut offrir une bande passante plus élevée en manipulant des paquets, par opposition à lutilisation bloquée du bus pour une transaction complète. Cela se nomme les transactions éclatées. Un bus utilisant ce système possède une plus grande bande passante mais possède également une latence plus importante qu un bus qui est conservé pendant la totalité de la transaction. Un bus peut être synchrone (possède une horloge et un protocole pour les données et les adresses par rapport à lhorloge) ou asynchrone.

136 5.2 Les bus – la connexion de composants dE/S à lUC et la mémoire. Les bus synchrones sont généralement rapides et peu chers mais en contrepartie, tout le bus doit fonctionner à la même fréquence dhorloge. Un bus asynchrone na pas dhorloge, il possède des protocoles de poignée de main (hand shaking). Ce type de bus permet lallongement du bus sans se préoccuper de dispersions dhorloge. Linterface des composants de stockage avec lUC. Le bus E/S peut être connecté à la mémoire ou au cache Dans le cas où il est connecté à la mémoire: Une commande E/S sur le bus peut interférer avec une autre lecture dinstruction par lUC. La méthode la plus courante dadressage dun composant dE/S par lUC est nommée Les E/S mappées en mémoire Des parties de lespace adressable sont affectées aux composants dE/S

137 5.2 Les bus – la connexion de composants dE/S à lUC et la mémoire. Une autre méthode consiste à utiliser des codes opérations dédiés aux E/S dans lUC. LUC envoie un signal indiquant quune adresse est pour des composants E/S. Quelle que soit la technique dadressage choisie, chaque composant E/S a des registres pour fournir des informations détat et de contrôle. Ces registres détat sont continuellement testés par lUC pour savoir si la prochaine opération dE/S est prête. Cest linterrogation (polling). Cette interrogation gaspille une grande quantité de temps UC. Pour cette raison, les architectures modernes utilisent un système de dinterruptions qui permet de décharger lUC, lui donnant plus de temps pour lexécution des processus. Cette technique est la clé des systèmes dexploitation multitâches.

138 5.2 Les bus – la connexion de composants dE/S à lUC et la mémoire. Cette technique provoque cependant un surcoût pour les OS. Dans certains cas où il y a des centaines dopération dE/S par seconde (temps réel), cela devient insupportable pour lOS. Retirer à lUC la responsabilité des E/S. Les interruptions libérent lUC de lattente de chaque événement dE/S mais il y encore beaucoup de cycles UC passés en transferts de données. Des dispositifs daccès direct mémoire (DMA) sont ajoutés à beaucoup dordinateurs pour permettrent des transferts dun grand nombre de mots sans intervention de lUC. Le DMA est un processeur spécialisé qui transfère des données entre la mémoire et un composant E/S pendant que lUC soccupe dautres tâches. Il est extérieur à lUC et doit agir comme un maître du bus.

139 5.2 Les bus – la connexion de composants dE/S à lUC et la mémoire. Il est extérieur à lUC et doit agir comme un maître du bus. LUC initialise dabord les registres du DMA, qui contiennent une adresse mémoire et le nombre doctets à transférer. Une fois le transfert DMA terminé, le contrôleur interrompt lUC. Il peut y avoir plusieurs composants DMA dans un ordinateur Il est possible daccroître la performance DMA et donc décharger davantage lUC: des composants appelés processeurs dE/S (I/O processor controller) opèrent à partir de programmes fixes ou de programmes chargés par lOS. Celui-ci établit généralement une file dattente de blocs de contrôle E/S qui contiennent des informations telles que la localisation de données et la taille des données. Le processeur dE/S prend alors les informations dans la file, fait tout ce qui est demandé et envoie une interruption seulement lorsque la tâche spécifiée dans les blocs de contrôle des E/S est terminée.

140 5.3 Mesures des performances des E/S. Deux mesures : Bande passante E/S Latence E/S Modèle client-serveur: Le client crée des tâches à réaliser et les place dans un tampon; le serveur les prend dans un tampon de type FIFO (premier entré, premier sorti) et les exécute. Le temps de réponse est défini comme le temps qui sécoule entre le moment où une tâche est placée dans le tampon et le moment où le serveur termine son exécution.

141 5.3 Mesures des performances des E/S. Le débit est le nombre moyen de tâches effectuées par le serveur pendant une période donnée.

142 5.4 Fiabilité, disponibilité et RAID La fiabilité peut seulement être accrue par lamélioration de lenvironnement, en construisant des composants plus fiables. La disponibilité détermine sil un système donné est encore en mesure de performer malgré une contrainte donnée. Une innovation qui améliore à la fois la disponibilité et la performance dun système de stockage correspond aux matrices de disques. Puisque le prix par méga octet est indépendant de la taille du disque, le débit potentiel peut être augmenté en ayant beaucoup de contrôleurs de disques, et donc beaucoup de bras de disques. Linconvénient : avec trop de composants, la fiabilité chute : N composants ont généralement 1/N fois la fiabilité dun seul composant.

143 5.4 Fiabilité, disponibilité et RAID Une matrice de disque ne peut jamais être plus fiable quun petit nombre de disques de plus grande capacité si chaque disque a le même taux de pannes. La disponibilité peut cependant être améliorée en ajoutant des disques redondants. Si un disque tombe en panne, linformation perdue peut être reconstituée à partir de linformation redondante. Le seul danger: avoir une nouvelle panne disque entre le moment où un disque tombe en panne et le moment où il est remplacé, cest le temps moyen jusquà réparation (mean time to repair – MTTR). Ces systèmes de disques redondants porte le nom de RAID (Redundant Array of Inexpensive Disks).

144 5.4 Fiabilité, disponibilité et RAID RAID 1: Disques miroir. Utilise le double du nombre de disques. Chaque données est écrite sur le deux disques. Il y constamment deux copies de linformation. Si un disque tombe en panne, le système sadresse au miroir pour obtenir linformation. RAID 3: La parité entrelacée au niveau du bit. Au lieu davoir une copie complète de toute linformation, on a juste besoin de suffisamment dinformation redondante pour reconstituer linformation perdue en cas de défaillance. Les lectures et les écritures vont vers tous les disques du groupe, avec un disque supplémentaire pour contenir linformation de vérification au cas où il y ait une défaillance.

145 5.4 Fiabilité, disponibilité et RAID RAID 3: La parité entrelacée au niveau du bit (suite). Quand un disque tombe en panne, on soustrait alors toutes les données des bons disques des données du disque de parité. Linformation résultante est linformation manquante. La parité est simplement la somme modulo 2. RAID 5: La parité distribuée entrelacée par bloc. Même organisation des disques mais les données sont accèdées différemment. De petites écritures peuvent être faites en parallèle La parité associée à chaque ligne de blocs de données nest plus restreinte à un seul disque. Cela permet plusieurs écritures simultanées si les unité de découpage ne sont pas situées sur les mêmes disques.

146 Chapitre 6 : Réseaux dinterconnexion

147 6.1: Introduction Utilité : connecter un ensemble dordinateurs pour former une communauté. Une communauté est composée de: Nœuds (node) Interface logicielle (software interface) Interface matérielle (hardware interface) Lien (link) Réseau dinterconnexion (interconnection network)

148 6.1: Introduction En fonction de nombre de nœuds et de leur proximité, les réseaux ont plusieurs noms: Réseau de machine massivement parallèle (massively parallel network processor) Peut connecter des milliers de nœuds Distance maximale généralement de moins de 25 mètres Réseau local (local area network LAN) Peut connecter des centaines à des milliers dordinateurs La distance peut atteindre quelques kilomètres Réseau longue distance (wide area network) Connexion de milliers dordinateurs Connexion à travers le monde

149 6.2: Un réseau simple Réseau de 2 ordinateurs: Les machines communiquent par messages Cest une partie logicielle du système dexploitation qui permet de traduire les requêtes (messages) Lenvoie du message se déroule comme ci-dessous: Lapplication copie la donnée à envoyer dans un tampon du système dexploitation

150 6.2: Un réseau simple Le système dexploitation calcule le code de redondance, lincluse dans len-tête ou la queue du message, et démarre alors le chronomètre Le système dexploitation envoie la donnée dans le matériel dinterface réseau et indique au matériel denvoyer le message. La réception du message suit alors: Le système copie la donnée depuis le matériel de linterface réseau dans le tampon du système dexploitation. Le système calcule le code de redondance sur les données. Si ce code correspond au code de redondance de lémetteur, le récepteur renvoie un accusé de réception à lémetteur. Sinon, il supprime le message,,en supposant que lémetteur lexpédiera à nouveau quand le temps associé à lenvoi sera écoulé. Si la donnée passe le test, le système copie la donnée dans lespace dadressage de lutilisateur et indique à lapplication de continuer.

151 6.2: Un réseau simple Format de message Cette suite de règles que suit le logiciel se nomme un protocole Ex: UDP/IP, TCP/IP

152 6.2: Un réseau simple Pour quantifier les performances des réseaux, on utilise plusieurs mesures: La bande passante (bandwith): Délai maximal avec lequel le réseau dinterconnexion peut propager linformation une fois que le message est entré dans le réseau. Le temps de transmission (transmission time): Temps pour que le message qui passe à travers le réseau soit égal à la taille du message divisé par la bande passante. Le temps de transit (time of flight): temps pour que le premier bit du message arrive au récepteur. Cela comprend les délais dûs aux répéteurs ou autres éléments matériels dans le réseau. La latence de transport (transport latency): La somme du temps de transit et du temps de transmission. Surcoût émetteur (sender overhead): temps pour que le processeur injecte le message dans le réseau dinterconnexion.

153 6.2: Un réseau simple Surcoût récepteur (receiver overhead): Temps pour que le processeur retire le message du réseau dinterconnexion.

154 6.3: Connecter le réseau dinterconnexion à lordinateur Les machines massivement parallèle utilisent typiquement le bus mémoire alors que les réseaux locaux et logue distance se connectent sur le bus dE/S En général, les gros messages sont envoyés plus efficacement par un DMA. Pour la réception, de message, il faut faire en sorte déviter de faire appel au système dexploitation.

155 6.4: Les supports des réseaux dinterconnexion Il existe plusieurs supports pour permettre aux machines de communiquer entre elles: Paire torsadée (twisted pair):peut transférer quelques megabits/s sur plusieurs kilomètres sans amplification. Câble coaxial :un câble de 50 ohms peut délivrer 10 mégabits/s sur 1 kilomètre. Fibre optique (fiber optic): Transmettent linformation sous forme dimpulsion de lumière. Elle sont unidirectionnelles. Fibre multimode : permet à la lumière de se disperser et utilise comme source de lumière des LED bon marché. Permet de transporter linformation à 1000M bits/s sur quelques centaines de mètres ou à 100 M bits/s sur quelques kilomètres. La fibre monomode: possède une seule longueur donde. Transporte des gigabits dinformation par seconde sur des centaines de kilométres.

156 6.4: Les supports des réseaux dinterconnexion Connecter des fibres monomodes est beaucoup plus difficile que de connecter des fibres multimodes.

157 6.5: Connecter plus de deux ordinateurs Support partagé ou commuté La manière la plus simple de connecter plusieurs ordinateurs est de les faire partager un seul support dinterconnexion. Le réseau local le plus populaire est ethernet. Si le support est partagé, il doit y avoir un mécanisme pour coordonner lutilisation du support partagé, pour quun seul message soit envoyé à la fois. Si le réseau contient un grand nombre de nœuds sur un plusieurs kilomètres, il faut alors un arbitrage distribué. Un nœud écoute dabord pour être sûr quil nenvoie pas un message pendant quun autre message est sur le réseau. Si par hasard, deux messages se trouvent sur le réseau en même temps, il y a collision (deux nœuds envoient un message en même temps)

158 6.5: Connecter plus de deux ordinateurs Linterface réseau peut essayer de détecter ces collisions en regardant si plusieurs messages ont été mélangés. Cest la détection de collision. Les supports partagés sont bon marché mais ils ont une bande passante limitée Un alternative au partage du support est davoir une ligne dédiée vers un commutateur (switch) qui fournit à son tour une ligne dédiée vers dautres destinations. La bande passante est grandement améliorée. Les commutateurs permettent une communication directe de la source vers la destination, sans que des nœuds intermédiaires interfèrent avec cette communication (point to point communication)

159 6.5: Connecter plus de deux ordinateurs Topologie de commutateur Plusieurs topologies théoriques, mais très peu sont implantées dans lindustrie. On en nomme deux: Topologie des machines massivement parallèles (MMP) Topologie des réseaux locaux et longue distance Un réseau crossbar permet à tout nœud de communiquer avec tout nœud avec une seule traversée du réseau. Un réseau Oméga utilise moins de matériel que le réseau crossbar (n log 2 n au lieu de n 2 ). On appelle contention les différents blocages possibles entre les nœuds. Une autre topologie consiste en un arbre avec une augmentation de la bande passante dans larbre pour répondre aux besoins des configurations courantes de communication.

160 6.5: Connecter plus de deux ordinateurs Une autre solution pour un commutateur distribué est un réseau qui connecte une suite de noeuds. Cest la topologie de lanneau. Un anneau set capable de plusieurs transferts simultanés, contrairement aux lignes partagées. Une variante des anneaux qui est utilisée dans les réseaux locaux est appelée anneau à jetons (token ring). Un seul emplacement (le jeton) est passé le long de lanneau pour déterminer que nœud peut envoyer un message. Un nœud ne peut envoyer un message que sil obtient le jeton. Routage: délivrer les messages Le support commuté utilise trois solutions de routage Le routage à partir de la source: le message spécifie le chemin vers la destination. Le circuit virtuel: Un circuit est établi entre la source et la destination. Le message ensuite le chemin quil suit.

161 6.5: Connecter plus de deux ordinateurs Le routage fondé sur la destination: un message contient une adresse destination et le commutateur doit choisir un chemin pour délivrer le message. Dans les réseaux longue distance, les commutateurs routent les message avec la politique ranger et propager (store and forward). Chaque commutateur attend que le message complet arrive au commutateur avant de lenvoyer au commutateur suivant. Le contrôle de congestion Lorsque la bande passante diminue, linterconnexion peut devenir engorgée avec trop de paquets. La solution de base: éviter de faire entrer de nouveaux paquets avant que le trafic soit réduit. Pour ce faire, trois méthodes existent: Suppression de paquets : si un paquet arrive à un commutateur et quil ny a pas de place dans le tampon, le paquet est supprimé.

162 6.5: Connecter plus de deux ordinateurs Contrôle de flux: Utiliser une contre réaction pour indiquer à lémetteur quand il est autorisé à envoyer le paquet suivant. Paquets de notification de congestion: cest à chaque commutateur de voir son niveau doccupation et dentrer dans un état davertissement quand il dépasse un certain seuil. Chaque paquet reçu dans un état davertissement sera renvoyé à la source via un paquet de notification de congestion qui comprend la destination voulue.

163 6.6: Les questions pratiques pour les réseaux dinterconnexion commerciaux La normalisation les standards populaires sont peu chers et très stable. Une norme permet à beaucoup de sociétés de fabriquer de produits avec des interfaces pour la norme, et le client na pas à attendre dune seule compagnie quelle développe le interfaces pour tous les produits qui peuvent lintéresser. Il faut cependant un temps important avant quune norme voit le jour en raison de la latence des comités à se mettre daccord. Les réseaux dinterconnexion des MMP sont propriétaires alors que les réseaux locaux et longue distance sont normalisés. La tolérance aux pannes Savoir si tous les nœuds de linterconnexion sont opérationnels pour fonctionner correctement. Cependant, aucun réseau comportant un grand nombre de nœuds peut espérer aucune défaillance

164 6.7: Exemple de réseaux dinterconnexion Ethernet Standard 10 mb/s proposé en 1978 Utilisé pratiquement partout Utilise la détection de paquets avec une loi exponentielle pour arbitrer laccès au réseau Codifié sous la norme IEEE Selon la manière dont les composants passent le trafic et les types de réseaux dinterconnexion quils peuvent relier, ils ont des noms différents: Ponts: connectent des réseaux locaux entre eux, passant le trafic dun côté à lautre selon ladresse du paquet. Routeurs: Connectent des réseaux locaux à des réseaux longue distance ou des réseaux longue distance entre eux et résolvent les problèmes dadresses incompatibles.

165 6.7: Exemple de réseaux dinterconnexion Un successeur potentiel dEthernet est FDDI (Interface Données Distribuées par Fibre ) (Fiber Distributed Data Interface). Ce réseau est fondé sur loptique à 100 Mb/s et pourrait utiliser des câbles beaucoup plus longs.

166 6.8: Questions transversales pour les réseaux dinterconnexion Une interface efficace à la hiérarchie mémoire ou au réseau dinterconnexion Processeurs optimisés pour le traitement et surcoût récepteur Où tracer la frontière matériel/logiciel pour les fonctions dinterconnexion Protection est accès utilisateur au réseau

167 6.9: Linterconnexion de réseaux Une des inventions les plus importantes dans le domaine de communications a été la connexion des réseaux. Les technologies nécessaires pour la connexion de réseaux sont des normes logicielles qui permettent une communication fiable sans nécessiter des réseaux fiables. Chaque ordinateur, réseau et commutateur implémente sa couche de normes, sappuyant sur les autres composants pour remplis fidèlement ses obligations (OSI). La norme la plus populaire est TCP/IP. Une famille de protocoles permet de simplifier la norme en divisant de manière hiérarchique la responsabilité entre les couches. Chaque niveau fournit les services nécessaires à la couche supérieure.

168 6.9: Linterconnexion de réseaux Les différentes couches OSI

169 Chapitre 7 : Les multiprocesseurs

170 7.1 Introduction Une taxinomie des architectures parallèles Un seul flot dinstruction, un seul flot de données (single instruction, single datum - SISD) : cest le monoprocesseur commun. Un seul flot dinstructions, plusieurs flots de données (single instructions, multiple data - SIMD): La même instruction est exécutée par plusieurs processeurs utilisant différents flots de données. Chaque processeur a sa propre mémoire données, mais il y a une seule mémoire dinstructions et un seul processeur de contrôle qui lance les instructions. Plusieurs flots dinstructions, un seul flot de données (multiple instructions, single datum - MISD): aucune machine commerciale de ce type na été construite à ce jour. Plusieurs flots dinstructions, plusieurs flots de données (multiple instructions, multiple data – MIMD): Chaque processeur lit ses propres instructions et opère sur ses propres données.

171 7.1 Introduction Les premiers multiprocesseurs étaient SIMD. De nos jours, le modèle MIMD a surgit comme larchitecture évidente à choisir pour le multiprocesseurs dusage général: Flexible : peut fonctionner comme une machine simple utilisateur destinée à la haute performance pour une application, comme une machine avec multiprogrammation exécutant beaucoup de tâches simultanément, ou selon une certaine combinaison de ces fonctions. Un MIMD peut être construit en sappuyant sur les avantages coût performance des microprocesseurs standard. Les machine MIMD actuelles sont classables en deux groupes, selon le nombre de processeurs. Architectures à mémoire partagée centralisée Au plus quelques douzaines de processeurs en1990 Se partagent la même mémoire physique

172 7.1 Introduction La connexion est typiquement réalisée par un bus Temps daccès uniforme pour chaque processeur

173 7.1 Introduction Architectures à mémoire physiquement distribuée Pour avoir un plus grand nombre de processeur, il faut avoir une mémoire distribuée entre ces derniers. Dans le cas contraire, le système mémoire serait incapable de fournir les besoins en bande passage dun grand nombre de processeurs. Cest une manière économique détendre le débit mémoire, si beaucoup des accès concernent la mémoire locale au nœud. La latence des accès mémoire est réduite. En revanche, la communication des données entre processeurs devient plus complexe et a un latence plus élevée.

174 7.1 Introduction Modèles de communication et architecture mémoire Deux méthodes pour communiquer entre plusieurs processeurs et des mémoires physiquement distribuées: Mémoire partagée distribuée : une référence mémoire peut être faite par tout processeur à toute case mémoire Machine à passage de messages: des messages sont envoyés pour commander des actions ou envoyer des données. Cest un appel de procédure lointain (Remote procedure call - RPC). Quand le processeur destination reçoit le message, que ce soit pas interrogation ou par interruption, il réalise lopération et renvoie le résultat par un message en retour.


Télécharger ppt "INF 2500 : Architecture des ordinateurs. Chapitre 1 : Introduction."

Présentations similaires


Annonces Google