chapitre 1

© 2000-2015 LHERBAUDIERE

5 pages à l'impression

dernière mise à jour
22 mars 2013
Hit-Parade

Architecture matérielle d'un PC
processeur et organisation mémoire (3/4)

le processeur les éléments fondamentaux du processeur
l'adressage mémoire la segmentation
plan mémoire où se trouve tout
une collection d'icônes pour visiter tout le site

le processeur

Rappelons que dans un autre module de ce site figure un cours complet sur les microprocesseurs pour ceux qui voudraient aller plus loin

Avant de présenter l’organisation de la mémoire et sa gestion nous allons rappeler quelques éléments concernant le processeur et son mode de fonctionnement, sans cependant rentrer complètement dans le détail. Les processeurs de la famille 8086 peuvent très classiquement être considérés comme l’assemblage de 4 modules fondamentaux : Nous nous intéresserons tout particulièrement aux registres afin de mettre en évidence l’évolution entre le 8086 initial et le pentium actuel. Jusqu’au 286 la taille des registres était limitée à 16 bits, ils sont depuis en 32 bits, le bus d’adresse est passé de 20 bits à 32 bits soit un espace d’adressage s’étendant de 1 mégaoctet à 4 gigaoctets, tandis que les données ont une taille qui est passée de 8 bits (8088) à 16 bits (8086) 32 bits (80386) puis 64 bits (pentium), dans le même temps la fréquence d’horloge passait de 10 à plus de 450 MHz (pentium 2). Et, depuis 2002, 2 GHz (processeur XEON) et plus sont technologiquement la norme pour le processeur avec une tendance à utiliser des processeurs double coeur (ITANIUM) voire quadruple, c'est à dire capable d'effectuer 2 (voire 4) opérations simultanément en parallèle. Mais les autres circuits du PC ne suivent pas toujours cet accroissement de performance.

La figure ci-dessous donne une image simplifiée des registres du processeur


Rappelons brièvement que AX est l’accumulateur dans lequel s'effectuent la majeure partie des opérations arithmétiques et logiques sur les données qu'exécute le processeur, BX le registre de base, CX un registre de comptage, DX un registre de données, BP un pointeur de base, SI un index de source, DI un index de destination, SP le pointeur de pile, CS le segment de code, DS le segment de données, SS un segment de pile, ES, FS et GS des segments supplémentaires, IP le pointeur d’instructions et Flags un registre mémorisant des drapeaux d’état.

Nous donnons dans le glossaire quelques définitions à propos de ces termes. Précisons qu'un registre tel AX peut se décomposer en deux demi-registres AH et AL ce qui peut se révéler intéressant (il est fréquent qu'on n'agisse que sur la partie de faible poids (L pour low) et il est donc inutile de perdre du temps à recharger la partie haute qui est inchangée). La même remarque vaut évidemment pour les processeurs récents dont les registres font 64 voire 128 bits.


Sur la figure ci-dessus on a représenté le synoptique du 80486 qui intègre non seulement une unité centrale, mais aussi une version améliorée du processeur mathématique, un contrôleur de cache et 8Ko de mémoire cache qui sauvegarde aussi bien des données que des instructions. Cette mémoire cache intégrée sur la puce est accessible en un seul cycle d'horloge alors qu'il en faut deux pour le cache de second niveau externe. Un autre progrès est la taille du registre de prefetch (32 octets) qui précharge une instruction pendant l'exécution de la précédente. En outre une architecture RISC (partiellement) permet d'exécuter certaines instructions sans avoir besoin de les décoder à la différence des versions antérieures. Notons que le bus de données est très souple puisqu'il peut travailler avec une largeur de 8, 16 ou 32 bits et passer de l'un à l'autre à chaque cycle. Ainsi tout en conservant la compatibilité avec ses prédécesseurs le 486 est-il sensiblement plus performant.
NOTE : Si vous souhaitez comprendre ce qu'est un cycle fetch et mieux vous rendre compte de comment fonctionne effectivement un processeur, lisez, dans le module sur l'électronique, le chapitre introductif aux microprocesseurs.
l’adressage mémoire

