Segmentation

Document Sample
Segmentation Powered By Docstoc
					ARCHITECTURE DES SYSTEMES INFORMATIQUES


Introduction
Architecture matérielle de Von Neumann
Une horloge qui rythme le processeur. A chaque top d’horloge le
microprocesseur effectue une instruction, ainsi plus l’horloge a une fréquence
élevée, plus le microprocesseur effectue d’instructions par seconde (MIPS :
Millions d’instructions par seconde)
Par exemple un ordinateur ayant une fréquence de 100 MHz effectue
100 000 000 d’instructions par seconde.
Architecture de base d’un microprocesseur




   1. L’unité centrale de traitement (UCT) /(CPU)
Elle est composée par le microprocesseur qui est chargé d’interpréter et
d’exécuter les instructions d’un programme, de lire ou de sauvegarder les
résultats dans la mémoire et de communiquer avec les unités d’échange.
Toutes les activités du microprocesseur sont cadencées par une horloge. On
caractérise le microprocesseur par :
– sa fréquence d’horloge : en MHz ou GHz
– le nombre d’instructions par secondes qu’il est capable d’exécuter : en
MIPS
– la taille des données qu’il est capable de traiter : en bits
Définition microprocesseur
Un microprocesseur est un circuit électronique miniaturisé contenant plusieurs
millions de transistors (ex : le Pentium). C'est le chef d'orchestre qui traite et
distribue les informations. Il exécute les instructions élémentaires au rythme de
son horloge interne (ex : 300 Mhz ou mégahertz => 300 millions d'instructions
par seconde).
Un microprocesseur est construit autour de deux éléments principaux :
   1. Une unité de commande
   2. Une unité de traitement
   Ces éléments sont reliés entre eux par des bus interne permettant les
   échanges d’informations.
Le microprocesseur utilise les registres.
Définition Les registres
Les registres sont des petites mémoires internes très rapides d’accès utilisées
pour stocker temporairement une donnée, une instruction ou une adresse.
Chaque registre stocke 8, 16 ou 32 bits.
Le nombre exact de registres dépend du type de processeur et varie typiquement
entre une dizaine et une centaine.
Il existe deux types de registres :
    Les registres d'usage général permettent à l'unité de traitement de
       manipuler des données à vitesse élevée. Ils sont connectés au bus donnés
       interne au microprocesseur.
    Les registres d'adresses (pointeurs) connectés sur le bus adresses.
Parmi les registres, le plus important est le registre accumulateur, qui est utilisé
pour stocker les résultats des opérations arithmétiques et logiques.
   1.1.   L’unité de commande


Schéma d’une unité de commande




Définitions
L’unité de commande permet de séquencer le déroulement des instructions.
Elle effectue la recherche en mémoire de l'instruction.
Comme chaque instruction est codée sous forme binaire, elle en assure le
décodage pour enfin réaliser son exécution puis effectue la préparation de
l'instruction suivante. Pour cela, elle est composée par :
Le compteur de programme (C0 ou IP) : constitué par un registre dont le
contenu est initialisé avec l'adresse de la première instruction du programme. Il
contient toujours l’adresse de l’instruction à exécuter.
Bloc logique de commande (ou séquenceur) : Il organise l'exécution des
instructions au rythme d’une horloge. Il élabore tous les signaux de
synchronisation internes ou externes (bus de commande) du microprocesseur en
fonction des divers signaux de commande provenant du décodeur d’instruction
ou du registre d’état par exemple.
1.2. L’unité de traitement
Elle regroupe les circuits qui assurent les traitements nécessaires à l'exécution
des instructions :
L’Unité Arithmétique et Logique (UAL) est un circuit complexe qui assure les
fonctions logiques (ET, OU, Comparaison, Décalage, etc.…) ou arithmétique
(Addition, soustraction).


Schéma d’une UAL




Le registre d'état est généralement composé de 8 bits à considérer
individuellement. Chacun de ces bits est un indicateur dont l'état dépend du
résultat de la dernière opération effectuée par l’UAL. On les appelle indicateur
d’état ou flag ou drapeaux. Dans un programme le résultat du test de leur état
conditionne souvent le déroulement de la suite du programme. On peut citer par
exemple les indicateurs de :
Retenue CF : Ce bit est mis à 1 si l’opération génère une retenue.
Signe SF : Ce bit est mis à 1 si l’opération génère un résultat négatif.
Débordement OF : Ce bit est mis à 1 s’il ya débordement
Zero ZF : Ce bit est mis à 1 si le résultat de l’opération est nul.




Schéma simple d’un processeur. Le processeur est relié à l’extérieur par les bus
de données et d’adresses, le signal d’horloge et les signaux de commandes
Les informations circulent à l’intérieur du processeur sur deux bus internes, l’un
pour les données, l’autre pour les instructions.
On distingue les registres suivants :
ACC : Accumulateur c.est un registre de travail qui sert a stocker un opérande
(données) au début d’une opération et le résultat à la fin.
RTUAL : Registre Tampon de l’UAL, stocke temporairement l’un des deux
opérandes d.une instructions arithmétiques ;
Reg. D’état : stocke les indicateurs:
RI : Registre Instruction, contient le code de l’instruction en cours d’exécution
(lu en mémoire via le bus de données) ;
IP : Instruction Pointer ou Compteur de Programme, contient l’adresse de
l’emplacement mémoire où se situe la prochaine instruction à exécuter ;
RTA : Registre Tampon d’Adresse, utilisé pour accéder à une donnée en
mémoire. ZF, CF,..
1.3 Le jeu d’instructions
Le jeu d’instructions est l’ensemble des opérations élémentaires qu’un
processeur peut accomplir.
Type d’instructions
Les instructions que l’on retrouve dans chaque microprocesseur peuvent être
classées en 4 groupes :
   - Transfert de données pour charger ou sauver en mémoire, effectuer des
      transferts de registre à registre, etc…
   - Opérations arithmétiques : addition, soustraction, division, multiplication
   - Opérations logiques : ET, OU, NON, NAND, comparaison, test, etc…
   - Contrôle de séquence : branchement, test, etc…
