![](Les-interactions-entre-la-carte-graphique-et-le-microprocesseur21.png)
III. GENERALITES SUR LES MICROPROCESSEURS III.1.
Définition
Fig.11. Des microprocesseurs d'ordinateur
Le microprocesseur, (ou en anglais, CPU, sigle de Central
Processing Unit pour « Unité centrale de traitement ») est le
composant essentiel d'un ordinateur, où sont effectués les
principaux calculs. C'est un circuit intégré complexe
caractérisé par une très grande intégration et
doté des facultés d'interprétation et d'exécution
des instructions d'un programme Sa cadence (fréquence d'exécution
des micro-instructions) est exprimée
en hertz. Il ne s'agit pas nécessairement d'un circuit
isolé, même si les progrès techniques depuis les premiers
emplois du terme le permettent aujourd'hui. Dans ce cas, on a maintenant
tendance à préférer le terme de
microprocesseur.
Néanmoins, la distinction entre Central Processing
Unit, microprocesseur, CPU, processeur est souvent abandonnée au profit
d'une banalisation de ces termes. A l'heure actuelle, un microprocesseur
regroupe sur quelques millimètres carrés des
fonctionnalités toujours plus complexes. Leur puissance continue de
s'accroître et leur encombrement diminue régulièrement
respectant toujours, pour le moment, la fameuse loi de Moore.
III.1.1. La fréquence
La fréquence d'horloge (appelée
également cycle, correspondant au nombre d'impulsions par seconde,
s'exprime en Hertz (Hz). Ainsi, un ordinateur à 800 MHz possède
une horloge envoyant 800.000.000 de battements par seconde. La fréquence
d'horloge est généralement un multiple de la fréquence du
système (FSB, Front Side Bus), c'est-à-dire un multiple
de la fréquence de la carte mère. L'horloge qui
synchronise toutes les actions de l'unité centrale. Elle est
présente dans les processeurs synchrones, et absente dans les
microprocesseurs asynchrones et les microprocesseurs auto synchrones.
111.1.2. La mémoire cache
La mémoire cache (également appelée
antémémoire ou mémoire tampon) est une
mémoire
36/62
rapide permettant de réduire les délais
d'attente des informations stockées en mémoire vive. En effet, la
mémoire centrale de l'ordinateur possède une vitesse bien moins
importante que le processeur. Il existe néanmoins des mémoires
beaucoup plus rapides, mais dont le coût est très
élevé. La solution consiste donc à inclure ce type de
mémoire rapide à proximité du microprocesseur et d'y
stocker temporairement les principales données devant être
traitées par le microprocesseur. Les ordinateurs récents
possèdent plusieurs niveaux de mémoire cache :
La mémoire cache de premier niveau
(appelée L1 Cache, pour Level 1 Cache) est directement
intégrée dans le processeur. Elle se subdivise en 2 parties :
- La première est le cache d'instructions, qui contient
les instructions issues de la mémoire vive décodées lors
de passage dans les pipelines.
- La seconde est le cache de données, qui contient des
données issues de la mémoire vive et les données
récemment utilisées lors des opérations du processeur.
Les caches du premier niveau sont très rapides
d'accès. Leur délai d'accès tend à s'approcher de
celui des registres internes aux microprocesseurs.
La mémoire cache de second niveau
(appelée L2 Cache, pour Level 2 Cache) est située au niveau
du boîtier contenant le processeur (dans la puce). Le cache de second
niveau vient s'intercaler entre le processeur avec son cache interne et la
mémoire vive. Il est plus rapide d'accès que cette
dernière mais moins rapide que le cache de premier niveau.
La mémoire cache de troisième niveau
(appelée L3 Cache, pour Level 3 Cache) est située au niveau
de la carte mère.
Tous ces niveaux de cache permettent de réduire les temps
de latence des différentes mémoires lors du traitement et du
transfert des informations. Pendant que le processeur travaille, le
contrôleur de cache de premier niveau peut s'interfacer avec celui de
second niveau pour faire des transferts d'informations sans bloquer le
processeur. De même, le cache de second niveau est interfacé avec
celui de la mémoire vive (cache de troisième niveau), pour
permettre des transferts sans bloquer le fonctionnement normal du
microprocesseur.
La mémoire cache, qui permet d'accélérer
les traitements, en diminuant les accès à la RAM. Ces
mémoires tampons sont en effet beaucoup plus rapides que la RAM et
ralentissent moins la CPU. Le cache instructions reçoit les prochaines
instructions à exécuter, le cache donné manipule les
données. Parfois, un autre cache unifié est utilisé.
37/62
Dans les microprocesseurs évolués, des
unités spéciales du microprocesseur sont dévolues à
la recherche, par des moyens statistiques et/ou prédictifs, des
prochains accès en mémoire centrale.
111.2. Fonctions du microprocesseur
Le microprocesseur est un circuit électronique
cadencé au rythme d'une horloge interne, grâce à un cristal
de quartz qui, soumit à un courant électrique, envoie des
impulsions, appelées « top ». A chaque top d'horloge le
processeur exécute une action, correspondant à une instruction ou
une partie d'instruction. L'indicateur appelé CPI (Cycles Par
Instruction) permet de représenter le nombre moyen de cycles
d'horloge nécessaire à l'exécution d'une instruction sur
un microprocesseur. La puissance du microprocesseur peut ainsi être
caractérisée par le nombre d'instructions qu'il est capable de
traiter par seconde. L'unité utilisée est le MIPS (Millions
d'Instructions Par Seconde) correspondant à la fréquence du
processeur que divise le CPI.
Il est chargé d'organiser les tâches
précisées par le programme et d'assurer leur exécution. Il
doit aussi prendre en compte les informations extérieures au
système et assurer leur traitement. C'est le cerveau du
système.
![](Les-interactions-entre-la-carte-graphique-et-le-microprocesseur22.png)
A.LLI
111.2.1. Architecture du
microprocesseur
Ate*
afflk-'
c_ache
Un microprocesseur est construit autour de deux
éléments principaux : - Une unité de commande
- Une unité de traitement
Remarque :
38/62
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 de données internes au microprocesseur.
- Les registres d'adresses (pointeurs) connectés
sur le bus adresses.
111.2.1.1. L'unité de commande
Elle 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 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.
· Le registre d'instruction et le
décodeur d'instruction : chacune des instructions à
exécuter est rangée dans le registre instruction puis est
décodée par le décodeur d'instruction.
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. Il s'agit d'un automate réalisé soit de façon
câblée (obsolète), soit de façon
micro-programmée, on parle alors de micro microprocesseur. Il permet de
synchroniser les différents éléments du processeur. En
particulier, il initialise les registres lors du démarrage de la machine
et il gère les interruptions.
111.2.1.2. L'unité de traitement
C'est le coeur du microprocesseur. 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étiques (Addition, soustraction).
39/62
· 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 ouflag
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 (carry : C)
- Retenue intermédiaire (Auxiliary-Carry : AC)
- Signe (Sign : S)
- Débordement (overflow : OV ou V)
- Zéro (Z)
- Parité (Parity : P)
· Les accumulateurs sont des registres de
travail qui servent à stocker un opérande au début d'une
opération arithmétique et le résultat à la fin de
l'opération est utilisé pour stocker les données en cours
de traitement par l'UAL.
L'unité d'entrée-sortie, qui prend en
charge la communication avec la mémoire de l'ordinateur ou la
transmission des ordres destinés à piloter ses microprocesseurs
spécialisés, permettant au processeur d'accéder aux
périphériques de l'ordinateur.
111.2.2. Principe de fonctionnement
Le CPU est l'unité de traitement de données
principale d'un ordinateur, ce qui veut dire qu'il va exécuter les
programmes, ce qui peut inclure de déléguer une partie du
traitement à d'autres processeurs périphériques. En plus
de sa capacité de traitement, il a donc également une fonction de
contrôle et de coordination de l'action de l'ensemble des composants d'un
ordinateur. Un programme est un ensemble d'instruction situé dans la
mémoire centrale de l'ordinateur, que le processeur va lire puis
exécuter séquentiellement, à moins d'un saut dans le
programme Le temps d'exécution propre à chaque instruction, est
exprimé en cycles de l'horloge interne qui cadence l'activité du
processeur.
L'exécution d'un programme se féra en plusieurs
étapes, chaque étape correspondant à l'exécution
d'une instruction. Le microprocesseur doit donc :
- Trouver l'instruction à exécuter
- Reconnaître le type d'instruction à
exécuter
- Exécuter l'instruction reconnue.
40/62
Caractéristiques :
Un microprocesseur possède trois types de bus:
Un bus de données, définit la taille des
données manipulable (indépendamment de la taille des registres
internes).
Un bus d'adresse définit le nombre cases
mémoires accessibles.
Un bus de commande définit la gestion du
processeur IRQ, RESET etc.
Un microprocesseur est caractérisé par sa
capacité d'adressage. C'est le nombre de case mémoire auxquelles
il peut accéder. Ainsi, un processeur est dit 8 bits ou 16 bits ou plus
suivant la dimension du bus (groupe de fils) d'adresse qu'il possède.
De plus le microprocesseur est caractérisé par
la cadence de son horloge exprimée en MHz (mégahertz) ou GHz
(gigahertz), la taille de ses registres (8, 16, 32, 64, 128 bits), son jeu
d'instructions (ISA en anglais, Instructions Set Architecture) dépendant
de la famille (CISC, RISC, etc.), sa finesse de gravure exprimée en nm
(nanomètres) et sa microarchitecture interne. Mais ce qui
caractérise principalement un processeur est la famille à
laquelle, il appartient :
CISC (Complex Instruction Set Computer): choix
d'instructions aussi proches que possible d'un langage de haut niveau.
RISC (Reduce Instruction Set Computer):
choix d'instructions plus simples et d'une structure permettant une
exécution très rapide.
VLIW (Very Long Instruction Word).
DSP (Digital Signal Processor).
Même si la dernière famille (DSP) est relativement
spécifique.
En effet un processeur est un composant programmable est donc
a priori capable de réaliser tout type de programme Toutefois dans un
souci d'optimisation des microprocesseurs spécialisés sont
conçus et adaptés à certains types de calculs (3D, son,
...). Les DSP sont des microprocesseurs orientés pour les calculs
liés au traitement du signal. Il n'est pas rare de voir
implémenté physiquement.
41 /62
IV. COMMUNICATION ENTRE LE MICROPROCESSEUR ET LA CARTE
GRAPHIQUE
IV.1. Interactions et collaborations
Le microprocesseur de nos PC transmet à la carte
vidéo, par l'intermédiaire du pont nord du chipset, une
série d'instructions et de données décrivant
l'écran à afficher. Ces informations proviennent du
microprocesseur, mais de façon "indirecte". En effet le microprocesseur
n'envoie pas directement les informations au moniteur, mais traite les
informations provenant de sa mémoire vive (RAM), puis les envoie
à une carte graphique qui est chargée de convertir les
informations en impulsions électriques qu'elle envoie au moniteur. Donc
toutes ces informations sont transformées en une série de points
et qui sont ensuite communiqués à l'écran.
Dans la plupart des programmes DOS on fonctionne en mode
caractère c'est à dire que la carte prend la correspondance en
points de chaque caractère dans une table et envoie le tout au moniteur.
C'est différent sous Windows ou une autre interface graphique, le
système ne transmet à la carte que des descriptions graphiques.
Les informations sont beaucoup plus importantes donc des temps d'affichage plus
long d'où l'utilisation de processeur graphique et de l'augmentation de
la mémoire vidéo. L'utilisation des cartes graphiques
équipées de processeur soulage le microprocesseur du PC car les
opérations sont prises en charge directement par le ce processeur. De
plus elles sont capables de s'adapter à n'importe quel système
graphique.
On s'en doute, avec une quantité pareille
d'informations à envoyer en permanence vers un écran qui doit
être rafraîchi 70 fois par seconde, le microprocesseur, s'il n'est
pas débordé, est sérieusement mis à contribution.
Le gain en vitesse du système est étroitement lié à
la vitesse du microprocesseur puisque c'est lui qui calcule et envoie les
ordres d'affichages et qui les exécute par la voie la plus rapide.
Cela dit, le microprocesseur étant le maître
d'oeuvre, il a donc pour fonction de :
· Organiser l'enchaînement des tâches
précisées dans la mémoire programme, par une exploitation
séquentielle des instructions situées aux adresses successives de
la mémoire, avec éventuellement, des ruptures de séquence
en fonction des sauts programmés,
· Rythmer et synchroniser l'exécution de ces
tâches,
· Analyser le contenu du programme, sélectionner,
gérer et commander les circuits
42/62
nécessaires à l'exécution de chaque
tâche.
· Prendre en compte les informations extérieures
au système, celles venants de l'utilisateur: clavier, interrupteur, etc.
; et des capteurs: température, position d'objet, etc.
IV.2. Rôle du pilote vidéo
Si la partie matérielle de l'affichage est importante, la
partie logicielle ne l'est pas moins. A vrai dire, l'essentiel des gains de
vitesse est lié au pilote graphique.
Pour mieux le comprendre, il faut retracer le parcours d'une
image au sein du système. Prenons le cas de Windows qui tend à
être le cas d'espèce. Dans cette hypothèse, Windows fournit
lui-même les routines d'affichage, déchargeant ainsi les
applications de cette tâche ingrate. L'application et Windows dialoguent
continuellement, l'une transmettant à l'autre les données
à afficher, entre autres choses. Windows procède alors à
une "rasterisation" (en français un tramage) de l'image avant de
l'envoyer en mémoire. En clair, il construit cette image point par point
en mémoire centrale. C'est long et encombrant.
A ce stade, l'image suit le parcours classique : elle
transite par le processeur avant d'être envoyée via le bus de
données au périphérique d'affichage qu'est l'écran.
Le problème vient de ce que les routines d'affichage fournies avec
Windows sont loin d'être les plus performantes.
On comprend dès lors où se trouve le
réel gain de la carte graphique. Plus l'accélération
graphique est riche de primitives de dessins, plus efficaces seront les
instructions transmises par le pilote graphique. Il n'est pas rare de disposer
d'un matériel assez peu performant et d'augmenter singulièrement
les performances d'affichage simplement en intégrant un pilote plus
récent.
IV.3. Traitement des données vidéos
La fonction principale de la carte graphique est de traiter
les signaux vidéo et de les envoyer à l'écran. Lorsqu'un
développeur souhaitera utiliser les fonctionnalités
avancées (généralement les opérations 3D) des
cartes graphiques modernes, il utilisera des bibliothèques graphiques
telles que DirectX ou OpenGL qui permettent
de rendre la programmation d'un logiciel plus facile et permet de rendre le
code source plus indépendant de la carte graphique.
Toutes les cartes graphiques ont deux moyens d'accès
à leur mémoire (ou buffer),
43/62
pendant que l'un est utilisé pour recevoir des
informations en provenance du reste du système, l'autre est
sollicité pour l'affichage à l'écran. Le premier est un
accès aléatoire conventionnel (RAM) comme pour les
mémoires centrales, le deuxième est généralement un
accès séquentiel à la zone représentant
l'écran (pixel buffer). Les jeux demandant de plus en plus de
puissance, il fallait trouver un moyen pour que tous les calculs
spécifiques à la 3D ne se fassent plus sur le processeur de la
carte mère. Depuis une dizaine d'années, les cartes graphiques
prennent en charge ces calculs.
Le pilote et la carte graphique sont en étroite
collaboration. Au moment de l'intégration de la carte au système,
vous installez également le seul et unique pilote nécessaire pour
gérer l'affichage. Dès lors le parcours de l'image diffère
quelque peu, puisqu'en lieu et place des routines d'affichages de Windows,
c'est le pilote graphique associé à votre carte qui prend les
choses en main. Il reçoit les données à afficher et les
analyse afin d'en tirer les instructions les plus courtes et les plus efficaces
pour afficher l'image analysée. Après leur passage en
mémoire centrale, ces instructions transitent par le microprocesseur qui
se charge de les transmettre à l'accélérateur graphique.
C'est là que l'image est intégralement reconstruite avant
d'être placée dans la mémoire vidéo. Cette
dernière n'a plus alors qu'à la livrer toute chaude au
système de conversion digital analogique qui gère les canons du
tube cathodique. Le cycle est ainsi bouclé et se répète
constamment.
Une des évolutions majeures récentes des cartes
graphiques est le fait qu'elles soient devenues programmables.
Le GPU se charge du traitement des instructions
envoyées par le pilote graphique. Son rôle est de traiter les
objets envoyés par le microprocesseur puis d'en déduire les
pixels à afficher. En effet, dans le cas de l'affichage de la
scène 3D, le microprocesseur communique au GPU les données
à afficher sous forme vectorielle. Les objets sont donc définis
par une masse de points représentant leurs coordonnées dans
l'espace. Pour afficher un objet à l'écran, le GPU procède
en plusieurs étapes :
a-
![](Les-interactions-entre-la-carte-graphique-et-le-microprocesseur23.png)
Fig.12. Une image en 3D
44/62
placer les objets dans le repère et leur appliquer des
transformations (translation, rotation, etc.) ;
b- appliquer les effets de lumières sur chaque objet ;
c- décomposer les objets en petits triangles puis en
fragments ;
d- appliquer des textures et des effets sur les fragments ;
e- afficher les pixels résultants de
l'association des fragments.
Pour cela, il est constitué d'un immense pipeline
principal. Celui-ci comprend au moins un vertex shader (étape a et b),
un setup engine (étape c) et un pixel shader (étape d et e).
IV.4. Les différents composants de
traitements
IV.4.1. Le contrôleur graphique (Graphics Data
Controller)
Le processeur graphique doit pouvoir écrire dans la
mémoire vidéo, pour modifier le texte ou changer l'image
affichée à l'écran. Le contrôleur graphique propose
alors plusieurs modes d'écriture et de lecture de la mémoire
vidéo. Ces différents modes servent à
accélérer les modifications de l'affichage lors de remplissage de
zones avec une même couleur par exemple, ou des copies de portions
d'écran. Le contrôleur graphique est donc l'intermédiaire
entre le processeur graphique et la mémoire graphique.
IV.4.2. Le séquenceur de timing (Timing
Sequencer)
Le séquenceur synchronise tous les composants de la carte
cités jusqu'ici. Il est en charge de la gestion de l'horloge. Il
s'occupe du rafraîchissement de la mémoire vidéo et de la
gestion des accès concurrents à cette mémoire.
On affecte aussi au séquenceur, la gestion du mode
d'adressage de la mémoire vidéo. Cette mémoire à
une capacité de 256 ko. Pourtant, le processeur ne dispose que d'un
espace d'adressage de 64 Ko pour y accéder. Ceci est du au fait que la
mémoire vidéo est composée de 4 "plans" de 64 ko. Le choix
du plan lorsque le processeur accède à la mémoire
dépend du mode d'adressage utilisé.
IV.4.3. Le contrôleur d'attributs (Attribute
Controller)
Périodiquement, les données de la mémoire
vidéo doivent être analysées pour en déduire l'image
affichée à l'écran. Le contrôleur d'attributs va
être chargé, durant l'affichage, de déduire à partir
des informations en mémoire vidéo (caractères en mode
texte ou couleur de pixel en mode graphique) l'index dans la palette du DAC.
IV.4.4. Le contrôleur de tube cathodique
(Cathod Ray Tube Controller) Il commande le déplacement
du spot sur l'écran. C'est le rôle dévolu au CRTC.
Celui-ci
45/62
possède un grand nombre de registres configurables par le
programmeur qui influent directement sur les mouvements du spot. C'est
grâce au CRTC qu'on peut, par exemple, modifier la taille et la
résolution de l'image. Il existe un lien fort entre la mémoire
vidéo et le CRTC. En effet, le CRTC connaît en permanence la
position du spot. Il va donc pouvoir sélectionner l'adresse dans la
mémoire du pixel (en mode graphique) ou du caractère (en mode
texte) que le spot doit afficher à l'écran. Une deuxième
fonction du CRTC est donc de calculer l'adresse dans la mémoire
vidéo qui contient l'information à afficher sur le moniteur.
IV.4.5. Le convertisseur digital analogique (Digital
to Analog Converter)
Le moniteur doit commander l'intensité des trois faisceaux
d'électrons (rouge, vert, bleu) qui vont permettre l'affichage des
différentes couleurs. Il doit recevoir des signaux analogiques pour
commander ces faisceaux, et non des signaux numériques. Le DAC
possède une palette qui, à un index de couleur, associe les
proportions des trois signaux de base rouge, vert et bleu. Ces proportions
peuvent être modifiées par le programmeur pour chacune des 256
couleurs. Le DAC se charge alors de traduire les proportions associées
à une couleur en signaux analogiques parfaitement compréhensibles
par le moniteur. Remarques:
1) Toutes ces opérations doivent être
effectuées pour tous les pixels de la scène à afficher.
Pour une image en 1600x1200, cela fait 1 920 000 pixels à calculer, soit
près de 6 millions de fragments !!!! D'autant plus que pour bien faire,
le GPU doit être capable d'afficher 50 images/s soit calculer 300
millions de fragments par seconde...Ceci explique pourquoi les GPU des cartes
3D récentes sont plus complexes que les derniers microprocesseurs.
2) Pour utiliser au mieux les capacités des cartes
graphiques ont dispose d'API (Application Program Interface) qui sont des
langages de description et de manipulation des objets :
- Direct3D de Microsoft
- OpenGL
46/62
IV.5. Vue d'ensemble du fonctionnement d'une carte
graphique
extérieur
sélection du
mode d'adressage
de la mémoire
TS
GDC
|
lecture/écriture dans la Mémoire
|
ATC
adresse
CRTC
adresse du point à afficher dans la mémoire
vidéo
mémoire
vidéo
donnée lue ou à écrire
informations à afficher
index de la couleur dans la palette
gestion du
déplacement du spot
|
signaux analogiques traduisant la
couleur du point
|
DAC
palette
![](Les-interactions-entre-la-carte-graphique-et-le-microprocesseur24.png)
moniteur
Légende
Le Le GDC (Graphics Data Controller) ou
contrôleur graphique.
Le TS (Timing Sequencer) ou
séquenceur de timing.
L'ATC (Attribute Controller) ou
contrôleur d'attributs.
Le CRTC (Cathod Ray Tube Controller)
ou contrôleur de tube cathodique. Le DAC
(Digital to Analog Converter) ou convertisseur digital
analogique.
47/62
|