Le 8086 divise la mémoire en segments de 64Koctets puisque la taille maxi de ses registres est de 16 bits. Ainsi l’adresse d’un octet est définie par le numéro du segment multiplié par 16, plus un offset de 4 bits, soit un total de 20 bits.

Dans le 80286 a été introduit, en plus du mode réel ci-dessus, un mode d’adressage virtuel protégé (dit mode protégé) dans lequel 4 niveaux de privilèges d’accès sont définis ce qui permet de protéger les données et le code et d’exclure (en principe) le crash du PC.

En mode protégé on peut accéder aux 24 bits du bus, et non à 20 comme en mode réel : cela implique quelques registres supplémentaires : Au démarrage le 80286 se comporte comme un 8086 (en mode réel). Si le bit PE (protection enable) est mis à 1 il passe en mode protégé et accède alors à un espace mémoire de 16Méga-octets. La détermination d’une adresse implique l’usage d’un descripteur de segment (global ou local), le registre d’administration de la mémoire permet d’identifier l’adresse de base de la table de description; l’ajout d’un offset permet de déterminer les 24 bits. Les processus de protection affectent aussi bien les instructions qui contrôlent l’état du CPU que celles qui accèdent au code ou aux données, ce qui évite des fonctionnements hiératiques. Ainsi la réécriture d’un segment de code est impossible, l’écriture d’une zone de données n’est accessible que si le bit d’écriture est à 1, les tables globales et locales décrivent l’ensemble des segments accessibles et tous les autres segments sont en principe inaccessibles.

Avec le 80386 on entre dans le monde 32 bits et comme l’espace mémoire est désormais de 4 gigaoctets, un nouveau mode d’adressage a été introduit en sus des deux précédents qui est le mode virtuel. L’objectif est de permettre l’exécution en pseudo simultanéité, mais sans risque de téléscopage, de plusieurs programmes écrits pour être exécutés en mode réel. A chaque programme est affecté un espace virtuel spécifique de 1Moctet qu’il voit en interne comme un espace situé entre 0 et 1Moctet. On combine ainsi les avantages du mode réel sur 1Moctet et du mode protégé du 80286

Le 486 n’apporte pas d’innovation à ce niveau, il a simplement intégré le processeur mathématique dans sa propre puce ainsi qu’un cache de premier niveau.

Sur les pentiums INTEL n'a pas changé l'ensemble du concept architectural car il est indispensable d'assurer la compatibilité logicielle pour des programmes écrits pour des processeurs plus anciens. Les progrès fondamentaux concernent surtout l'extension de l'architecture RISC et le changement de technologie de fabrication : en passant d'une technologie 0.5µm à 0.25µm, puis 0.13µm, et enfin à 65nm (en 2006) la fréquence d'horloge a pu être haussée de 100MHz à près de 4GHz. Nous reviendrons sur les quelques avancées des pentiums.

plan mémoire

En conséquence pour l’utilisateur, tant au niveau soft qu’au niveau hard, quel que soit le processeur utilisé, le plan mémoire peut se limiter à un espace de 1 Moctet environ selon le schéma ci-dessous. Pour mieux appréhender la complexité du problème mémoire et son évolution dans le temps depuis le premier 8086 lisez le chapitre pc_7.htm.

4 gigaoctets    
  mémoire étendue XMS  
1 Mégaoctet    
  system Bios  
896K    
  extensions BIOS éventuellement mémoire EMS
766K    
  RAM vidéo  
640K    

transfert command.com  

programmes d’application  
  command.com résident  
  device=  
  MSDOS.SYS  
  IO.SYS  
  données DOS, données BIOS, vecteurs d’interruption  
0K    

Ci-dessous un tableau de la zone voisine de 0K dans laquelle on trouve les interruptions et les ports d’entrée/sortie principaux