human
Que signifient les nombres pour un processeur d'ordinateur , (par exemple, Ghz, cache, génération, ) et comment ils sont liés aux performances. Dites, est-ce qu'un i5 de 2e génération à 2,66 Ghz serait meilleur que le dernier i7 à 2,2 Ghz. Explique comme si j'avais cinq ans.
gpt
GHz correspond à des milliards de cycles par seconde. Une façon très simple (et honnêtement fausse, voir plus loin dans le post) de penser à cela est qu'un ordinateur peut, par exemple, additionner deux nombres ensemble en un seul cycle. Si vous voulez faire un milliard d'ajouts en une seconde, vous auriez besoin de 1 GHz, etc. Le cache est la mémoire située sur le processeur lui-même. Parce que la mémoire rapide est chère, les ordinateurs modernes utilisent ce qu'on appelle la hiérarchie de la mémoire. Du côté lent et bon marché, vous avez des disques durs en rotation, et du côté super rapide et coûteux, vous avez le cache, avec la RAM au milieu. Ce qu'un ordinateur fait, c'est stocker tout le programme sur disque. Il charge ensuite des parties , ou des pages , du programme dans la RAM , quelques bits de moins ( trames ) dans le cache , etc . Lorsqu'un processeur a besoin d'informations du programme, (comme les nombres que nous ajoutons), il vérifie d'abord son cache. Ceci est généralement si rapide qu'il se produit en moins d'un cycle. S'il N'EST PAS dans le cache, le processeur vérifie alors la RAM. C'est * vraiment vraiment * lent comparé à le trouver dans le cache ( des centaines de milliers de fois plus lent ) . Si lent en fait que le processeur mettra en pause le programme coupable et travaillera sur autre chose pendant qu'il attend. Si ce n'est pas non plus dans la RAM, alors vous obtenez un "pagefault" et l'ordinateur doit alors charger les informations à partir du disque, ce qui peut être des MILLIARDS de fois plus lent. Si vous vous souvenez de Windows XP " thrashing " , c'était l' ordinateur qui essayait de faire tellement de choses à la fois qu'il manquait d' espace et devait constamment faire des erreurs de page . Les processeurs modernes multicœurs ont en fait plusieurs couches de cache. Dans un quad core, vous avez généralement un petit cache L1 pour chaque cœur, puis deux caches L2 répartis entre 2 cœurs chacun, puis un cache L3 relativement grand pour les quatre. Parce que les échecs de cache et les défauts de page sont si graves, vous voulez autant de cache et de RAM que vous pouvez vous permettre. La génération est un concept assez simple. Une société de processeurs créera une conception de base, puis la modifiera pour tous les processeurs d'une génération. La prochaine génération a une base différente. Là où ça se complique, c'est dans ce qui rend les bases différentes. dans les années 80 (iirc), les concepteurs de puces ont finalement entendu parler de Ford et de ses chaînes de montage, et ont réalisé qu'un cycle informatique pouvait être décomposé en parallèle. C'est ce qu'on appelle le pipeline. [ Le pipeline RISC classique comme exemple . ] ( URL_1 ) [ Wiki ] ( URL_0 ) . Un cycle est maintenant divisé en cinq parties. (Remarque ci-dessous, il existe une version encore "inférieure" du cache appelée registres.) * IF est "récupération d'instructions". C'est là que le processeur lit le cache et récupère l'instruction. Une instruction est la version en code binaire de (A+B→C) * ID est « décodage d'instruction ». C'est là que le processeur se prépare pour l'addition et charge les nombres stockés dans les registres A et B. * EX est « exécution ». " Le processeur additionne A et B. * MEM est " mémoire " . Pour l' addition , nous sautons cette étape . C'est là que le processeur peut lire/écrire des registres vers/depuis le cache. * WB signifie « réécriture ». Ici, le processeur écrit le résultat de A+B et le stocke dans le registre C. Avec un peu de mémoire supplémentaire pour stocker les résultats de chaque étape, nous pouvons en fait exécuter 5 instructions en même temps. Nous IF tandis que l'ID d'instruction précédente, etc. Les processeurs modernes ont * des centaines * d'étapes comme celle-ci, ce qui signifie qu'ils peuvent effectivement ajouter des centaines de nombres par cycle. Il y a un problème cependant. Disons que nous voulons faire A+B→C C+D→E Si nous devions utiliser un pipelining naïf, nous commencerions à ajouter C et D avant que le résultat de A+B puisse être écrit dans C. Cela rendrait le programme étrange. . Par exemple : A=1 B=2 C=0 D=4 Normalement on aurait : 1 + 2=3→C 3 + 4=7→E Mais avec un pipelining naïf : 1 + 2=3 0 + 4=4 3 →C 4→E Afin de résoudre ce problème et des problèmes similaires (appelés dangers), le processeur doit faire beaucoup de travail pour s'assurer qu'il n'a pas à revenir en arrière et à corriger des erreurs comme celle-ci. Ainsi, chaque génération de processeur dispose d'un meilleur pipeline et d'une meilleure prévention des risques, et peut donc en faire plus en un seul cycle. * * TL;DR * * : GHz représente des milliards de cycles par seconde, le cache est une mémoire rapide sur puce (obtenez-en plus !), et les générations affectent ce qu'un processeur peut faire par cycle.