Le type de jeu d’instructions d’un processeur détermine son architecture.
Deux types d’architectures des microprocesseurs :
RISC (Reduced Instruction Set Computer) PowerPC, Sparc
CISC (Complex Instruction Set Computer) Pentium
Architecture RISC Moins cher, plus rapide


Instructions simples ne prenant qu’un seul cycle
Instructions au format fixe
Décodeur simple (câblé)
Beaucoup de registres
Seules les instructions LOAD et STORE ont accès à la mémoire
Peu de modes d’adressage
Compilateur complexe


Architecture CISC Coût élevé, plus lent
Instructions complexes prenant plusieurs cycles
Instructions au format variable
Décodeur complexe (microcode)
Peu de registres
Toutes les instructions sont susceptibles d’accéder à la mémoire
Beaucoup de modes d’adressage
Compilateur simple
Le format de l’instruction se décompose en une partie codant l’opération à
exécuter appelé opcode ou code opération une partie pour les opérandes
               Code op                    Opérandes

1.4 Cycle d’exécution d’une instruction
Le traitement d’une instruction peut être décomposé en trois phases.
Phase 1: Recherche de l'instruction à traiter
1. Le PC contient l'adresse de l'instruction suivante du programme. Cette valeur
est placée sur le bus d'adresses par l'unité de commande qui émet un ordre de
lecture.
2. Au bout d'un certain temps (temps d'accès à la mémoire), le contenu de la
case mémoire sélectionnée est disponible sur le bus des données.
3. L'instruction est stockée dans le registre instruction du processeur.




