Tutoriel 4 - Approche du fonctionnement d'un microprocesseur

Pour discuter de l'assembleur
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Tutoriel 4 - Approche du fonctionnement d'un microprocesseur

Message par Anonyme2 »

Code : Tout sélectionner

Tutoriel 4 - Approche du fonctionnement d'un microprocesseur de la famille X86.
------------------------------------------------------------------------------

Par Denis


Ce qui suit est un petit condensé de ce qu'on trouve dans la littérature française sur les microprocesseurs famille X86. 
J'utiliserais 'µp' pour microprocesseur dans ce qui suit.
Ce n'est qu'une approche simple et rapide du fonctionnement d'un µp de la famille X86.

Comme je ne suis pas programmeur, merci à ceux du forum de signaler mes erreurs et âneries.

Pour ceux qui souhaitent plus d'infos, il y a des livres sur ces µp et le site des fabricants (AMD, Intel).

Intel : http://www.intel.com
-----

Intel France : http://www.intel.com/cd/corporate/europe/emea/fra/182870.htm
------------

 et la Doc anglaise Intel ici : http://developer.intel.com/design/pentium4/manuals/index_new.htm
 Cette doc est sous la Forme de fichiers pdf, j'ai chaque fois planté IE lorsque j'ai voulu les télécharger (ouverture avec Acrobat reader).
 J'ai utilisé le bouton droit de la souris et 'enregistrer la cible sous' pour y arriver. 

AMD : www.amd.com/
---


1) Approche du fonctionnement:
-----------------------------

On parle d'architecture d'un microprocesseur pour décrire son fonctionnement.
Il existe plusieurs type d'architecture et la famille X86 utilise principalement l'architecture CISC.

Les µp X86 sont constitués d'unités, chacune étant dédiée à une tâche bien précise.
Chaque unité peut être constituée de plusieurs "sous-unités".

Ces unités peuvent se décomposer comme ceci :


Unité de Calcul : 
-----------------
-  L'unité arithmétique et logique ou ALU (Arithmetic Logical Unit).
   Très utilisée, cette unité est dédiée à des calculs simples sur des entiers.

-  L'unité de calcul à virgule flottante ou FPU (Floating Point Unit).
   Du µp 8086 jusqu'au 80386, cette FPU était un µp indépendant et optionnel.
   Elle a été intégrée au µp à partir du 80486 pour optimiser les calculs.
   La FPU peut faire des calculs sur des entiers, des réels (nombres à virgules) ainsi que  des fonctions plus complexes (trigonométrie, racines etc.)
   
-  L'unité multimédia. Cette unité n'est pas standard et est apparue avec le MMX.
   Elle s'est agrandie avec le 3D Now d'AMD, le KNI sur les pentium III.
   D'autres fonctions y sont intégrées avec le pentium IV.
   Son but principal est d'optimiser la manipulation des données (son, 3D, graphisme) pour les programmes dédiés.
   

Unité de contrôle :
-------------------
   Il y a plusieurs unités de contrôle, chacune spécifique.
   Contrôle d'accès de la RAM, décodage des instructions, etc.


Unité de Mémoire cache :
------------------------ 
   Le cache est scindé en deux, une partie pour les données et l'autre pour les instructions.
   Le cache stocke les données et/ou instructions les plus souvent utilisées car elle est beaucoup plus rapide que la mémoire classique.
   Ce cache sert de tampon entre le processeur et la mémoire vive dynamique.
   Le processeur (et pas le programmeur) y stocke les informations qu'il utilise le plus souvent.
   La vitesse de fonctionnement se trouve nettement amélioré.

Toutes ces unités sont interconnectées (bus, registres etc.).

Les unités évoluent en fonction du µp.

A partir du pentium, une deuxième ALU est apparue, permettant l'exécution de 2 instructions simultanément.
Schématiquement le pentium embarque deux 80486 qui travaillent simultanément en parallèle.
C'est de là que vient la dénomination pipeline.
Un des deux 80486 n'exécute que des instructions simples alors que l'autre peut exécuter toutes les instructions.

