COMPTOIR
register

×

skl vs sunnycove t

Sunny Cove et les 18 % d'IPC : déchiffrage
skl vs sunnycove t

Que ce soit à suite aux maigres annonces d'Intel au Computex ou aux fuites provenant de chez Dell concernant la dixième génération de processeurs bleue, vous avez été nombreux à être surpris (et à nous interroger !) sur un chiffre martelé par Intel : une augmentation de l'IPC de 18% par rapport à un "SKL Core".

 

Pour bien comprendre ce que cela signifie, revenons aux fondamentaux : l'IPC est le nombre d'instructions effectuées par cycles. Si, dans les débuts de l'informatique, chaque instruction prenait un cycle, le fonctionnement Out-of-Order permet de décomposer les instructions x86 complexes en micro-opérations élémentaires que le processeur peut réordonner en fonction des ressources disponibles, mais surtout traiter comme bon lui semble, ce qui se traduit par du parallélisme : plusieurs morceaux de plusieurs instructions sont exécutés en même temps. Pour quantifier l'efficacité d'un processeur à cette tâche, une nouvelle métrique a vu le jour : l'IPC, ou Instruction Par Cycle. Il est possible de la calculer - en interne chez Intel, le nombre de cycles de chaque instruction est connu et les capacités du processeur également - mais seulement pour les pires et meilleurs cas : pas terrible !

 

intel computex 2019 sunny cove ipc 650Le slide en question

 

Et puisque la théorie n'est pas toujours au rendez-vous, les programmes ayant des suites d'instructions qui ne sont ni les meilleures ni les pires pour le CPU, il faut mesurer. Mais l'IPC est une donnée architecturale, c'est-à-dire qu'elle n'est pas liée à la fréquence d'horloge. Pour schématiser, un i7 à 2,0 GHz avec un IPC de 2 exécute un programme de 4 milliards d'instructions en une seconde (4 Md d'instructions / (2.0 Md de cycles par s * 2 IPC) = 1 s), et ce même processeur à 4,0 GHz réalisera la même opération en une demi-seconde, car un cycle prendra alors deux fois moins de temps (4 Md d'instructions / (4.0 Md de cycles par s * 2 IPC) = 0,5 s). Tout cela en supposant que les autres composants (disques, RAM, cache L3) qui se sont pas synchronisés sur la fréquence principale, suivent. L'IPC n'a alors pas de raison de changer, puisqu'elle est liée à l'agencement interne de la puce, et que celui-ci n'est pas modifié en changeant la fréquence (il faut pour cela... graver une nouvelle puce !). Pour revenir à notre mesure, le principe consiste à noter le temps et le nombre d'instructions effectuées au total durant un benchmark monocœur, et bloquer la fréquence (si possible à une valeur basse pour éviter tout throttling qui rendrait le résultat faux) pour utiliser la formule IPC = nb_instructions / (fréquence * temps_execution).

 

skl vs sunnycove t [cliquer pour agrandir]

L'agencement interne de Skylake, contre Sunny Cove (réminiscence de l'Intel Architecture Day)

 

C'est bien beau de vous avoir barbé avec tout ça, mais quel est le rapport avec la choucroute ? Si vous ne l'avez pas senti venir, les deux dernières générations d'Intel (Kaby Lake et Coffee Lake) n'ont pas vu de modification de la microarchitecture : celle utilisée est toujours... Skylake. D'où l'appellation "SKL Core" dans la présentation : un "CFL Core" n'existe en fait pas (ou est identique à un SKL Core). Il en résulte que les 18% d'IPC sont par rapport au CPU que vous voulez, tant que c'est une des trois dernières générations !

 