Phase 2 : Décodage de l’instruction et recherche de l'opérande
Le registre d'instruction contient maintenant le premier mot de l'instruction qui
peut être codée sur plusieurs mots. Ce premier mot contient le code opératoire
qui définit la nature de l'opération à effectuer (addition, rotation,...) et le nombre
de mots de l'instruction.
1. L'unité de commande transforme l'instruction en une suite de commandes
élémentaires nécessaires au traitement de l'instruction.
2. Si l'instruction nécessite une donnée en provenance de la mémoire, l'unité de
commande récupère sa valeur sur le bus de données.
3. L’opérande est stocké dans un registre.
Phase 3 : Exécution de l'instruction
1. Le micro-programme réalisant l'instruction est exécuté.
2. Les drapeaux sont positionnés (registre d'état).
3. L'unité de commande positionne le PC pour l'instruction suivante.
1.4 Améliorations de l’architecture de base : Architecture pipeline
L’architecture pipeline permet d’améliorer l’efficacité du microprocesseur.
Pipelining (paralléliser des phases dans le décodage des instructions)
Exemple de l’exécution en 4 phases d’une instruction :
Gain de performance
Le gain obtenu dépend donc du nombre d’étages du pipeline. En effet, pour
exécuter n instructions, en supposant que chaque instruction s’exécute en k
cycles d’horloge, il faut :
n.k cycles d’horloge pour une exécution séquentielle.
k cycles d’horloge pour exécuter la première instruction puis n-1 cycles pour les
n-1 instructions suivantes si on utilise un pipeline de k étages
Le gain obtenu est donc de :
                                     G=


Donc lorsque le nombre n d’instructions à exécuter est grand par rapport à k, on
peut admettre qu’on divise le temps d’exécution par k.




   2.        Gestion de la mémoire
Pour exécuter un programme, l’UC doit disposer d’un espace de travail. Cette
espace de travail s’appelle la mémoire centrale.
      Exemple de mémoire :
Avec une adresse de n bits il est possible de référencer au plus           cases
mémoire. Chaque case est remplie par un mot de données (sa longueur m est
toujours une puissance de 2).
Les mécanismes de gestion de la mémoire doivent être capable de satisfaire à 5
exigences :
Relocalisation
Protection
Partage
Organisation Logique
Organisation physique
Le chargement d’un programme en mémoire centrale se décline en deux modes

    Chargement statique : translation des adresses lors du chargement du
     programme en mémoire
    Chargement dynamique : translation des adresses lors de l’exécution du
     programme


Relocalisation
Dans un système qui supporte plusieurs programmes (multiprogramming)
l’accessibilité à la mémoire principale est généralement partagée entre plusieurs
processus/programmes. Il est presque impossible pour un programmeur de
savoir où son programme va résider, ni avec quel programme il devra partager la
mémoire. De plus, il est important de pouvoir sortir et entrer I(swap) les
différents processus pour pouvoir optimiser l’utilisation de la mémoire et du
processeur. Lorsqu’un programme transféré sur un disque doit être recharger en
mémoire, nous voulons qu’il soit possible de le relocaliser n’importe où en
mémoire. Nous serions trop limités si nous avions à le recharger à sa place
initiale. Cette possibilité de relocaliser un programme n’importe où en mémoire
nous oblige à gérer l’adressage de notre mémoire
Le système d’exploitation doit savoir à tout moment l’adresse du programme, de
ses données et de sa pile. Il doit être capable de traduire les références à la
mémoire dans le code, à l’emplacement physique actuel du programme. Il doit
aussi savoir où le début du programme se trouve.




Caractéristiques d’une mémoire
La capacité : c’est le nombre total de bits que contient la mémoire. Elle
s’exprime aussi souvent en octet.
Le format des données : c’est le nombre de bits que l’on peut mémoriser par
case mémoire.
On dit aussi que c’est la largeur du mot mémorisable.
Le temps d’accès : c’est le temps qui s'écoule entre l'instant où a été lancée une
opération de lecture/écriture en mémoire et l'instant où la première information
est disponible sur le bus de données.
Le temps de cycle : il représente l'intervalle minimum qui doit séparer deux
demandes successives de lecture ou d'écriture.
Le débit : c’est le nombre maximum d'informations lues ou écrites par seconde.
Volatilité : elle caractérise la permanence des informations dans la mémoire.
L'information stockée est volatile si elle risque d'être altérée par un défaut
d'alimentation électrique et non volatile dans le cas contraire


Différents types de mémoire
Les RAM statiques
Les RAM dynamiques
Mémoire
Capacité : Nb de bits stockés par la mémoire. Toujours un multiple d’une
puissance de 2
Capacité = <Nb adresses> *Longueur de la plus petite information adressable.

Mémoire cache : Principe
Depuis le début des années 80, une des solutions utilisées pour masquer cette
latence est de disposer une mémoire très rapide entre le microprocesseur et la
mémoire. Elle est appelée cache mémoire. On compense ainsi la faible vitesse
relative de la mémoire en permettant au microprocesseur d’acquérir les données
à sa vitesse propre. On la réalise à partir de cellule SRAM de taille réduite (à
cause du coût). Sa capacité mémoire est donc très inférieure à celle de la
mémoire principale et sa fonction est de stocker les informations les plus
récentes ou les plus souvent utilisées par le microprocesseur. Au départ cette
mémoire était intégrée en dehors du microprocesseur mais elle fait maintenant
partie intégrante du microprocesseur et se décline même sur plusieurs niveaux.
Le principe de cache est très simple : le microprocesseur n’a pas conscience de
sa présence et lui envoie toutes ses requêtes comme s’il agissait de la mémoire
principale :
    Soit la donnée ou l’instruction requise est présente dans le cache et elle est
      alors envoyée directement au microprocesseur. On parle de succès de
      cache. (a)
    soit la donnée ou l’instruction n’est pas dans le cache, et le contrôleur de
      cache envoie alors une requête à la mémoire principale. Une fois
      l’information récupérée, il la renvoie au microprocesseur tout en la
      stockant dans le cache. On parle de défaut de cache. (b)




Notion de hiérarchie mémoire
Une mémoire idéale serait une mémoire de grande capacité, capable de stocker
un maximum d’informations et possédant un temps d’accès très faible afin de
pouvoir travailler rapidement sur ces informations. Mais il se trouve que les
mémoires de grande capacité sont souvent très lente et que les mémoires rapides
sont très chères. Et pourtant, la vitesse d’accès à la mémoire conditionne dans
une large mesure les performances d’un système. En effet, c’est là que se trouve
le goulot d’étranglement entre un microprocesseur capable de traiter des
informations très rapidement et une mémoire beaucoup plus lente (ex :
processeur actuel à 3Ghz et mémoire à 400MHz). Or, on n’a jamais besoin de
toutes les informations au même moment. Afin d’obtenir le meilleur compromis
coût-performance, on définie donc une hiérarchie mémoire. On utilise des
mémoires de faible capacité mais très rapide pour stocker les informations dont
le microprocesseur se sert le plus et on utilise des mémoires de capacité
importante mais beaucoup plus lente pour stocker les informations dont le
microprocesseur se sert le moins. Ainsi, plus on s’éloigne du microprocesseur et
plus la capacité et le temps d’accès des mémoires vont augmenter.




Les registres sont les éléments de mémoire les plus rapides. Ils sont situés au
niveau du processeur et servent au stockage des opérandes et des résultats
intermédiaires.
La mémoire cache est une mémoire rapide de faible capacité destinée à accélérer
l’accès à la mémoire centrale en stockant les données les plus utilisées.
La mémoire principale est l’organe principal de rangement des informations.
Elle contient les programmes (instructions et données) et est plus lente que les
deux mémoires précédentes.
Mémoire rapide (appelé génériquement la RAM)
– “Petite” capacité
– Perd son information lorsque l’on coupe le courant
– exemple : SDRAM, SIMM, DIMM, DDRAM, etc.
La mémoire d’appui sert de mémoire intermédiaire entre la mémoire centrale
et les mémoires de masse. Elle joue le même rôle que la mémoire cache.
La mémoire de masse est une mémoire périphérique de grande capacité utilisée
pour le stockage permanent ou la sauvegarde des informations. Elle utilise pour
cela des supports magnétiques (disque dur, ZIP) ou optiques (CDROM,
DVDROM).
On peut résumer la mémoire de masse est une
   - Mémoire “lente” mais Grande capacité
   - N’a pas besoin de courant pour garder l’information
   - exemple : Disquette, Disque Dur, Clé USB, CD-ROM, DVD,
   - Il y a des échanges continus entre la RAM et les mémoires de masse
   - Par exemple :
   - Au démarrage de l’ordinateur on transfert des programmes de la mémoire
      de masse vers la mémoire vive
   - Lorsque vous enregistrez un fichier (par exemple de votre traitement de
      texte), vous transférez des données (ce que vous avez tapé) de la mémoire
      vive vers la mémoire de masse.



Partitionnement de la mémoire
La tâche principale de la gestion de la mémoire est de charger des programmes
en mémoire pour qu’ils soient exécutés par la CPU. De nos jours, dans tous nos
systèmes nous parlons de la mémoire virtuelle.
Cette méthode est basée sur deux principes de gestions, la SEGMENTATION et
la PAGINATION.

Partitionnement fixe (statique)
Dans toutes les méthodes de gestion de la mémoire, nous pouvons assumer que
les OS occupent une partie fixe de la mémoire principale et que le reste de la
mémoire est disponible. La méthode la plus simpliste est le partitionnement fixe.
Il peut exister sous 2 formats, des partitions de même grandeur ou de grandeur
différente.
Si un programme est ≤ que la grandeur des partitions il sera chargé dans une des
partitions disponibles. Si on veut charger un autre programme en mémoire, mais
qu’aucune place n’est disponible, nous devrons alors transférer un programme
afin de permettre de charge le nouveau.
De plus, si un programme est plus gros que la grandeur des partitions de la
mémoire le programmeur devra utiliser la méthode overlaying. Tous les
programmes chargés en mémoire, même ceux qui sont plus petits que la
grandeur d’une partition, utilisent l’espace totale de la partition, ce qui cause de
la fragmentation interne.
Nous pouvons diminuer l’impact de ces 2 problèmes en implantant des
partitions de grandeurs différentes. La figure suivante nous montre un
partitionnement qui va jusqu'à 16 MB.
Algorithme de placement
Lorsqu’un nouveau programme est prêt à être charger en mémoire le système
doit alors décider dans quelle partition il va pouvoir le charger. Dans le cas d’un
partitionnement de dimension égale, il va choisir un des programmes qui n’est
plus en mode actif et le remplacer, étant donné que la dimension du programme
ou de la partition n’a pas d’influence sur le choix. Dans le cas de partition de
dimensions différentes, plusieurs possibilités s’offrent au système. Nous allons
voir deux méthodes : une file par partition ou une file pour tous les partitions.
Si nous avons une file par partition, le choix de la partition se fera avant même
de vérifier la disponibilité. Le système va choisir la partition qui se rapproche le
plus du programme et mettre le programme en attente dans la file de cette
partition. Le désavantage est que même s’il reste encore d’autres partitions non
utilisées, le système ne va pas les utiliser. Si, en revanche, nous avons une file
pour toutes les partitions, le système va essayer de charger le programme dans la
partition libre la plus petite. Si toutes les partitions sont prises, une décision sera
alors prise sur quel programme devra être déchargé.
Figure : Algorithme de placement, partition fixe




Partitionnement dynamique
Quand un programme est chargé en mémoire, on lui alloue la quantité exacte de
mémoire dont il a besoin.
Nous pouvons voir à la figure (ci-dessous), le processus d’allocation dynamique
des partitions. Cette technique utilise un nombre variable de partitions de
dimensions variables. Quand un programme est chargé en mémoire, on lui
alloue l’espace nécessaire.
L’allocation dynamique cause avec le temps ce qu’on appelle la fragmentation
externe. On peut voir qu’au fur et à mesure que des programme sont chargés et
retirés de la mémoire, il se crée des trous entre les programmes. Il a donc été
nécessaire de mettre en place une technique de “compaction” (algorithme de
ramasse-miettes). Le système va déplacer des programmes en mémoire de façon
à combler les trous entre les programmes de manière à offrir de plus grands
espaces continues de mémoire. Notons que la compaction coûte beaucoup de
temps processeur.




Figure : Partitionnement dynamique
Étant donnée que la compaction de la mémoire nous faire perdre beaucoup de
temps CPU, il est donc important d’implanter de bon algorithmes de placement
afin de bien remplir les trous. Nous allons voir trois méthodes :
1. Best-Fit (meilleur place)
2. First-Fit (première place)
3. Next-Fit (prochaine place).
La meilleure place choisi l’espace disponible qui a la dimension la plus proche
du programme à charger. La première place, commence à vérifier la mémoire en
partant d’en haut et va placer le programme dans la première espace qui peut
recevoir le programme, sans se soucier de l’espace perdu. La prochaine place
commence à vérifier la mémoire à partir du dernier programme placé et va
allouer la prochaine espace qui peut recevoir le programme à charger. La figure
suivante, nous montre l’application des 3 méthodes.
Figure: Algorithme de placement, partition dynamique




Le “Buddy System”
Voici un bon compromis entre les avantages et désavantages du partitionnement
fixe et dynamique.
Cette méthode considère que la mémoire est un bloc d’une grandeur de 2U.
Lorsqu’une requête d’allocation est faite, le système vérifier la grandeur et
alloue l’espace disponible ou la divise en 2 partie égale. Lorsque les blocs se
libèrent ils vont être regroupés pour redevenir un seul bloc.
Figure : Buddy System




La mémoire virtuelle
Le principe de la mémoire virtuelle repose sur l'idée que la taille du programme,
des données et de la pile, peut dépasser la mémoire disponible. Le système
d’exploitation garde en mémoire les parties du programme qui sont utilisées et
stocke le reste dans le disque. Par exemple, on peut exécuter un programme de 1
Mo sur une machine de 256 Ko en choisissant judicieusement les 256 Ko du
programme à mettre en mémoire principale à tout instant. Les autres parties
effectuant des va-et-vient entre le disque et la mémoire.


Pagination
Comme nous venons de voir les techniques de partitionnement fixes ou
variables ne gèrent pas efficacement la mémoire, ils causent des problèmes de
fragmentation internes ou externes. Nous allons voir maintenant une méthode
qui en plus de fractionner la mémoire en petits blocs égaux (frames), va
fractionner les programmes en petits blocs (pages) de même dimension que les
partitions de la mémoire. Le terme frames (cadre en français) est utilisé car un
cadre va tenir une page d’information. Nous verrons que grâce à cette méthode,
la fragmentation externe est complètement éliminée. La seule fragmentation
interne sera causée par la dernière page du programme qui peut être plus petite
qu’un cadre. Afin de rendre l’utilisation plus pratique, nous allons aussi fixer la
grandeur des pages à un nombre égale à une puissance de 2. En utilisant cette
méthode nous rendons transparent la pagination aux programmeurs car l’adresse
relative est la même que l’adresse absolue.
Figure : Allocation à l'aide de la pagination




Figure : Tables des pages
Il existe 2 types de pagination:
- à un niveau
- à plusieurs niveaux (utilisée lorsque l'espace virtuel est très supérieur à l'espace
réel).
1. Pagination à 1 niveau
Une adresse (réelle ou virtuelle) peut être scindée en un numéro de page et un
déplacement dans la page. Le déplacement est invariant puisqu'il désigne le rang
d'un mot par rapport au début de la page (qui est toujours chargée d'un seul
tenant). Il n'interviendra donc pas dans la transformation d'adresse.
Le nombre de pages réelles et virtuelles est connu à la génération du système: la
fonction topographique sera réalisée par une table appelée table des pages.
L'implantation de cette table des pages sera faite en MC ou dans des registres
rapides car elle sera consultée fréquemment (lors de l'exécution de chaque
instruction à référence mémoire).




