MIC - Cours de microprocesseurs

Appartient à l'UE Systèmes d'exploitation I

Personnes enseignantes

Description générale du cours

Concept fondamentaux liés aux microprocesseurs : machine virtuelle, représentation des données, gestion des entrées / sorties, segmentation de la mémoire, mode réel et protégé, coprocesseur mathématique, étapes de démarrage d’un ordinateur, décodage du set d’instructions élémentaires d’un microprocesseur, x86

Matières de base utilisées

Cours de structure des ordinateurs, cours de système d’exploitation.

Objectifs

Permettre aux étudiants de comprendre le fonctionnement d’un microprocesseur et de se familiariser avec le set d’instructions assembleur afin de favoriser la compréhension des langages de haut niveau.

Acquis d’apprentissage

  • Connaître le fonctionnement de base d’un processeur, au travers d’un modèle simplifié mettant en évidence les principes du calcul automatisé.
  • Connaître les différences entre le mode réel et le mode protégé des processeurs Intel x86, en termes de gestion de la mémoire centrale et des instructions disponibles.
  • Comprendre l’organisation de la mémoire centrale en mode réel sous Intel x86
  • Connaître les principes d’encodage binaire du code-machine, et savoir traduire en binaire des instructions assembleur basiques (INC, MOV, ADD, …).
  • Connaître les principes de fonctionnement du BIOS et son rôle dans le démarrage de l’ordinateur.
  • Connaître le fonctionnement de base du co-processeur mathématique 8087, ainsi que certaines de ces instructions de base (FLD, FST, FADD, FMUL, …).
  • Avoir une vue diachronique de l’évolution technologique des processeurs depuis le Intel 8086 (co-processeurs, pipeline, instructions SIMD, instructions SSE, multi-coeurs, …).

Plan du cours

Fonctionnement d’un microprocesseur

  • Un ordinateur simplifié
  • Composantes du processeur
  • Déroulement d’un processus
  • Interruption (pourquoi, comment ça fonctionne, sécurité,  mode protégé)
  • exemple de programme assembleur (compilation, exécution).
  • Résumé avec GDB

Langage d’assemblage

  • Qu’est-ce que l’assembleur ?
  • Pourquoi utiliser l’assembleur
  • Inconvénients de l’assembleur
  • Pourquoi connaître l’assembleur
  • Les assembleurs
  • Déboguer un programme assembleur

Les modes du x86

  • mode protégé
  • mode réel
  • segmentation en mode protégé
  • segmentation en mode réel
  • exemple de programme en mode réel
  • la table des interruptions et son emplacement)

Cartographie de la RAM d’un PC en mode réel

  • accès à la ROM
  • accès à la RAM
  • accès aux périphériques
  • exemples d’accès à un périphérique
  • cartographie de la mémoire en mode réel
  • affichage en mode réel

Démarrage d’un ordinateur

  • À la mise sous tension
  • BIOS
  • Secteur de boot d’une disquette, d’un disque (ou USB)
  • Un premier process sans interruption du BIOS

Jeu d’instruction du x86

  • Structure d’un code machine x86
  • Code machine x86 : code des registres
  • Visualiser le code machine
  • Code machine sur un byte fixe
  • Code machine avec valeur immédiate
  • Instructions simples
  • ModR/M en 32 bits
  • Byte SIB
  • Préfixes de segmentation
  • Préfixes de répétition
  • Préfixes de taille
  • Exemples

Coprocesseur mathématique

  • Rôle
  • Historique
  • Architecture et représentation des nombres
  • Valeurs extrêmes
  • Pile du coprocesseur
  • Jeu d’instruction
  • Exemples

Évolution des microprocesseurs

  • Historique
  • Loi de Moore
  • Co-processeurs
  • Processeurs pipe-line
  • Classement SISD, SIMD
  • Jeu d’instruction MMX 3DNow!
  • Jeu d’instruction SSE
  • Processeurs 64 bits
  • Processeurs dual core

Bibliographie

  • Assembleur X86 (Livre)
  • Kip Irvine, Assembleur X86, CampusPress (ISBN: 2-7440-1534-2)
  • Assembleur X86 (Livre)
  • Jean-Bernard Emond, Assembleur X86, Des bases de la programmation jusqu’à l’interfaçage avec les langages de haut niveau, CampusPress (ISBN: 2-7440-1564-4)