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

@Pierre Marchand et Martin Dubois, 20021 IFT-17584 Programmation système.

Présentations similaires


Présentation au sujet: "@Pierre Marchand et Martin Dubois, 20021 IFT-17584 Programmation système."— Transcription de la présentation:

1 @Pierre Marchand et Martin Dubois, 20021 IFT-17584 Programmation système

2 @Pierre Marchand et Martin Dubois, 20022 Chargé de cours Martin Dubois Expériences Coordonnées  Courriel: martin.dubois@ift.ulaval.camartin.dubois@ift.ulaval.ca Disponibilité  Par courriel en tout temps  Sur rendez-vous en tout temps  Sans rendez-vous – Voir le guide d’étude hebdomadaire

3 @Pierre Marchand et Martin Dubois, 20023 Professeur responsable Pierre Marchand  Coordonnées : Bureau : PLT-3958 Téléphone : 656-2131, #7409 Fax : 656-2324 Courriel : marchand@ift.ulaval.ca

4 @Pierre Marchand et Martin Dubois, 20024 Site WEB du cours http://www.ift.ulaval.ca/~marchand/ift17584/ Ce site contient Documentation Transparents Guides d’étude Énoncés des travaux Liens intéressants

5 @Pierre Marchand et Martin Dubois, 20025 Préalables  IFT-17583 : Structure interne des ordinateurs ou  IFT-19638 : Organisation matérielle et logicielle de l’ordinateur et  IFT-17582 : Algorithmique et programmation ou  IFT-15750 : Éléments d’algorithmique ou  IFT-21027 : Introduction à la programmation scientifique

6 @Pierre Marchand et Martin Dubois, 20026 Objectifs du cours Nombre de crédits : 3 Objectif général -Acquérir une meilleure connaissance de la structure interne d’un ordinateur et de son système d’exploitation.

7 @Pierre Marchand et Martin Dubois, 20027 Lien avec d’autres cours Structure interne des ordinateurs Représentation interne des nombres et des caractères Microprocesseurs Interfaces de communication Langage machine Structure interne des ordinateurs

8 @Pierre Marchand et Martin Dubois, 20028 Lien avec d’autres cours Modes d’adressage Pointeurs dans les langages de haut niveau Algorithmique et programmation Et Structures de données

9 @Pierre Marchand et Martin Dubois, 20029 Lien avec d’autres cours Passage de paramètres Interface avec les langages de haut niveau Génération de code par les compilateurs et les interprètes Algorithmique et programmation, Structures de données et Techniques de compilation et d’interprétation

10 @Pierre Marchand et Martin Dubois, 200210 Lien avec d’autres cours Interruptions Processus concurrents dans les systèmes d’exploitation contrôle des entrées/sorties Systèmes d’exploitation I Et Systèmes temps réel I

11 @Pierre Marchand et Martin Dubois, 200211 Évaluation des apprentissages 2 examens partiels Le premier, le 4 novembre 2002, comptant pour 30% de la note finale, le second, le 16 décembre 2002, comptant pour 40% de la note finale. Ces examens sont à livre ouvert. Pour réussir le cours, en plus d’obtenir un minimum de 50 % comme note finale vous devez aussi obtenir un minimum de 50 % sur le total des deux examens. 3 travaux comptant chacun pour 10% de la note finale. Les dates et heures de remises sont: 8 h 25 le mardi 15 octobre 2002 8 h 25 le lundi 4 novembre 2002 8 h 25 le lundi 16 décembre 2002

12 @Pierre Marchand et Martin Dubois, 200212 Qualité du français Pour tous les travaux et examens, 1 % de la note totale pourra être enlevé par faute et ce jusqu’à concurrence de 10 % de la note totale.

13 @Pierre Marchand et Martin Dubois, 200213 Plagiat Tolérance Zéro Tout cas sera rapporté à la direction Les travaux se font en équipe de DEUX Les examens se font en équipe de UN

14 @Pierre Marchand et Martin Dubois, 200214 Exercices But Vous faire pratiquer rapidement les éléments abordés Éveiller votre curiosité face aux éléments qui seront bientôt abordés Vous préparer aux travaux pratiques Vous préparer aux examens Est-ce que ça compte ?

15 @Pierre Marchand et Martin Dubois, 200215 Documentation obligatoire Manuels disponibles sur le site Web du cours en format pdf : 1. Intel Architecture Software Developer’s Manual, Volume 1 2. Résumé des instructions du Pentium III ou Intel architecture Software Developer ’s Manual, Volume 2 3. Les présentes acétates disponibles sur le site Web du cours en format pdf.