Segmentation
Encore une fois, on sépare le programme en petite partie appelée segment. Ces
segments n’on pas à être de la même taille, il existe cependant une taille
maximum à la longueur d’un segment.
Comme pour la pagination une adresse sera constitué de 2 parties; un numéro de
segment et un déplacement (offset). Étant donné que les segments ne sont pas
nécessairement de même longueur, la segmentation est semblable au
partitionnement dynamique. Il existe une différence majeure entre les 2 : avec la
segmentation un programme peut occuper plus d’une partition et ces partitions
n’ont pas à être continues.
La segmentation élimine ainsi la fragmentation interne mais cause de la
fragmentation externe, quoique étant donné que nous pouvons découper les
programmes en petits segments elle devrait être moindre.
LA SEGMENTATION DE LA MEMOIRE 8086
Le 8086 possède 20 bits d'adresse, il peut donc adresser      octets soit 1 Mo.
L'adresse de la première case mémoire est 0000 0000 0000 0000 0000 celle de la
dernière casse est 1111 1111 1111 1111 1111 1111. Il me paraît inutile de
justifier pourquoi à partir de cet instant, nous allons représenter les adresses en
hexadécimal, et notre 8086 peut donc adresser 1 Mo allant de 00000 à FFFFF.
Le problème qui se pose est comment représenter ces adresses au sein du μP
puisque les registres ne font que 16 bits soit 4 digits au maximum en
hexadécimal. La solution adoptée par Intel a été la suivante :
Puisque avec 16 bits en peut adresser         octets = 65535 octets = 64 ko, La
mémoire totale adressable de 1 Mo est fractionnée en pages de 64 ko appelés
segments. On utilise alors deux registres pour adresser une case mémoire
donnée, Un registre pour adresser le segment qu'on appelle registre segment et
un registre pour adresser à l'intérieur du segment qu'on désignera par registre
d'adressage ou offset. Une adresse se présente toujours sous la forme
segment:offset
A titre d'exemple, procédons au découpage de la mémoire en 16 segments qui ne
se
chevauche pas.
Considérons la case mémoire d'adresse 20350, appelée adresse absolue ou
adresse
linéaire. Cette case mémoire se situe dans le segment 2, son adresse relative à ce
segment est 350, on peut donc la référencer par le couple segment:offset =
20000:350, Se pose maintenant le problème de la représentation de cette adresse
au sein du CPU car les registres de 16 bits ne peuvent contenir que 4 digits. S'il
n'y a aucun problème pour représenter 350 dans un registre d'offset, on ne peut
pas représenter 20000 dans un registre segment. La solution adoptée par Intel est
la suivante :
    Dans le registre segment, on écrit l'adresse segment sans le chiffre de faible
