Lecture & décodage des instructions

Le Pentium ProLa première partie de l’exécution d’un programme informatique par un processeur consiste à lire les instructions machines le constituant depuis le cachePetite quantité de mémoire rattachée à une mémoire principale et plus rapide que cette dernière, destinée à améliorer son efficacité globale. L’accès ... de niveau 1 d’instructions. Depuis 1995 et l’introduction du Pentium PRO, ces instructions ne peuvent plus être exécutées nativement par les processeurs modernes, elles doivent donc passer par une phase de décodage. Durant cette phase des unités spécialisées se chargent de prendre en entrée les instructions x86Nom officieux de la famille de processeurs qui équipe les PC et qui est fabriquée entre autres par Intel et AMD. Les premiers processeurs Intel qui éq... complexes (leur taille est variable et la position du code opération n’est pas fixe) et à fournir au cœur d’exécution des instructions de type RISCReduced Instruction Set Computer. Microprocesseur à jeu d’instruction réduit. Le RISC est un des deux modèles guidant la conception de microprocesseur... : beaucoup plus simples et de même taille, ce qui les rend plus pratiques à manipuler et permet notamment l’exécution dans le désordre.

Dès cette phase on constate une différence de philosophie entre AMDAMD est l’acronyme de « Advanced Micro Devices, Inc. ». Il s’agit d’un fabricant de semi-conducteurs basé à Sunnyvale en Californie. La réputation du... et IntelIntel est le premier fabricant mondial de microprocesseurs pour ordinateurs. Le terme Intel est issu de la contraction de « Integrated Electronics »)..... En effet avec le CoreUnité principale de calcul dans un processeur. Les principaux processeurs actuels regroupent désormais deux ou même quatre unités gravées dans la même... 2 Intel s’est attaché à améliorer la performance de crête de décodage. Pour cela les ingénieurs ont ajouté un nouveau décodeur, passant le total de 3 décodeurs à 4 et de plus ils ont introduits une technique de fusion permettant comme son nom l’indique de fusionner deux instructions (test et branchement) en une seule. Ainsi dans un cas idéal le Core 2 peut lire et décoder jusqu’à 5 instructions x86 par cycle contre 3 au maximum pour les processeurs dérivés du P6 jusqu’à présent. Depuis l’Athlon les processeurs AMD peuvent aussi lire et décoder un maximum de 3 instructions par cycle et cette limite ne change pas avec le Barcelona. Mais cette première impression a priori assez décevante ne reflète pas vraiment la réalité.

Schéma de la lecture et du décodage des instructions sur le K10

En premier lieu les décodeurs utilisés par AMD sont plus "puissants" que ceux utilisés par Intel, ils sont symétriques et peuvent prendre en charge le décodage de toutes les instructions. A l’inverse Intel ne dispose sur son Core 2 que d’un décodeur "complet", les 3 autres étant plus simples et ne pouvant prendre en charge le décodage de certaines instructions ce qui diminue le rendement des 4 décodeurs. Vient ensuite la modification apportée avec le Barcelona : désormais le CPULe CPU, encore appelé processeur, est l’acronmye de « Central processing unit », en anglais. Ont pourrait traduire ce terme par unité centrale de trai... lit 32 octets depuis le cache d’instructions au lieu de 16 sur le K8 et le Core 2 Duo. La raison de cet élargissement de la bande passante de lecture est simple : les instructions SSE ou 64 bitsLe 64 bits désigne la capacité d’une puce à utiliser des registres pour les calculs de nombre entiers qui comportent 64 bits. Cela permet de franchir ... sont plus larges (ces dernières utilisent un préfixe d’un octet par instruction appelé REX) et plus leur utilisation se répand plus la bande passante devenait un goulet d’étranglement dans la phase de décodage. De plus le débit des unités SSE ayant augmenté (nous y reviendrons plus loin) il fallait aussi que les décodeurs puissent suivre la cadence.