16 @Pierre Marchand et Martin Dubois, 200216 Pourquoi l’assembleur ? Raisons pédagogiques L’apprentissage et l’utilisation de l’assembleur permet de mieux comprendre plusieurs concepts de base de l’informatique.  les langages de haut niveau: Variables globales Utilisation de la pile Variables locales Allocation dynamique Passage de paramètres  Les compilateurs et éditeurs de liens  La structure interne des processeurs  Les calcules en virgule flottante  Le déroulement des interruptions

17 @Pierre Marchand et Martin Dubois, 200217 Pourquoi l’assembleur ? Raisons pratiques  Pour obtenir des portions de programme plus Rapides Compactes Adapté au matériel utilisé  Pour mieux contrôler le processeur lui même Mémoire virtuelle Configuration de la mémoire cache  Pour mieux accéder aux périphériques  Pour réaliser des compilateurs  Pour réaliser les parties sensibles des systèmes d’exploitations

18 @Pierre Marchand et Martin Dubois, 200218 Pourquoi l’assembleur ? Raisons personnelles  Parce que c’est amusant !!!

19 @Pierre Marchand et Martin Dubois, 200219 Inconvénients de l’assembleur  Plus long à programmer que les langages de haut niveau  Pas de vérification de types  Pas de structures de contrôle (if, while, etc.)  Dépend du processeur  Empêche de profiter des avantages et avancements des processeurs des compilateurs et des autres outils de développement

20 @Pierre Marchand et Martin Dubois, 200220 Machine de von Neumann Processeur 8 bits

21 @Pierre Marchand et Martin Dubois, 200221 Machine de von Neumann Exécution séquentielle des instructions en 5 étapes  Chargement (fetch) de l’instruction  Décodage de l’instruction  Chargement des opérandes s’il y a lieu  Exécution  Écriture du résultat Même avec une horloge de 1 GHz, un tel processeur serait plus lent que les processeurs d’aujourd’hui. Pourquoi ?

22 @Pierre Marchand et Martin Dubois, 200222 Limites de la machine de von Neumann  La largeur des registres (8 bits).  La largeur du bus d’adresses (16 bits -> 64 Ko max de RAM).  Absence d’unité de calcul en virgule flottante  Absence d’unité de mémoire virtuelle  Le nombre important d’étapes d’exécution par instruction

23 @Pierre Marchand et Martin Dubois, 200223 Comment les processeurs actuelle atteignent-ils de telles performances ? 1. Augmenter la vitesse de l’horloge. Ceci implique généralement la réduction de la géométrie sur la puce pour minimiser les délais de propagation et la consommation de puissance. La technologie en est aujourd’hui à ~ 0,13 microns (µm). Les vitesses d’horloge atteignent présentement plus de 1 GHz (2 GHz pour le Pentium 4). La vitesse d’horloge à un impact important sur l’utilisation du bus externe La durée d’un cycle d’horloge est de l’ordre d’un ns Les temps d’accès au mémoires est de l’ordre de quelques dizaines de ns L’utilisation de mémoire cache devient rapidement nécessaire

24 @Pierre Marchand et Martin Dubois, 200224 Amélioration de la performance 2. Augmenter la largeur du bus Les processeurs modernes ont des bus de données de plus en plus larges, ce qui augmente la quantité d’infor- mations (données et instructions) lues lors de chaque accès à la mémoire. 3. Exécuter les différentes instructions de façon combinatoire plutôt que séquentielle. Multiplicateurs combinatoires, décaleurs à barillet, retenue anticipée. Viser à ce que la plupart des instructions s’exécutent en 1 cycle d’horloge.

25 @Pierre Marchand et Martin Dubois, 200225 Amélioration de la performance 4.Introduire du parallélisme Pipeline. Plusieurs unités d’exécution travaillant simultanément: Processeurs super scalaires (plus d’une instruction par cycle d’horloge). Prédiction de branchements pour assurer l’efficacité du pipeline 5.Simplification du décodage des instructions Instruction de longueur fixe Réduction du jeu d’instruction Micro-code Réduction du nombre de mode d’adressage

26 @Pierre Marchand et Martin Dubois, 200226 Amélioration de la performance 6.Transférer une partie de la complexité au compilateur Architecture Load / Store.