poids
    Dans le registre d'adressage (d'offset) on écrit l'adresse relative dans le
segment
    Pour calculer l'adresse absolue qui sera envoyée sur le bus d'adresse de 20
bits, le
CPU procède à l'addition des deux registres après avoir décalé le registre
segment
d'un chiffre à gauche :




Dans notre exemple, l'adresse de la case mémoire considérée devient 2000:350
soit :
Segment = 2000
Offset = 350
L’adresse d’une case mémoire donnée sous la forme d’une quantité sur 20 bits
(5 digits hexa) est appelée adresse physique car elle correspond à la valeur
envoyée réellement sur le bus d’adresses A0 - A19.
L'adresse (physique) absolue est calculée ainsi :




Le 8086 a accès à 4 segments dont les adresses se trouvent dans les registres de
segment CS, DS, SS et ES. Le segment de code contient les instructions du
programme, le segment de données contient les données manipulées par le
programme, le segment de pile contient la pile de sauvegarde et le segment
supplémentaire peut aussi contenir des données.
Le registre CS est associé au pointeur d’instruction IP, ainsi la prochaine
instruction à exécuter se trouve à l’adresse logique CS : IP.
De même, les registres de segments DS et ES peuvent être associés à un registre
d’index.
Exemple : DS : SI, ES : DI. Le registre de segment de pile peut être associé aux
registres de pointeurs : SS : SP ou SS : BP.