Si la configuration de test est du plus difficile à trouver (le site renvoyé en bas de slide semble présenter un tas de machines qui semble dater du lancement de la 8ème génération), il est possible que les protections contre les dernières failles de sécurités ne soient pas actives. Qu'est-ce que cela change ? Les programmes exécutés seront plus lents, mais parce qu'ils seront constitués de davantage d'instructions (on rajoute celles vidant le cache pour éviter les lectures non autorisées par exemple). Or ces instructions sont très souvent coûteuses en cycles, ce qui fait baisser l'IPC. Puisque Ice Lake intègre des correctifs en hardware, ces instructions ne sont jamais présentes pour son test... Autant dire qu'Intel a tout intérêt à présenter un Skylake corrigé (et donc ralenti au possible) face à son nouveau bébé. Est-ce pour cela que les 18% seront au rendez-vous pour les utilisateurs ? Bien sûr que non, la simple utilisation d'une moyenne géométrique sur les benchmarks, technique retournant une valeur systématiquement supérieure à notre bonne vieille moyenne (arithmétique) en est un bon indicateur.

 

Néanmoins, les modifications instaurées par Sunny Cove (passage à 48 ko de L1D, doublement du L2, élargissement du pipeline et ajout d'unités de calcul) sont autant d'indices pointant vers un IPC particulièrement meilleur sur cette génération. Encore faut-il que les fréquences suivent, car un IPC démentiel n'est rien si votre bouzin tourne à 50 MHz !

Un poil avant ?

En cabine • Comparatif de 23 pâtes thermiques

Un peu plus tard ...

Les spécifications du PCIe 5.0 sont de sortie !

Les 19 ragots
Les ragots sont actuellement
ouverts à tous, c'est open bar !
Message de Un ragoteur qui aime les BX en Auvergne-Rhône-Alpes supprimé par un modérateur : c'est pas la maternelle ici...
par Ideal, le Jeudi 30 Mai 2019 à 22h57  
par Un rat goth à l'heure en Auvergne-Rhône-Alpes le Jeudi 30 Mai 2019 à 21h52
Apparemment pas si obvious pour tout le monde... Ton mépris est sans doute appréciable pour quelqu'un mais probablement paspour celui qui ose douter!
T'es encore entrain de prouver que t'as rien compris. UpsiloNIX a toujours parlé de moyenne d'ailleurs il a employé le négatif devant " jusqu'à "

Après c'est oui, oui hyper obvious que les benchs de genre sont destinés à faire le jeu d'une campagne marketing et que seuls des tests applicatifs vont nous intéresser.. Tellement obvious qu'on se demande pourquoi tu persistes à le faire remarquer comme si tu en étais particulièrement fier, quoi t'étais en sueur après avoir abouti à cette réflexion ?
(Ptet tu te devrais te cantonner à parler sur des forums de boites de petits pois..)
par Ideal le Jeudi 30 Mai 2019 à 21h02
Je crois voir un test entre autre qui donne +40% et un autre donnant un résultat négatif..
par Nicolas D. le Jeudi 30 Mai 2019 à 21h46
Par contre ça n'est carrément pas "jusque 18%" puisque le bench tout à droite fait + 40% .
par Un rat goth à l'heure en Île-de-France, le Jeudi 30 Mai 2019 à 22h52  
Déchiffrage du message :
- Ici Radio Santa Clara.
- Lancement de l'opération LSD sur les infos bleues. Je répète opération LSD sur les info bleues.
- Les rouges ne passeront pas ! Je répète les rouges ne passeront pas !
par Un rat goth à l'heure en Auvergne-Rhône-Alpes, le Jeudi 30 Mai 2019 à 22h03  
 

Software and workloads used in performance tests may have been optimized
for performance only on Intel microprocessors.


A lire en tout petit au bas du slide marketing!
(oui j'aime lire les étiquettes de petits poids)
par Un rat goth à l'heure en Auvergne-Rhône-Alpes, le Jeudi 30 Mai 2019 à 21h52  
par Ideal le Jeudi 30 Mai 2019 à 21h02
Et pour la fin de sa réponse digne d'un captain obvious très limité, il
suffit de regarder "le slide en question" pour comprendre
qu'il y a plusieurs programmes et situations testées avec chacune un
pourcentage précis, le tout donnant une moyenne de +18% ( la ligne jaune )
Apparemment pas si obvious pour tout le monde...

Ton mépris est sans doute appréciable pour quelqu'un mais probablement pas
pour celui qui ose douter!
par UpsiloNIX le Jeudi 30 Mai 2019 à 20h46
Une moyenne spécifique à un processeur, oui, à un programme donné non. On
pourrait avoir une confirmation/infirmation de Nicolas qu'Intel n'a
pas annoncé "jusqu'à 18% d'IPC en plus"?
par Nicolas D., le Jeudi 30 Mai 2019 à 21h46  
par UpsiloNIX le Jeudi 30 Mai 2019 à 20h46
Une moyenne spécifique à un processeur, oui, à un programme donné non. On pourrait avoir une confirmation/infirmation de Nicolas qu'Intel n'a pas annoncé "jusqu'à 18% d'IPC en plus" ?
Malheureusement je ne peux pas tout à fait te donner raison : il s'agit d'une moyenne géométrique des IPC calculés sur SPEC, donc sur une série de programme, et non une amélioration du pire cas :-(. C'est même possible puisque Intel "optimise" SPEC d'aller truquer le bench pour optimiser la nouvelle archi face à l'ancienne (il y avait eu des scandales sur SuperPI à l'époque du Pentium IV pour ça...).

La moyenne géométrique est trompeuse et fait qu'un utilisateurs n'aura probablement pas 18% d'amélioration ; mais sous réserve que SPEC soit représentatif de l'utilisation moyenne, le slide est censé dire tout de même que les utilisateurs aurons en moyenne 18% de gain d'IPC sur leur programme. Si on retirer les petites arnaques à droite et à gauche, c'est peut être plutôt 10 ou 15% . Par contre ça n'est carrément pas "jusque 18%" puisque le bench tout à droite fait + 40% .

Par ailleurs c'est assez drôle, parce que rajouter de l'AVX-512 peut faire diminuer l'IPC (ben oui, au lieu de faire 2 ou 3 instructions AVX-2, on en fait une AVX-512 ), c'est dire l'ambiguïté du truc. A programme compilé constant tu veux à tout prix avoir un IPC max, mais sinon faut vraiment se méfier de ces mesures individuelles (idem, la fréquence ne dit rien, prenez le bulldozer de 5 GHz pour vous en convaincre ).
par Un rat goth à l'heure en Auvergne-Rhône-Alpes, le Jeudi 30 Mai 2019 à 21h39  
par UpsiloNIX le Jeudi 30 Mai 2019 à 20h46
Déjà le set d'instruction x86_64 est loin d'être infini, ensuite tu n'as pas
besoin de tout tester pour faire des statistiques.
Oui on appelle cela des statistiques pipées!
(e.g. sondages Ipsos, OpinonWay, etc)

 

Avant de crier faux, lis ce que j'ai écrit. "AVEC SON PROPRE CODE", donc tu
n'as pas à changer le programme, tu peux même garder le même binaire (bien
que dans ce cas tu ne profitera pas forcément de toutes les améliorations).


Sauf que AMD ou Intel n'évaluent pas l'IPC avec ton code mais celui qu'ils
ont choisi favorable à leur architecture, code pouvant évoluer d'un slide
marketing à un autre pour promouvoir un prétendu "gain".

 

Une moyenne spécifique à un processeur, oui, à un programme donné non. On
pourrait avoir une confirmation/infirmation de Nicolas qu'Intel n'a
pas annoncé "jusqu'à 18% d'IPC en plus"?


Clairement je ne partage pas ton avis car il y a peu de chance que les
fabricants de processeur publient leur code de référence donc l'intérêt
est limité car cela représente une séquence d'instructions non
représentative des programmes exécutés par les utilisateurs.

Ansi un test applicatif vaut bien plus qu'un débit moyen d'instruction
évalué sur un code spécifique qui n'a rien d'universel.
par Ideal, le Jeudi 30 Mai 2019 à 21h02  
Pourquoi tu parles avec lui, de toutes évidences soit il troll (ce qui a l'air de moins en moins probable)
soit il est un peu trop orgueilleux pour comprendre qu'on test le même programme sur deux processeurs différents pour trouver le +18% et non pas un programme différent sur chacun des deux processeurs différents et admettre qu'il avait tort.

Et pour la fin de sa réponse digne d'un captain obvious très limité, il suffit de regarder "le slide en question" pour comprendre qu'il y a plusieurs programmes et situations testées avec chacune un pourcentage précis, le tout donnant une moyenne de +18% ( la ligne jaune )

Je crois voir un test entre autre qui donne +40% et un autre donnant un résultat négatif..
par UpsiloNIX le Jeudi 30 Mai 2019 à 20h46
Avant de crier faux, lis ce que j'ai écrit. "AVEC SON PROPRE CODE", donc tu n'as pas à changer le programme, tu peux même garder le même binaire (bien que dans ce cas tu ne profitera pas forcément de toutes les améliorations).
par UpsiloNIX, le Jeudi 30 Mai 2019 à 20h46  
par Un ragoteur qui aime les BX en Auvergne-Rhône-Alpes le Jeudi 30 Mai 2019 à 19h33
La moyenne d'une infinité de combinaisons d'instruction pouvant constituer
un programme?
Déjà le set d'instruction x86_64 est loin d'être infini, ensuite tu n'as pas besoin de tout tester pour faire des statistiques.

 

Faux!

Si tu changes le programme, la séquence d'instructions n'est plus la même et
certaines instructions sont plus coûteuses en nombre de cycle que d'autres
sans parler de l'occupation du pipeline.


Avant de crier faux, lis ce que j'ai écrit. "AVEC SON PROPRE CODE", donc tu n'as pas à changer le programme, tu peux même garder le même binaire (bien que dans ce cas tu ne profitera pas forcément de toutes les améliorations).

 

Une moyenne spécifique à un processeur et programme donné.


Une moyenne spécifique à un processeur, oui, à un programme donné non. On pourrait avoir une confirmation/infirmation de Nicolas qu'Intel n'a pas annoncé "jusqu'à 18% d'IPC en plus" ?
par Un ragoteur qui aime les BX en Auvergne-Rhône-Alpes, le Jeudi 30 Mai 2019 à 19h33  
par UpsiloNIX le Jeudi 30 Mai 2019 à 17h36
Tu as clairement un soucis de compréhension ou tu es borné... Quand ils
donnent cette valeur c'est une moyenne sur un ensemble de programme qui
utilisent des instructions différentes.
La moyenne d'une infinité de combinaisons d'instruction pouvant constituer
un programme?

 

N'importe qui derrière peut refaire le test chez lui avec son propre code
et devrait obtenir en moyenne +18%


Faux!

Si tu changes le programme, la séquence d'instructions n'est plus la même et
certaines instructions sont plus coûteuses en nombre de cycle que d'autres
sans parler de l'occupation du pipeline.

 

Traduction : A l'utilisation à une fréquence donnée, en moyenne le CPU sera
18% plus performant.


Une moyenne spécifique à un processeur et programme donné.
par chambolle, le Jeudi 30 Mai 2019 à 18h56  
par UpsiloNIX le Jeudi 30 Mai 2019 à 17h36
N'importe qui derrière peut refaire le test chez lui avec son propre code et devrait obtenir en moyenne +18%
Traduction : A l'utilisation à une fréquence donnée, en moyenne le CPU sera 18% plus performant.
Ben non. Sinon Intel aurait clairement présenté les choses comme cela. Intel se garde biend e faire TA generalisation.
par UpsiloNIX, le Jeudi 30 Mai 2019 à 17h36  
par Un ragoteur RGB en Auvergne-Rhône-Alpes le Jeudi 30 Mai 2019 à 17h02
source:
https://en.wikipedia.org/wiki/Instructions_per_cycle

Merci pour ta participation!
Tu as clairement un soucis de compréhension ou tu es borné... Quand ils donnent cette valeur c'est une moyenne sur un ensemble de programme qui utilisent des instructions différentes.
N'importe qui derrière peut refaire le test chez lui avec son propre code et devrait obtenir en moyenne +18%

Traduction : A l'utilisation à une fréquence donnée, en moyenne le CPU sera 18% plus performant.