COMPTOIR
register

Hard du hard • Ça fonctionne comment, un processeur ? (Partie 1)

Ben mon CPU, il fait des calculs, non ? 

 

Tout ordinateur possède un processeur. Plus largement même, tout bidule électronique possède un processeur. On le présente souvent comme le composant le plus important, le "chef" du l'unité centrale, celui qui commande, qui calcule, qui gère le système. Pourtant, au niveau de la puissance brute, les performances d'un CPU haut de gamme se mesurent en dizaine de GFLOPS, là où les cartes graphiques récentes haut de gammes tutoient les dizaines de TFLOPS, soit mille fois plus ! Pourquoi garder ainsi un composant a priori faiblard ? Comment peut-on passer d'un tas de plus d'un milliard de transistors (1,7 milliard sur un 6700K) à une bête de calcul ? Dans cette première partie, nous allons passer en revue les diverses techniques utilisées pour augmenter la vitesse de calcul d'un cœur, afin que pipeline et autres instructions vectorielles n'aient plus de secret pour vous.

 

header architecure cpu

 



Un poil avant ?

Adoption de FreeSync : enfin sur XBox One (MAJ)

Un peu plus tard ...

Enfin un test pour le Quadstellar

Les 14 ragots
Les ragots sont actuellement
ouverts à tous, c'est open bar !
par Starkuch, le Samedi 12 Mai 2018 à 08h21  
Un grand merci pour cet article . Depuis le temps que je voulais comprendre son fonctionnement .
Il ne vous reste plus que la partie GPU, RAM, SDD à faire
par Altway, le Lundi 16 Avril 2018 à 14h20  
Super article pour ceux qui sont friands de détails techniques ou qu'y on eu des module dans leur scolarité pour revoir les bases et prendre du recul dessus. Merci d'avoir pris du temps pour écrire tous ça ! Respect
par Un ragoteur Reunionnais embusqué, le Vendredi 16 Mars 2018 à 17h53  
MERCI cela fait bien longtemps que je n'avais pas eu de lecture aussi precise une vrai MAJ
par un rat goth à l'heure embusqué, le Mercredi 14 Mars 2018 à 09h33  
Si tu veux vraiment être tatillon, autant l'être jusqu'au bout ! Non, le CPU ne comprends pas les code hexadécimaux, il ne comprend que le code binaire. L'hexadécimal est utilisé pour simplifier un peu la vie des humains qui, eux, ne comptent ni ne parlent en binaire !
par Un programmeur embusqué, le Lundi 12 Mars 2018 à 14h19
Non... Le seul langage compris par le CPU est le langage (ou code) machine, une suite de codes hexadécimaux encodant les instructions et leurs arguments.

L'assembleur est le programme permettant de traduire des mnémoniques compréhensibles par un humains (et constituant le langage assembleur) en code machine. Par exemple le mnémonique "PUSH AF" du bon vieux CPU Z80A est traduit par l'octet F5 (en hexadécimal) par l'assembleur alors que "POP AF" se traduit par F1.

S'il était parfaitement possible de se passer d'un assembleur avec les CPU 8 bits (dont le jeu d'instruction comportaient moins de 255 codes machines différents pour les premiers CPU 8 bits, tels les 6502 ou 6800) et d'écrire directement en code machine (je l'ai fait dans mes jeunes années), c'est devenu impossible avec les CPU modernes (à moins d'avoir une mémoire prodigieuse).
par Arkane, le Mardi 13 Mars 2018 à 23h25  
Dossier très intéressant, merci ! (même si j'avoue ne pas avoir parfaitement tout compris)

J'avais un module "Assembleur" dans mon cursus, mais je ne l'avais pas du tout suivi. Ça me fait comme un cours de rattrapage, 5 ans plus tard x)
par chambolle, le Mardi 13 Mars 2018 à 19h13  
Joli dossier. Plutot bien expliqué

Il y a quelques petites approximations, mais c'est tres normal
par Pascal M., le Mardi 13 Mars 2018 à 06h10  
par DoCky, le Lundi 12 Mars 2018 à 19h19
Eh bah ce fut super intéressant! (j'ai tout lu je frole l'avc merci :/ )
Vivement le round two
donne du rhum à ton homme
par Pouyou-pouyou, le Lundi 12 Mars 2018 à 19h34  
Un grand merci pour ce dossier. On attend impatiemment la suite !
par DoCky, le Lundi 12 Mars 2018 à 19h19  
Eh bah ce fut super intéressant! (j'ai tout lu je frole l'avc merci :/ )
Vivement le round two
par Un #ragoteur déconnecté embusqué, le Lundi 12 Mars 2018 à 19h10  
La page 1 m'a rappelé les listings d'Amstrad Cent Pour Cent, en particulier celui d'un shoot'em-up qui s'avéra buggé

Et sinon, y'a quelques approximations fort mal venues dans un ensemble manquant de cohérence, en particulier l'histoire de consommation évoluant au carré de la fréquence, qui est un très gros raccourci
à travers champs...

D'ailleurs, on peut trouver sur la toile des papiers intéressants : http://www2.ece.rochester.edu/~garg/documents/ece461-project.pdf

On peut notamment y voir une contradiction directe de l'histoire de la consommation, ainsi que l'aspect "en cloche" de l'efficacité énergétique, l'optimum variant en fonction de l'architecture elle-même, mais aussi des fuites et des caractéristiques statiques (Rdson) et dynamiques des transistors (le slew rate transformant de plus en plus un signal carré en signal triangulaire ou approchant)
par Polo_chon, le Lundi 12 Mars 2018 à 17h07  
Bon sang des souvenirs reviennent...
Les codes assembleur 6502 de mon Oric atmos et ensuite ceux sur 68000 de l'Amiga.
Waouh ma jeunesse
Lire une page de code ressemblait à la lecture de la matrice
par Zoroastre, le Lundi 12 Mars 2018 à 16h46  
par Un programmeur embusqué, le Lundi 12 Mars 2018 à 14h19
S'il était parfaitement possible de se passer d'un assembleur avec les CPU 8 bits (dont le jeu d'instruction comportaient moins de 255 codes machines différents pour les premiers CPU 8 bits, tels les 6502 ou 6800) et d'écrire directement en code machine (je l'ai fait dans mes jeunes années), c'est devenu impossible avec les CPU modernes (à moins d'avoir une mémoire prodigieuse).
Le chenillard codé au clavier alphanumérique sur plaquette Motorola