27 @Pierre Marchand et Martin Dubois, 200227 Architecture RISC Les différent moyens que nous venons de voir pour améliorer la performance forment la base de l’architecture RISC (Reduced Instruction Set Computer). Cependant, la technologie RISC n’a que peu à voir avec le jeu d’instructions. La technologie RISC voulait compétitionner les architectures des années 80 dites CISC (Complex Instruction Set Computer) dans lesquelles certaines instructions complexes étaient plus lentes que les instructions simples qu’elles remplaçaient.

28 @Pierre Marchand et Martin Dubois, 200228 RISC vs CISC Format des instructions Intel (CISC) movax, sVar1 addsVar2, ax Instruction à 1 ou 2 adresses (registre ou mémoire) Non orthogonal Format des Instructions RISC ldr0, sVar1 ldr1, sVar2 addr2, r0, r1; r2 = r0 + r1 stsVar2, r2 Instruction à 3 adresses (registre) Orthognalité

29 @Pierre Marchand et Martin Dubois, 200229 Ressemblances RISC et CISC Les processeurs CISC actuels comme le Pentium 4 ont adopté plusieurs des principes de l’architecture RISC : pipeline, cache interne, unités d’exécution multiples. Dans le Pentium 4, Intel va même jusqu’à traduire les instructions CISC de l’architecture IA-32 en 2-3 instructions RISC qui sont ensuite exécutées.

30 @Pierre Marchand et Martin Dubois, 200230 Le Pentium 4

31 @Pierre Marchand et Martin Dubois, 200231 Le début de la famille x86  L’histoire de la famille 80x86 d’Intel commence dans les années 70 avec le 8080, un processeur de 8 bits avec un bus d’adresses de 16 bits, qui pouvait adresser un total de 64 Ko.  Vers 1980, le 8086 et le 8088 font leur apparition, ce dernier avec le premier PC d’IBM. Ce sont des processeurs de 16 bits avec un bus d’adresses de 20 bits, qui avaient une capacité d’adressage de 1 Mo. Le 8088 diffère du 8086 par la largeur du bus de données externe qui est de 8 bits.

32 @Pierre Marchand et Martin Dubois, 200232 Une décision aux lourdes conséquences  Toutefois, même si le bus d’adresses était de 20 bits, les registres internes d’adresses étaient toujours de 16 bits pour assurer la compatibilité avec le 8080. Comment donc accéder au reste de la mémoire?  Toute la complexité des processeurs Intel vient de la solution adoptée à cette époque pour régler ce problème.

33 @Pierre Marchand et Martin Dubois, 200233 Adresses et segments On décida que l’adresse serait constituée des 16 bits des registres internes ajoutée à 16 fois le contenu d ’un des quatre registres appelés registres de segment. Ces quatre registres étaient CS (Code Segment), DS (Data Segment), SS (Stack Segment) et ES (Extra Segment). Adresse 20 bits Offset 16 bits + 0000 Segment

34 @Pierre Marchand et Martin Dubois, 200234 Les segments  On remarque que chaque segment a une taille de 64 Ko (offset 16 bits), et que la distance entre chaque segment peut aller de 16 octets à 64 Ko.  La capacité totale d ’adressage est : FFFF0 + FFFF = 10FFEF, qui dépasse légèrement 1 Mo (FFFFF).  On remarque aussi que les segments peuvent se chevaucher.

35 @Pierre Marchand et Martin Dubois, 200235 L’arrivé du 80286  Le 80286 fait son apparition quelques années plus tard avec un bus d’adresses de 24 bits (capacité de 16 Mo). C’est là que les choses se compliquent.  Jusqu’alors, les processeurs fonctionnaient en ce qu’Intel appelle le « mode réel ». Les systèmes d’exploitation utilisés avec ces processeurs étaient mono-tâches et mono-usagers. Les registres de segment contenaient de vraies adresses, et l’utilisateur pouvait accéder sans limite à toutes les ressou- rces du système : les périphériques, les interruptions, etc.  Toutefois, les registres de segment demeuraient de 16 bits. Comment donc accéder aux 16 Mo que permettait le bus d’adresses du 80286?

36 @Pierre Marchand et Martin Dubois, 200236 Historique  Pour permettre l’avènement de systèmes d ’exploitation plus performants et une plus grande capacité de mémoire, Intel introduisit avec le 80286 le « mode protégé ».  Mais comme la plupart des applications roulant sous MS-DOS, qui dominait le marché, étaient incompatibles avec le mode protégé, on continua pendant des années à fonctionner en mode réel avec une capacité de mémoire de 1 Mo.  Windows 95 / 98 / Me souffre toujours de cette limitation.  Le 386 connu en partie le même sort.