Avec les processeurs récents tels le pentium IV, la mémoire cache est intégrée, les unités de calcul sont plus nombreuses, le bus est parfois doublé.

Plusieurs livres expliquent plus en détail la Structure des µp avec des schémas qui aident à la compréhension.


2) Les modes de fonctionnement :
--------------------------------

A)Mode Réel:
------------

Le mode réel est le mode de fonctionnement d'un µp lorsqu'il démarre (reset ou suite à un arrêt classique).
Le fonctionnement est restreint ainsi que la mémoire disponible (1 Mo, adressage sur 20 bits).
Dans ce mode les fonctionnalités sont celles d'un 8086 quel que soit le µp.
Depuis ce mode on peut basculer vers les deux autres modes.
Le µp ne peut exécuter qu'un seul programme à la fois. Le DOS fonctionne dans ce mode.

A l'origine, le 8086 était un µp avec des registres 16 bits. Ces registres ne pouvaient pas contenir une adresse sur 20 bits.
Intel a résolu le problème en segmentant la mémoire en bloc de 64 Ko appelés segment.
La valeur de segment peut être stockée dans un registre dédié (CS, DS, ES, FS, GS et SS).

Un programme possède en général 3 segments :
  Le segment de code (CS contient l'adresse du segment sur 16 bits)
  Le segment de données (DS contient l'adresse du segment sur 16 bits)
  Le segment de pile (SS contient l'adresse du segment sur 16 bits)
  Les autres registres de segment peuvent être utilisés pour différents segments de données.


B)Mode protégé :
----------------
C'est le mode que nous utilisons normalement pour nos applications. Toute la mémoire est dispo etc.
Dans ce mode, il existe le mode Virtuel 8086 ou V86. Ce mode permet de mettre un environnement 8086 à la disposition d'une application 16 bits.
Ce mode virtuel reste sous le mode protégé. Par exemple, sous Windows on peut ouvrir une session DOS (émulation).
Cette session met à disposition 1 Mo de mémoire avec l'environnement DOS complet. A noter que l'on peut ouvrir plusieurs session DOS en même temps.
Dans ce mode, nous n'aurons probablement pas à gérer les registres de segment. C'est l'OS qui le fait.


 -Modèle multi-segments
 ----------------------
  Chaque programme reçoit une table de descripteur de segments indépendante (table de descripteurs locaux = Local descriptor  table).
  Chaque segment peut être indépendant de tous les autres segments utilisés par les autres applications (adressage indépendant).

  
 -Modèle paginé
 --------------
  Dans ce mode, le segment peut être divisé en plusieurs blocs mémoire de 4096 octets appelés page.
  Ce mode permet d'écrire sur le disque une partie du code qui n'est pas en cours d'exécution.
  Cela évite de charger l'ensemble de l'application en mémoire.
  Par contre, avec des ordi ayant peu de mémoire, cela ralentit beaucoup l'exécution.
  L'OS doit recharger la page de code ou de données si besoin depuis le disque.
  L'ensemble des pages est aussi appelé mémoire virtuelle et nécessite l'emploi par l'OS d'un gestionnaire de mémoire virtuelle.


C)Mode Gestion système :
------------------------
Ce mode appelé aussi system management mode. 
C'est un mode très spécifique réservé à des tâches bien précises comme la gestion de l'alimentation.



Nous ne nous occuperons pas de tout ça pour nos librairies ou pour notre code asm direct.



Sinon pour ceux qui veulent plus d'explication, voici un bon bouquin en français

Assembleur 
Auteur Pierre Maurette 
Editeur Micro APPLICATION 
537 pages 
ISBN : 2742930612 
Juillet 2003 
Prix : 40 euros environ




Voilà pour le quatrième tut.


Prochain tut : Les registres des microprocesseurs 32 bits de la famille X86
               

A+
Denis