Les registres 8086
Remarque : les segments ne sont pas nécessairement distincts les uns des
autres, ils peuvent se chevaucher ou se recouvrir complètement.




AX : Accumulateur
   
    Obligatoire pour la multiplication et la division,
    Ne peut pas servir pour l'adressage
BX : Base
   
    Adressage, (Par défaut, son offset est relatif au segment DS)
CX : Comptage et calcul
    Usage général,
    Utilisé par certaines instructions comme compteur de répétition.
    Ne peut pas servir pour l'adressage
DX : Data
   
   
       registre AX pour contenir un nombre 32 bits,
    Ne peut pas servir pour l'adressage
Les registres d'adressage (offset)
Ces registres de 16 bits permettent l'adressage d'un opérande à l'intérieur d'un
segment de 64 ko (216 positions mémoires)
SP : Pointeur de Pile
   
    Par défaut, son offset est relatif à SS
BP : Pointeur de Base
    Adressage comme registre de base, (Par défaut, son offset est relatif à SS)
    Usage général
SI : Registre d'index (source)
    Adressage comme registre d’index, (Par défaut, son offset est relatif à DS)
    Certaines instruction de déplacement de donnés l'utilise comme index de
       l'opérande source. L'opérande destination étant indexé par DI
    Usage général
DI : Registre d'index (destination)
    Adressage comme registre d’index, (par défaut, son offset est relatif à DS)
    Certaines instructions de déplacement de donnés l'utilise comme index de
       l'opérande destination, l'opérande destination étant indexé par SI


Les registres de segment
Ces registrent sont combiné avec les registres d’offset pour former les adresses.
Une case mémoire est repérée par une adresse de la forme RS:RO. On place le
registre segment au début d’une zone mémoire de de 64Ko, ensuite on fait varier
le registre d’offset qui précise l’adresse relative par rapport à cette position.
CS : Code Segment
Définit le début de la mémoire programme. Les adresses des différentes
instructions du programme sont relatives à CS
DS : Data Segment
Début de la mémoire de données dans laquelle sont stockées toutes les données
Traitées par le programme
SS : Stack Segment
Début de la pile.
La pile est une zone mémoire gérée d’une façon particulière. Elle est organisée
comme une pile d’assiettes. On pose et on retire les assiettes toujours sur le haut
de la pile. Un seul registre d’adresse suffit donc pour la gérer, c’est le stack
pointer SP. On dit que c’est une pile LIFO (Last IN, First Out).
Empiler une donnée : sauvegarder une donnée sur (le sommet) de la pile
Dépiler une donnée : retirer une donnée (du sommet) de la pile
ES : Extra Segment
Début d'un segment auxiliaire pour données

Pagination VS Segmentation
Contrairement à la pagination qui est invisible pour le programmeur, la
segmentation procure un outil pour la gestion des programmes et des données.
Normalement le programmeur ou le compilateur va assigner les données et les
programmes à des segments différents. Une autre conséquence des segments
inégaux est le manque de relation simple entre l’adresse physique et relative
Nous allons voir ici le processus de décodage de la pagination et de la
segmentation.