37 @Pierre Marchand et Martin Dubois, 200237 Historique  Le 80286 fut donc longtemps considéré comme un 8086 rapide parce que personne ne savait comment utiliser le mode protégé. Pourtant, ce processeur offrait la mémoire virtuelle, des droits d’accès pour la sécurité, des niveaux de privilège d’exécution, etc.  Pendant ce temps, Motorola mettait en marché la famille 68000, qui offrait des registres de 32 bits et, à partir de 1985 avec le 68020, une capacité d ’adressage de 4 Go.

38 @Pierre Marchand et Martin Dubois, 200238 Historique  En 1987, Intel met au point le 80386, puis le 80486, ensuite, le Pentium, le Pentium II, le Pentium III et finalement, en 2001, le Pentium 4.  Les ordinateurs de nos laboratoires sont munis de Pentium IV. Ils fonctionnent tous sous Windows 2000 et Linux.

39 @Pierre Marchand et Martin Dubois, 200239 Le Pentium Le Pentium est un processeur CISC :  Nombre très élevé d’instructions  La plupart des instructions peuvent accéder à la mémoire  Instructions de longueur très variable (8 à 108 bits)  Faible nombre de registres (4 registres généraux)  On ne vise pas l’exécution de chaque instruction en 1 cycle Il adopte cependant plusieurs des principes de la technologie RISC:  Pipeline  Multiples unités d’exécution  Caches internes

40 @Pierre Marchand et Martin Dubois, 200240 La famille Pentium Processeurs avec l’architecture IA-32  Pentium et Pentium MMX  Pentium Pro  Pentium II  Pentium III  Pentium 4 Description

41 @Pierre Marchand et Martin Dubois, 200241 La famille x86 en graphique

42 @Pierre Marchand et Martin Dubois, 200242 Le Pentium 4 par rapport aux autres Pentium Comparaison du Pentium 4 avec les autres membres de la famille Pentium De nouveaux benchmarks appelés SPECint2000 et SPECfp2000 sont maintenant utilisés.

43 @Pierre Marchand et Martin Dubois, 200243 Les nouveautés du Pentium 4 Qu’est-ce qui différentie le Pentium 4 de ses prédécesseurs ? Les ALU fonctionnent à 2 fois la fréquence de l’horloge, donc les opérations de base sur des entiers s’exécutent en 1/2 cycle d’horloge. Un pipeline de 20 étages. Nouveaux caches de niveau 1 :  Cache de micro-ops de 12 Ko  Cache de données de 8 Ko avec latence de 2 cycles Cache de niveau 2 de 256 Ko sur la puce même, avec une bande passante de 45 Go/s

44 @Pierre Marchand et Martin Dubois, 200244 Les nouveautés du Pentium 4 Qu’est-ce qui différentie le Pentium 4 de ses prédécesseurs ? Extensions SIMD 2.  144 instructions de plus que le Pentium III  Opérations arithmétiques SIMD sur des entiers  Opérations SIMD de virgule flottante de double précision.  Opérations de gestion des caches et de la mémoire. Bus système de 400 Mhz

45 @Pierre Marchand et Martin Dubois, 200245 L’architecture du Pentium 4

46 @Pierre Marchand et Martin Dubois, 200246 Le « front end » Le « front end » fournit les instructions dans l’ordre du programme au noyau d’exécution hors d’ordre. Il charge et décode les instructions IA-32 et les traduit en opérations simples appelées micro-ops. Ses principales fonctions sont :  Pré charger les instructions IA-32 qui sont susceptibles d’être exécutées.  Charger des instructions qui n’ont pas encore été pré- chargées.  Décoder les instructions IA-32 en micro-ops.  Générer le microcode pour des instructions complexes.  Fournir des instructions décodées à partir du cache d’exécution.  Prédire les branchements.

47 @Pierre Marchand et Martin Dubois, 200247 Le noyau d’exécution Le noyau d’exécution hors d’ordre (Out-of-order Execution Core) peut exécuter les instructions dans un ordre différent de celui du programme. Si une micro-op est retardée parce qu’elle attend des données ou une ressource qui n’est pas disponible, d’autres micro-ops qui la suivent dans le programme peuvent être exécutées en attendant. Il peut exécuter jusqu’à 6 micro-ops par cycle.

