COMPTOIR
register

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

Des performances single-core à la traîne !

A l'issue de cette première partie, nous comprenons un peu mieux la stagnation des performances des CPU depuis quelques années. Si la vectorisation de code permet une accélération conséquente, cela est surtout vrai pour les programmes de simulation et de calcul scientifique (ces programmes ont peu de branchements et opèrent sur des données souvent contiguës en mémoire... et sont très souvent utilisés dans les benchmarks à chaque nouvelle génération de CPU !), cela n'est pas suffisant pour faire doubler les performances monocœurs tous les deux ans, n'en déplaise à Mr Moore.

 

amd epyc

EPYC, ou la parfaite illustration de "comment aller plus vite sans augmenter la fréquence"

 

Malgré tout, les processus de gravure de plus en plus fins ont permis (avec plus ou moins de retard, le 14 nm ayant été longtemps repoussé chez Intel, tout comme la prochaine génération en 10 nm) d'intégrer toujours plus de transistors. Il a donc bien fallu trouver une utilité dans ce surplus de silicium, qui s'est soldée par la multiplication du nombre de coeurs. Cependant cela n'est pas sans conséquences sur la manière même de programmer, que vous pourrez retrouver dans la deuxième partie de notre dossier.

 



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