INF 2500 : Architecture des ordinateurs - PowerPoint PPT Presentation

inf 2500 architecture des ordinateurs n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
INF 2500 : Architecture des ordinateurs PowerPoint Presentation
Download Presentation
INF 2500 : Architecture des ordinateurs

play fullscreen
1 / 174
INF 2500 : Architecture des ordinateurs
350 Views
Download Presentation
werner
Download Presentation

INF 2500 : Architecture des ordinateurs

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  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 : L’arrivée des microprocesseurs augmente les taux de performances de 35 % par année. • L’augmentation du nombre d’ordinateurs provoque la disparition du langage machine (Assembly language) au profit d’un langage orienté-objet (Object oriented programming) ainsi que la création de systèmes d’exploitation standards (ex: UNIX).

  4. 1.2 L’ordinateur moderne • Carte Mère (Motherboard) • Constitue le tronc commun de l’architecture. • 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 L’ordinateur moderne (suite) • Microprocesseur (CPU) • Unité centrale de traitement (UCT) . • Exécute l’ensemble des instructions à partir d’un langage de bas niveau (DLX,Z88,8085…). • Est étroitement relié à l’architecture. • Possède une hiérarchie de mémoire pour conserver les instructions (cache, cache L1, cache L2).

  6. 1.2 L’ordinateur moderne (suite) • Mémoire vive (RAM Memory) • Permet de conserver l’information à court terme (machine sous tension). • Leur capacité et rapidité sont en constante évolution.

  7. 1.2 L’ordinateur moderne (suite) • Les périphériques • Permettent l’interaction entre la machine et l’usager (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 d’un concepteur d’ordinateur • ‘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 d’un répertoire d’instruction rapide et optimal • Etude de l’organisation fonctionnelle: ce dont on a besoin pour que le tout soit en mesure d’interagir (un processeur sans bus de communication est inutile). • Design logique • Réalisation

  9. 1.3 Le rôle d’un concepteur d’ordinateur(suite) • L’optimisation d’un design présent requiert une technologie en constante évolution aussi bien pour les systèmes d’exploitation que pour les compilateurs que la logique. • Le jeu d’instruction 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 : • L’architecture du jeu d’instruction • L’organisation • La réalisation matérielle

  10. 1.3 Le rôle d’un concepteur d’ordinateur(suite) • L’organisation inclut les aspects de haut niveau de la conception comme le système de mémorisation, la structure de bus et l’unité centrale de traitement (UCT) qui gère l’arithmétique, la logique, les branchements et les transferts de données. • L’optimisation du design choisi peut se faire à l’aide d’applications et de programmes qui sont spécifiques au domaine à optimiser (débit mémoire, jeux d’instructions…) • L’optimisation d’une 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 n’est pas optimal)

  11. 1.4 L’évolution des technologies et de l’utilisation des ordinateurs • Evolution de l’utilisation des ordinateurs. • L’augmentation des logiciels force l’augmentation de la quantité de mémoire à raison de 1,5 à 2 par année. Ceci implique une croissance du nombre de bits d’adresse 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 l’efficacité d’exécution des programmes. • Désormais, les programmeurs de compilateurs et les concepteurs d’ordinateurs doivent travailler ensemble.

  12. 1.4 L’évolution des technologies et de l’utilisation des ordinateurs (suite) • Evolution des technologies d’implémentation. • La technologie des circuits intégrés logiques. • La densité des transistors (nombre de transistors par unité de surface) croit d’environ 50% par an. La taille des puces quant à elles croient d’environ 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 d’environ 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 l’utilisation des ordinateurs (suite) • Evolution des technologies d’implémentation (suite). • La technologie des disques magnétiques • La densité augmente de 50% par année • Le temps d’accès croit d’un tiers en 10 ans

  14. 1.5 Le coût et l’évolution du coût • Le coût d’un composant d’ordinateur 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é (c’est 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 l’usager paye, est différent du coût du système. • Une modification de 1000$ au niveau d’un 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 d’un 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 qu’un 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 à l’aide de programmes test.

  20. 1.6 Mesurer et publier les performances • Temps d’exécution total (Total execution time) • Méthode simple et rapide pour comparer les performances relatives. • Temps d’exé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 d’exécution pondéré (suite). • Temps d’exécution normalisé (Normalized execution time) • Il existe une autre méthode pour une charge de travail composée d’une répartition inégale de programmes. On normalise les temps d’exécution par rapport à une machine de référence et considérer les moyennes des temps d’exécution normalisés.

  22. 1.6 Mesurer et publier les performances (suite) • Temps d’exé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 l’UC 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 n’y a pas de dépassement. • Soit ‘int X,Y,Z’, sachant qu’un entier est représenté sur 16 bits (variable selon l’architecture). Le plus grand nombre pouvant être représenté sur 32 bits : 2^(16)-1=65535. 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 d’Amdahl. • Permet d’évaluer le gain de performance obtenu par l’amélioration d’un composant d’un ordinateur.

  24. 1.7 Les principes quantitatifs de la conception des ordinateurs (suite) • Loi d’Amdahl. • Permet d’évaluer le gain de performance obtenu par l’amélioration d’un composant d’un ordinateur.

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

  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 l’UC. • Construire et utiliser des outils pour mesurer les aspects d’un design est constitue une grande partie du travail d’un designer. • Il est difficile d’évaluer le temps de cycle d’un design qui n’est pas complété. • En revanche le nombre d’instructions est plus facile à déterminer à l’aide du compilateur. • Le CPI quant à lui est également difficile à estimer car il dépend de l’organisation détaillée du Processeur et du flux d’instruction. • 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 qu’ils 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 d’un 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 n’est pas valable lorsque l’on 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 l’UC qui contient les données et les instructions les plus récemment accédées. • Si l’UC trouve l’information en cache : succès cache (cache hit) • Si l’UC ne trouve pas l’information 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 l’espace d’adresse est coupé en blocs de taille fixe. • En mémoire vive, l’espace d’adresse est coupé en blocs de taille variable que l’on 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 n’est pas présente, on a un défaut de page (page fault). La page contenant l’information 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 d’exploitation) 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 n’est pas présente, on a un défaut de page (page fault). La page contenant l’information 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 d’instructions, principes et exemples

  35. 2.1 La classification des jeux d’instructions • Définition d’un jeu d’instruction: Portion visible de la machine pour les programmeurs ou les créateurs de compilateurs • La principale différence entre les différents jeux d’instruction réside dans le type interne de stockage dans le CPU • Sous forme d’une pile (stack) • Sous forme d’un 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 d’instructions (suite) • Après les années 80, l’ensemble des systèmes ont été conçus suivant l’architecture chargement rangement car: • Un registre est plus rapide qu’une 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 l’emplois de registres peut s’évaluer dans n’importe 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 d’instructions (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 L’adressage mémoire • La représentation de l’information en informatique se fait sur une base binaire (0 ou 1). L’unité de stockage est le bit. • Ce stockage de l’information nécessite plusieurs bits que l’on classe suivant l’échelle suivante (celle-ci peut varier selon l’architecture). • 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 l’ordre 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 L’adressage mémoire (suite) • Modes d’adressage (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 L’adressage mémoire (suite) • Pour ce qui est du nombre de bits pour le champ de déplacement, il convient d’avoir 12 à 16 bits et de 8 à 16 bits pour la taille du champ immédiat.

  41. 2.3 Les opérations dans le jeu d’instructions • Il existe différents types d’opé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 d’exploitation) • 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 d’instructions (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 d’instructions (suite) • Les sauts indirects sont utiles lorsque l’adresse 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<y?).

  44. 2.4 Type et taille des opérandes • Pour connaître le type d’une opérande, on peut regarder son codage dans le code opération (opcode). Il existe plusieurs types d’opé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.1Qu’est-ce que le pipeline? • Technique moderne fondamentale pour réaliser des Unités Centrales (UC) rapides • Semblable à une chaîne d’assemblage où chaque instruction passe à travers une série d’étapes (ou segments) fixes. • Le nombre d’étapes dans un pipeline dépend de l’architecture (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 d’une étape à une autre, s’appelle 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 d’horloge.

  47. 3.1Qu’est-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 d’exécution (Execution cycle) (EX) • Cycle d’accè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 l’envoie des données vers le prochain étage du pipeline.

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

  49. 3.2Les obstacles du pipeline :les aléas (suite) • Les aléas provoquent l’ajout d’une suspension de un ou plusieurs cycles dans le pipeline (pipeline bubble(s)). • Les aléas structurels • Elles interviennent lorsqu’une unité fonctionnelle n’est pas totalement pipelinée ou si une ressource n’a pas été dupliquée suffisamment pour permettre à toutes les combinaisons d’instructions de s’exé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 d’horloge. 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 l’unité.

  50. 3.2Les obstacles du pipeline :les aléas (suite) • Illustration d’un aléa structurel dans un pipeline