48 @Pierre Marchand et Martin Dubois, 200248 Les unité de calcules

49 @Pierre Marchand et Martin Dubois, 200249 L’unité de retrait L’unité de retrait (Retirement unit) reçoit les résultats des micro- ops du noyau d’exécution et les traite conformément à l’ordre du programme original. Quand une micro-op a terminé et écrit son résultat dans la destination, elle est retirée. 3 micro-ops peuvent être retirées par cycle. Le tampon de ré ordonnancement (ROB) est l’unité qui enregistre les micro-ops complétées, met à jour l’état architectural dans l’ordre et gère l’ordonnancement des exceptions. L’unité de retrait suit les branchements et envoie de l’information mise à jour sur les adresses cibles aux BTB (Branch Target Buffers) pour mettre à jour l’historique des branchements. Ainsi, les micro-ops qui ne sont plus utiles peuvent être purgées du cache et de nouveaux chemins de branchement peuvent être chargés.

50 @Pierre Marchand et Martin Dubois, 200250 Les registres d’entiers AHAL BHBL CHCL DHDL Registres généraux 31 15 7 0 SI DI BP SP EAX AX EBX BX ECX CX EDX DX ESI EDI EBP ESP Registres de Segment CS DS SS ES FS GS 150 Registres d'état et de contrôle 31 0 EFLAGS EIP 31 0 Registres fantômes Code Data Stack Extra F G Source index Destination index Base pointer Stack pointer FLAGS IP descriptor

51 @Pierre Marchand et Martin Dubois, 200251 Les registre de virgule flottante Opcode Registres de données Mantisse Exposant 79 78 64 63 0 R7 R6 R5 R4 R3 R2 R1 R0 Signe Pointeur d'instruction de FPU Pointeur d'opérande de FPU Registre de contrôle Registre d'état Registre Étiquette 15 0 470 100

52 @Pierre Marchand et Martin Dubois, 200252 Les registre de virgule flottante Registres de données du FPU 7 6 5 4 3 2 1 0 ST(2) ST(1) ST(0)Sommet Direction d'empilement 0 79

53 @Pierre Marchand et Martin Dubois, 200253 Les registres MMX Ces registres sont disponibles dans les processeurs Pentium MMX, Pentium II, Pentium III et Pentium 4. Attention : Ils sont physiquement les mêmes que les registres de virgule flottante. MM7 630 MM6 MM5 MM4 MM3 MM2 MM1 MM0

54 @Pierre Marchand et Martin Dubois, 200254 Les registre SIMD Ces registres ne sont disponibles que dans le Pentium III et le Pentium 4. XMM7 127 0 XMM6 XMM5 XMM4 XMM3 XMM2 XMM1 XMM0

55 @Pierre Marchand et Martin Dubois, 200255 Le registre EFLAGS CF = Carry Flag PF = Parity Flag AF = Auxiliary Carry Flag ZF = Zero Flag SF = Sign Flag TF = Trap Flag IF = Interrupt Enable Flag DF = Direction Flag OF = Overflow Flag IOPL = I/O Privilege Level NT = Nested Task Flag RF = Resume Flag VM = Virtual 386 Mode AC = Alignment Check VIF = Virtual Interrupt Flag VIP = Virtual Interrupt Pending ID = Identification Flag 00000000000001

56 @Pierre Marchand et Martin Dubois, 200256 Le registres de mémoire virtuelle

57 @Pierre Marchand et Martin Dubois, 200257 Les registres de déverminage

58 @Pierre Marchand et Martin Dubois, 200258 Les autres registres  Global Descriptor Table Register GDTR  Interrupt Descriptor Table Register IDTR  Local Descriptor Table Register LDTR  Task Register TR  Test Registers TR6 et TR7  Time Stamp Counter TSC

59 @Pierre Marchand et Martin Dubois, 200259 La cache  Un cache de données de niveau 1 de 8 Ko, associatif par 4 ensembles de blocs de 64 octets, à écriture simultanée.  Un cache d’instructions (µops) de 12 Ko.  Un cache unifié de niveau 2 interne de 256 Ko, associatif par 8 ensembles de blocs de 128 octets, à récriture.


Télécharger ppt "@Pierre Marchand et Martin Dubois, 20021 IFT-17584 Programmation système."

Présentations similaires


Annonces Google