La Carte Mère
La carte mère assure la connexion physique des différents composants
(processeur, mémoire, carte d'entrées/sorties, ...) par l’intermédiaire de différents
bus (adresses, données et commande).
On retrouve toujours sur une carte mère :
    le chipset : c’est une interface d’entrée/sortie. Elle est constituée par un
      jeu de plusieurs composants chargé de gérer la communication entre le
      microprocesseur et les périphériques. C’est le lien entre les différents bus
      de la carte mère.
   Gère les accès et les transferts d’information entre équipements en
   s’appuyant sur les bus existants.
 le BIOS (Basic Input Ouput Service) : c’est un programme responsable de
   la gestion du matériel : clavier, écran, disques durs, liaisons séries et
   parallèles, etc... Il est sauvegardé dans une mémoire morte (EEPROM) et
   agit comme une interface entre le système d’exploitation et le matériel.
 l’horloge : elle permet de cadencer le traitement des instructions par le
   microprocesseur ou la transmission des informations sur les différents
   bus.
 les ports de connexion : ils permettent de connecter des périphériques sur
   les différents bus de la carte mère. Il existe des ports « internes » pour
   connecter des cartes d’extension (PCI, ISA, AGP) ou des périphériques de
   stockage (SCSI, IDE, Serial ATA) et des ports « externes » pour
   connecter d’autres périphériques (série, parallèle, USB, firewire, etc …)
 Le socket : c’est le nom du connecteur destiné au microprocesseur. Il
   détermine le type de microprocesseur que l’on peut connecter.
Le chipset est composé par deux composants baptisé Pont Nord et Pont Sud. Le
pont Nord s’occupe d’interfacer le microprocesseur avec les périphériques
rapides (mémoire et carte graphique) nécessitant une bande passante élevée alors
que le pont sud s’occupe d’interfacer le microprocesseur avec les périphériques
plus lents (disque dur, CDROM, lecteur de disquette, réseau, etc…).
On voit apparaître différents bus chargés de transporter les informations entre le
microprocesseur et la mémoire ou les périphériques.
L’interface d’entrée/sortie
Rôle
Chaque périphérique sera relié au système par l’intermédiaire d’une interface
(ou contrôleur) dont le rôle est de :
    Connecter le périphérique au bus de données
    Gérer les échanges entre le microprocesseur et le périphérique
Techniques d’échange de données
Avant d’envoyer ou de recevoir des informations, le microprocesseur doit
connaître l’état du périphérique. En effet, le microprocesseur doit savoir si un
périphérique est prêt à recevoir ou à transmettre une information pour que la
transmission se fasse correctement. Il existe 2 modes d’échange d’information :
    Le mode programmé par scrutation ou interruption où le
       microprocesseur sert d’intermédiaire entre la mémoire et le périphérique
    Le mode en accès direct à la mémoire (DMA) où le microprocesseur ne se
       charge pas de l’échange de données.


Types de liaisons
Les systèmes à microprocesseur utilisent deux types de liaisons différentes
pour se connecter à des périphériques :
 liaison parallèle
 liaison série
On caractérise un type de liaison par sa vitesse de transmission ou débit (en
bit/s).
 Liaison parallèle
Dans ce type de liaison, tous les bits d’un mot sont transmis simultanément.
Ce type de transmission permet des transferts rapides mais reste limitée à de
faibles distances de transmission à cause du nombre important de lignes
nécessaires (coût et encombrement) et des problèmes d’interférence
électromagnétique entre chaque ligne (fiabilité). La transmission est
cadencée par une horloge.




Liaison série
Dans ce type de liaison, les bits constitutifs d’un mot sont transmis les uns
après les autres sur un seul fil. Les distances de transmission peuvent donc
être plus beaucoup plus importantes mais la vitesse de transmission est plus
faible. Sur des distances supérieures à quelques dizaines de mètres, on
utilisera des modems aux extrémités de la liaison.
   La transmission de données en série peut se concevoir de deux façons
   différentes :
    en mode synchrone, l’émetteur et le récepteur possède une horloge
       synchronisée qui cadence la transmission. Le flot de données peut être
       ininterrompu.
      en mode asynchrone, la transmission s’effectue au rythme de la présence
       des données. Les caractères envoyés sont encadrés par un signal start et
       un signal stop.
Définition Les Bus
Ce sont les canaux de communication à l’intérieur de l’ordinateur relient l’unité
centrale, la mémoire, les contrôleurs de périphériques
Il y a donc deux modes de fonctionnement :
1. en sortie : du processeur vers la périphérie (périphérique matériel intégré à la
carte mère ou a une carte d'extension) ;
2. en entrée : de la périphérie vers le processeur.
La bande passante du bus est la quantité de données transférées par le bus à
chaque instant. On la mesure en général en Mo/s. Elle dépend de la largeur du
bus (nombre de bits transférés en parallèle), de sa fréquence et des protocoles
employés.
Débit d’un bus :
Largeur = nombre de bits que le bus peut transmettre à la fois
Fréquence = vitesse du bus = nombre de paquets envoyés par seconde (en Hertz)
Débit = largeur × fréquence
Exemple : Un bus de largeur 16 bits et cadencé à une fréquence de 133MHz a un
débit de : 16 × 133000000 = 2128000000 bits/s = 266000000 o/s ≃ 260Ko/s ≃
254Mo/s.
Trois types de bus : Adresses, données, contrôles
Bus de données : bidirectionnel qui assure le transfert des informations entre le
microprocesseur et son environnement, et inversement. Son nombre de lignes est
égal à la capacité de traitement du microprocesseur.
Bus d'adresses: unidirectionnel qui permet la sélection des informations à traiter
dans un espace mémoire (ou espace adressable) qui peut avoir          emplacements,
avec n = nombre de conducteurs du bus d'adresses.
Bus de commande: constitué par quelques conducteurs qui assurent la
synchronisation des flux d'informations sur les bus des données et des adresses .


On voit apparaître différents bus chargés de transporter les informations entre le
microprocesseur et la mémoire ou les périphériques :
    Bus processeur : on l’appelle aussi bus système ou FSB (Front Side Bus).
      Il relie le microprocesseur au pont nord puis à la mémoire. C’est un bus
      64 bits.
    Bus IDE : il permet de relier au maximum 2 périphériques de stockage
      interne par canal (disque dur ou lecteur DVDROM/CDROM). Son débit
      est de 133 Mo/s. Lorsque 2 périphériques sont reliés sur le même canal,
      un doit être le maître (prioritaire sur la prise du bus) et l’autre l’esclave.
    Bus PCI (Peripheral Component Interconnect) : Il a été créé en 1991 par
      Intel. Il permet de connecter des périphériques internes. C’est le premier
      bus à avoir unifier l’interconnexion des systèmes d’entrée/sortie sur un PC
      et à introduire le système plug-and-play. Il autorise aussi le DMA. C’est
      un bus de 32 bits. On retrouve une révision du bus PCI sur les cartes
    mères de serveur ayant une largeur de bus de 64 bits et une fréquence de
    133 MHz.
 Bus AGP (Accelered Graphic Port) :. Il a été créé en 1997 lors de
    l’explosion de l’utilisation des cartes 3D qui nécessitent toujours plus de
    bandes passantes pour obtenir des rendus très réalistes. C’est une
    amélioration du bus PCI. Il autorise en plus le DIME (DIrect Memory
    Exécution) qui permet au processeur graphique de travailler directement
    avec les données contenues dans la RAM sans passer par le
    microprocesseur à l’instar d’un DMA. C’est un bus 32 bits et son débit
    maximum est de 2 Go/s (en x8).
 Bus ISA (Industry Standard Architecture) : C’est l’ancêtre du bus PCI.
    On ne le retrouve plus sur les nouvelles générations de cartes mères.
 Bus SCSI (Small Computer System Interface) : c’est un bus
    d’entrée/sortie parallèle permettant de relier un maximum de 7 ou 15
    périphériques par contrôleur suivant la révision du protocole utilisée.
    C’est une interface concurrente à l’IDE qui présente l’avantage de pouvoir
    connecter plus de périphériques pour des débits supérieurs. En outre, ces
    périphériques peuvent partager le bus lors d’un dialogue contrairement à
    l’IDE. Mais son coût reste très élevé… elle est utilisée pour les serveurs.
   Bus USB (Universal Serial Bus ) : c’est un bus d’entrée/sortie plug-and-
    play série. Dans sa deuxième révision (USB 2.0), il atteint un débit de 60
    Mo/s. Un de ces avantages est de pouvoir connecter théoriquement 127
    périphériques. Il supporte de plus le hot plug-and-play (connexion ou
    déconnexion de périphériques alors que le PC fonctionne).
 Bus firewire : c’est un bus SCSI série. Il permet de connecter jusqu’à 63
    périphériques à des débits très élevés (100 à 400 Mo/s). Ces applications
    sont tournées vers la transmission de vidéos numériques.
    Destiné à la connexion de périphérique gros consommateurs de bandes
    pâssantes :
      - Caméras et camescopes numériques,
      - Synthétiseurs audio,
      - Lecteurs de disques à haut débit,
      - Scanners et imprimantes d’imagerie professionnelle, etc


    Remarques :
   1. Tous les bus « internes » (PCI, IDE, AGP) vont être amenés à disparaître
      très rapidement et seront remplacés par des bus série :
    Le Serial Ata, remplaçant du bus IDE, présente des débits de 150 Mo/s
      qui passeront bientôt à 300 Mo/s dans la prochaine révision du bus. Il
      permet de connecter des disques durs ou des lecteurs optiques.
    Le PCI Express, remplaçant des bus PCI et AGP, permet d’atteindre des
      débits de 250 Mo/s dans sa version de base qui peuvent monter jusqu’à
      8Go/s dans sa version x16 destinée à des périphériques nécessitant des
      bandes passantes très élevées (application graphique).
   2. Les bus de connexions filaires tendent à être remplacés par des systèmes
      de communications sans fils. A l’heure actuelle, il existe :
       le Bluetooth qui offre actuellement un débit de 1 Mb/s pour une portée
         d’une dizaine de mètre et qui va servir à connecter des périphériques
         nécessitant des bandes passantes faibles (clavier, souris, etc…).
       le WIFI (WIreless FIdelity Network) qui permet de connecter des
         ordinateurs en réseau. La dernière révision permet des débits de 54
         Mb/s.
Le bus le plus utilisé à l'heure actuelle est le bus PCI (Peripheral Component
Interconnect ) qui est limité, dans sa version de base, à 33 MHz.


Définition Cartes d’extension
Permet d’ajouter des fonctionnalités (souvent de communication) comme par
exemple les cartes graphiques, son, modem, usb, etc.
Dans le PC et Mac, il existe aujourd’hui deux grandes catégories de carte qui se
différencient par le bus utilisé : PCI et AGP.
Les périphériques d’entrée /sortie

Ce sont les composants électroniques qui permettent à l’ordinateur de
communiquer avec l’extérieur (utilisateur ou autre ordinateur)
Périphériques d’entrée : Clavier, Souris, Scanner, Ecran tactile, carte réseau,
mémoires de masse, etc.
Périphériques de sortie : Ecran (tactile ou non), Imprimante, carte réseau,
mémoires de masse, etc.
Les périphériques peuvent éventuellement avoir un accès direct à la mémoire
centrale sans passer par le bus pour accélérer les échanges de données : c'est le
DMA, Direct Memory Access).


La carte graphique
La carte graphique est un composant important de l’ordinateur, c’est elle qui
«construit» l’image que vous voyez à l’écran. Si la carte graphique est mauvaise,
les performances à l’affichage seront moindres.
Par performance à l’affichage, on entend :
    le format d’affichage (1024x768, 1600x1200,... . 1024x768 signifiant que
      l’image affichée à l’écran sera composée de 1024 pixels horizontal. et 768
      pixels vertical.)
    le nombre de couleurs disponibles (256=8bits, 56000=16bits,
      24moi.=24bits, 32bits)
    La vitesse de rafraichissement (le nombre de x par seconde que l’image
      est réaffichée.) 80Hz, 90Hz, 100Hz,...
   ---------------------------------------------------------------------------------------
   Hertz (Hz), nombre d’événement par seconde. On l’utilise pour:
    les bus, carte mère, processeur
 rafraîchissement de l’écran
 les mémoires (RAM, caches)

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:279
posted:2/27/2012
language:French
pages:47