Si cette amélioration a été jugée opportune sur une architecture disposant de 3 décodeurs, que dire du Core 2 qui dispose d’un décodeur de plus, de la fusion d’instructions et de moitié moins de bande passante ? Il semble clair que ce soit un des points sur lequel les ingénieurs d’Intel devront se pencher pour améliorer une architecture qui hormis celui-ci ne montre pas de défaut de conception flagrant (voir notre article : L’architecture Intel Core 2). Notons également au passage que la fusion d’instructions (macroOn appelle macrophotographie (ou photomacrographie), la prise de vue rapprochée au point que le sujet sur le capteur/film soit plus grand ou de taille...-op fusion) n’est pas active en mode 64-bit sur les processeurs dérivés de l’architecture Core 2. Cela traduit là aussi l’orientation prise pour ces processeurs : là où le Barcelona semble être orienté serveur, le Core 2 montre ses racines orientées grand public et plus spécifiquement vers le marché des portables.


Annonces Google
Commentaires

carmeloanthony 03/09/2007 16:54
Masquer
-0+
carmeloanthony
tres bel article :jap:

On voit les efforts de l'equipe d'AMD et cela semble encourageant pour les futures perf' des Barcelona
TapiTapo 03/09/2007 17:07
Masquer
-0+
TapiTapo
Encore un très bon article, merci.

La question que je me pose est au niveau des jeux d'instructions. Outre les optimisations purement hardware qui sont transparentes du point de vue software, à quel moment le nouveau jeu d'instructions est pris en compte?

Est-ce lors de la compilation avec un linker dépendant de chaque architecture?
Est-ce lors de l'installation du programme sur la machine cible?
Ou est-ce totalement transparent du point de vue du programme tiers et c'est alors l'os qui s'occupe d'optimiser le code pour prendre en compte les nouvelles instructions disponible?

Peut-être est-ce le processeur lors du décodage des instructions x86 qui détecte qu'une émulation possible peut-être faite avec les nouvelles instructions?

Je dois avouer que je ne comprends pas vraiment comment cela ce passe, dans le monde des microcontrôleurs c'est beaucoup plus simple;)

