WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Les interactions entre la carte graphique et le microprocesseur

( Télécharger le fichier original )
par Ousman Lewis Soumbougma
Institut Supérieur d'Informatique et de Gestion (I.S.I.G.) - DTS en Electronique et Maintenance Informatique 2005
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

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.

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-

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

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

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Aux âmes bien nées, la valeur n'attend point le nombre des années"   Corneille