Ca me rappelle mes cours ou notre prof nous disait, vous voyez vous avez tout en main pour faire un processeur (tout ca parcqu'on arrivait à faire des additionneurs 8bits en vhdl^^)
roby the beast 03/09/2007 17:13
Masquer
-0+
roby the beast
Ouais peut-être le retour de AMD!!!!!!!!!!!!!
cyrano 03/09/2007 17:32
Masquer
-0+
cyrano
"si le voltage est commun à tous les cœurs"

Alors que la gestion des horloges est indépendantes... maikilsoncon... Il perde une occasion de bien faire descendre la consomation. J'imagine que seul la version portable pourra le faire...
Dandu 03/09/2007 18:18
Masquer
-0+
Dandu
TapiTapo :

ca dépend des programmes.

Globalement, en général on propose les optimisations à part sur certains calculs, avec le choix dans le programme (soit à la main, rare, soit en détectant si le CPU le fait). C'est surtout sur des programmes qui n'utilisent pas intensivement les instructions en question. On a donc au moins deux versions différentes du code : une SSE (par exemple) et une autre.

L'autre possibilité, c'est de limiter le programme à un jeu d'instruction minimum. C'est rare, parce que du coup ça limite le nombre de CPU utilisables : faut un parc installé important. On a de plus en plus de programme qui nécessitent le SSE(2) actuellement parce que la majorité des CPU actuels le sont.

Sinon, y a les programmes qui proposent plusieurs exécutables : un par type d'instruction, mais c'est chiant pour l'utilisateur.


l'OS n'est pas capable de définir les instructions à utiliser (et n'est en général pas optimisé pour des jeux en particulier) et le processeur n'est normalement pas capable de détecter les instructions.
voyezzz 03/09/2007 19:45
Masquer
-0+
voyezzz
Au vu de cette article le K10 sera sans doute du meme ordre de performances que le C2D ... a frequence egale ... et c'est bien sa le probleme la frequence des C2D s'envole pendant qu'AMD peine a faire monter celle de ses processeurs ... il faut donc esperer que les Les K10 soient nettement plus performants que les C2 a frequence egale sinon c'est mal barré pour AMD ...
TapiTapo 03/09/2007 22:08
Masquer
-0+
TapiTapo
Merci pour ces informations Dandu;)
iorifury 03/09/2007 22:31
Masquer
-0+
iorifury
J'epère bien qu'AMD va réussir à équivaloir les C2D, voir les dépasser à fréquence égale (réponse dans un prochain test) car un avenir sans AMD avec un seul fondeur serait une catastrophe pour l'avancé technologique, allez AMD sort toi les doigts du ... En tout cas les ingénieurs n'ont pas l'air d'avoir chômer, espérons que cela en ressortira du bon.
Zebulon84 03/09/2007 23:11
Masquer
-0+
Zebulon84
Pour les jeux d'instruction, c'est me semble-t-il le compilateur qui les utilise ou non, de manière efficace ou non. C'est pourquoi Intel développe son (ses ?) propre compilateur C, qui génère du code rapide sur processeur intel.

Pour ce qui est du délai et du saut d'appellation, n'y a-t-il pas eu une architecture K9, abandonnée il y a environ 18 mois pour une cause inconnue ? (manque de performance, problèmes de fabrications, de brevet ?)
Watchwolf 03/09/2007 23:14
Masquer
-0+
Watchwolf
Silverchild a écrit :


l'OS n'est pas capable de définir les instructions à utiliser (et n'est en général pas optimisé pour des jeux en particulier) et le processeur n'est normalement pas capable de détecter les instructions.




i386, i586, i686 ce n'est pas adapter le l'OS à un jeu en particulier ? (bien sur il y a plus de jeux d'instructionsque ca).

Les instructions à utiliser sont également choisit par le compilateur lors de la compilation non ? (bien sur il faut dire au compilateur qu'elles instructions notre proc supporte).


Fraye 03/09/2007 23:19
Masquer
-0+
Fraye
on voit qu'il y a un travail sérieux qui a été fait [:fraye:3]
même si je ne comprends pas tout

bravo a l'équipe de PPC.
Florian c 04/09/2007 08:29
Masquer
-0+
Florian c
Fraye > Quels passages ne comprends tu pas ?
Mictateur 04/09/2007 09:17
Masquer
-0+
Mictateur
a écrit :

Ca me rappelle mes cours ou notre prof nous disait, vous voyez vous avez tout en main pour faire un processeur (tout ca parcqu'on arrivait à faire des additionneurs 8bits en vhdl^^)



Ha ben on a eu le même. :o
Dandu 04/09/2007 09:49
Masquer
-0+
Dandu
a écrit :

i386, i586, i686 ce n'est pas adapter le l'OS à un jeu en particulier ? (bien sur il y a plus de jeux d'instructionsque ca).

Les instructions à utiliser sont également choisit par le compilateur lors de la compilation non ? (bien sur il faut dire au compilateur qu'elles instructions notre proc supporte).




oui, pour Linux, tu peux limiter au CPU minimum, mais c'est pas nécessairement le cas.

les instructions sont choisies par le compilateur en fonction de ce qu'on lui demande, mais tu peux lui mettre plusieurs versions dans le programme (avec un choix, manuel ou automatique)

en général, on a quand même tendance a faire du code le "moins" optimisé possible pour garder une compatibilité correcte : on se limite par exemple au i686 avec MMX (ce qui doit représenter une bonne partie des machines actuelles)

Maintenant, si t'as du code qui va tourner sur une machine que tu connais bien, tu peux optimiser avec ce que le CPU supporte (ex. Gentoo qui peut être compilé en fonction de la machine).
Fraye 04/09/2007 13:29
Masquer
-0+
Fraye
Djlauby a écrit :

Fraye > Quels passages ne comprends tu pas ?


l'article est trés bien fait et tout et tout..
bonnes explications.. ça se voit

ca vient plus de moi qui même quand il y a toutes les explications possibles
n'arrive plus a suivre techniquement.
mixeur 04/09/2007 21:44
Masquer
-0+
mixeur
Fedy Abi-Chahla -> Mais comment tu sais tout ça ?

A savoir Vous allez poster en tant qu'utilisateur anonyme.



Annonces Google