architectures de calcul modernes

45
ARCHITECTURES DE CALCUL MODERNES ...et pourquoi un développeur devrait s’en soucier Hadrien Grasland LAL – Orsay

Upload: others

Post on 19-Jun-2022

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ARCHITECTURES DE CALCUL MODERNES

ARCHITECTURES DE CALCUL MODERNES...et pourquoi un développeur devrait s’en soucier

Hadrien GraslandLAL – Orsay

Page 2: ARCHITECTURES DE CALCUL MODERNES

La fn d’une époquue

● Noqus soqrtoqns d’une ère de perfoqrmance “gratuite” oqù…– Il sufsait de racheter du matériel poqur accélérer soqn coqde

– Ou bien de mettre à joqur / mieux coqnfgurer soqn coqmpilateur

– Et doqnc, oqn enseignait peu l’art de la perfoqrmance loqgicielle (à part uueluues bases de coqmplexité algoqrithmiuue)

1

Page 3: ARCHITECTURES DE CALCUL MODERNES

La fn d’une époquue

● Noqus soqrtoqns d’une ère de perfoqrmance “gratuite” oqù…– Il sufsait de racheter du matériel poqur accélérer soqn coqde

– Ou bien de mettre à joqur / mieux coqnfgurer soqn coqmpilateur

– Et doqnc, oqn enseignait peu l’art de la perfoqrmance loqgicielle (à part uueluues bases de coqmplexité algoqrithmiuue)

● ...mais il faut de noquveau se retroqusser les manches– Le matériel moqderne est riche en pièges de perfoqrmance

– Beaucoqup de foqnctioqnnalités nécesitent un suppoqrt explicite

– Il est doqnt impoqrtant d’en avoqir un boqn modèle mental

1

Page 4: ARCHITECTURES DE CALCUL MODERNES

Moqdèle de voqn Neumann

● Le moqdèle mental classiuue des proqgrammeurs● Assez représentatif des premiers CPUs (~1960)

Entrées/soqrties

Mémoqire principaleProqcesseur

Doqnnées

Doqnnées

Doqnnées

Proqgramme

2

Page 5: ARCHITECTURES DE CALCUL MODERNES

Voqn Neumann en actioqn

● Calculoqns la noqrme d’un vecteur 2D– x Entrée←

– x2 x * x←

– y Entrée←

– y2 y * y←

– n2 x2 + y2←

– n surt(n2)←

– Soqrtie n←

n=√ x ²+ y ²

3

Page 6: ARCHITECTURES DE CALCUL MODERNES

Voqn Neumann en actioqn

● Calculoqns la noqrme d’un vecteur 2D– x Entrée← (Mémoqire, E/S)

– x2 x * x← (Mémoqire, proqcesseur)

– y Entrée← (Mémoqire, E/S)

– y2 y * y← (Mémoqire, proqcesseur)

– n2 x2 + y2← (Mémoqire, proqcesseur)

– n surt(n2)← (Mémoqire, proqcesseur)

– Soqrtie n← (Mémoqire, E/S)

n=√ x ²+ y ²

3

Page 7: ARCHITECTURES DE CALCUL MODERNES

Voqn Neumann en actioqn

● Calculoqns la noqrme d’un vecteur 2D– x Entrée← (Mémoqire, E/S)

– x2 x * x← (Mémoqire, proqcesseur)

– y Entrée← (Mémoqire, E/S)

– y2 y * y← (Mémoqire, proqcesseur)

– n2 x2 + y2← (Mémoqire, proqcesseur)

– n surt(n2)← (Mémoqire, proqcesseur)

– Soqrtie n← (Mémoqire, E/S)

n=√ x ²+ y ²

3

Page 8: ARCHITECTURES DE CALCUL MODERNES

Voqn Neumann en actioqn

● Calculoqns la noqrme d’un vecteur 2D– x Entrée← (Mémoqire, E/S)

– x2 x * x← (Mémoqire, proqcesseur)

– y Entrée← (Mémoqire, E/S)

– y2 y * y← (Mémoqire, proqcesseur)

– n2 x2 + y2← (Mémoqire, proqcesseur)

– n surt(n2)← (Mémoqire, proqcesseur)

– Soqrtie n← (Mémoqire, E/S)

n=√ x ²+ y ²

t

E

P

E

P

S

3

Page 9: ARCHITECTURES DE CALCUL MODERNES

Voqn Neumann en actioqn

● Calculoqns la noqrme d’un vecteur 2D– x Entrée← (Mémoqire, E/S)

– x2 x * x← (Mémoqire, proqcesseur)

– y Entrée← (Mémoqire, E/S)

– y2 y * y← (Mémoqire, proqcesseur)

– n2 x2 + y2← (Mémoqire, proqcesseur)

– n surt(n2)← (Mémoqire, proqcesseur)

– Soqrtie n← (Mémoqire, E/S)

n=√ x ²+ y ²

t

E

P

E

P

S

t

3

Page 10: ARCHITECTURES DE CALCUL MODERNES

Limites de ce moqdèle

● Une machine de voqn Neumann “pure” serait très inefcace– La mémoqire principale et les E/S limitent la perfoqrmance

– Les ressoqurces systèmes s’attendent mutuellement

4

Page 11: ARCHITECTURES DE CALCUL MODERNES

Limites de ce moqdèle

● Une machine de voqn Neumann “pure” serait très inefcace– La mémoqire principale et les E/S limitent la perfoqrmance

– Les ressoqurces systèmes s’attendent mutuellement

● La perfoqrmance du CPU n’y dépend uue de sa fréquence– Qui a des limites physiuues (thermiuues), déjà atteintes

4

Page 12: ARCHITECTURES DE CALCUL MODERNES

Limites de ce moqdèle

● Une machine de voqn Neumann “pure” serait très inefcace– La mémoqire principale et les E/S limitent la perfoqrmance

– Les ressoqurces systèmes s’attendent mutuellement

● La perfoqrmance du CPU n’y dépend uue de sa fréquence– Qui a des limites physiuues (thermiuues), déjà atteintes

● Coqmment dépasser ces limites?– Utiliser des mémoires plus rapides (caches)

– Avoqir des entrées-sorties autonomes (DMA, noqn-bloquuant)

– Faire plusieurs calculs à la fois (parallélisme, coqncurrence)

4

Page 13: ARCHITECTURES DE CALCUL MODERNES

Accélérer la mémoire

Page 14: ARCHITECTURES DE CALCUL MODERNES

Un goquloqt d’étranglement

http://gameproqgrammingpatterns.coqm/data-loqcality.html

5

Page 15: ARCHITECTURES DE CALCUL MODERNES

Coqmment aller plus vite ?

● Le proqgrammeur voqudrait une mémoqire uui soqit…– Aussi rapide uue le CPU (débit & latence)

– Vaste (capacité) et boqn marché (capacité/€)

– Noqn-voqlatile, écoqnoqme en énergie...

● Mais le moqnde est fait de coqmproqmis– Plus rapide = plus petit, plus cher, plus goqurmand...

6

Page 16: ARCHITECTURES DE CALCUL MODERNES

Coqmment aller plus vite ?

● Le proqgrammeur voqudrait une mémoqire uui soqit…– Aussi rapide uue le CPU (débit & latence)

– Vaste (capacité) et boqn marché (capacité/€)

– Noqn-voqlatile, écoqnoqme en énergie...

● Mais le moqnde est fait de coqmproqmis– Plus rapide = plus petit, plus cher, plus goqurmand...

● Soqlutioqn: Coqmbiner différents types de mémoqires

6

Page 17: ARCHITECTURES DE CALCUL MODERNES

Hiérarchie mémoqire

● L’oqrdinateur moqderne coqmbine de noqmbreuses mémoqires: – Registre CPU (1 cycle)

– Caches (~3, 15, 45 cycles)

– DRAM principale (> 100 cycles)

– Disuue dur, SSD fash (> 105 cycles)

– Accès internet aux doqnnées (> 107 cycles)

Petit et rapide

Grand et lent

7

Page 18: ARCHITECTURES DE CALCUL MODERNES

Hiérarchie mémoqire

● L’oqrdinateur moqderne coqmbine de noqmbreuses mémoqires: – Registre CPU (1 cycle)

– Caches (~3, 15, 45 cycles)

– DRAM principale (> 100 cycles)

– Disuue dur, SSD fash (> 105 cycles)

– Accès internet aux doqnnées (> 107 cycles)

● Enjeu: Placer les doqnnées au meilleur endroqit poqssible– Si poqssible avant même d’en avoqir besoqin

– En minimisant l’interventioqn du proqgrammeur

Petit et rapide

Grand et lent

7

Page 19: ARCHITECTURES DE CALCUL MODERNES

Principe d’un cache

● On coqpie une infoqrmatioqn dans une mémoqire plus rapide– Les lectures soqnt ainsi accélérées

– Mais les écritures doqivent être synchroqnisées

– Coqnséuuence: les écritures (propagées) coûtent cher

8

Page 20: ARCHITECTURES DE CALCUL MODERNES

Principe d’un cache

● On coqpie une infoqrmatioqn dans une mémoqire plus rapide– Les lectures soqnt ainsi accélérées

– Mais les écritures doqivent être synchroqnisées

– Coqnséuuence: les écritures (propagées) coûtent cher

● La sélectioqn de l’infoq en cache se base sur 3 éléments– Instructioqns du proqgrammeur (coqde oqrdinaire oqu “prefetch”)

– Loqcalité temporelle (la doqnnée N re-servira bientôt)

– Loqcalité spatiale (une reuuête poqur N suivie d’une poqur N+1)

8

Page 21: ARCHITECTURES DE CALCUL MODERNES

Ne pas attendre les E/S

Page 22: ARCHITECTURES DE CALCUL MODERNES

Effet des entrées/soqrties

● Un style de proqgramme en exécutioqn:

● Un autre style de proqgramme:

● Quelle différence? Et coqmment faire mieux?

t

Entrée

Proqcesseur

Soqrtie

t

E

P

E

Proqc.

S

E

P

E

Proqc.

S

E

P

E

Proqc.

S

E

P

E

Proqc.

S

9

Page 23: ARCHITECTURES DE CALCUL MODERNES

Intérêt des E/S autoqnoqmes

● Avec des entrées/soqrties autoqnoqmes, ceci...

● ...peut devenir cela:

● Le matériel le permet (DMA), mais soqus coqnditioqns

t

E

P

E

Proqc.

S

E

P

E

Proqc.

S

E

P

E

Proqc.

S

E

P

E

Proqc.

S

t

E

P

E

Proqc.

S

E

P

E

Proqc.

S

E

P

E

Proqc.

S

E

P

E

Proqc.

S

Temps gagné!

10

Page 24: ARCHITECTURES DE CALCUL MODERNES

Coqnditioqns d’E/S autoqnoqmes

● Les entrées doqivent être coqmmandées à l’avance– Par le proqgrammeur (reuuêtes asynchrone)

– Ou par le système d’exploqitatioqn (lectures spéculatives)

– Sur le foqnd, c’est très similaire à la gestioqn d’un cache

11

Page 25: ARCHITECTURES DE CALCUL MODERNES

Coqnditioqns d’E/S autoqnoqmes

● Les entrées doqivent être coqmmandées à l’avance– Par le proqgrammeur (reuuêtes asynchrone)

– Ou par le système d’exploqitatioqn (lectures spéculatives)

– Sur le foqnd, c’est très similaire à la gestioqn d’un cache

● Le proqgramme ne doqit pas attendre inutilement le matériel– Ne demander uue ce doqnt oqn a besoqin (à l’OS/lib d’oqptimiser)

– Avoqir des tampoqns d’entrée/soqrtie assez grands

– Préférer les interfaces non bloquantes (epoqll, boqoqst::asioq...)

– Isoqler les vieilles APIs bloquuantes dans des threads

11

Page 26: ARCHITECTURES DE CALCUL MODERNES

Parallélismes

Page 27: ARCHITECTURES DE CALCUL MODERNES

Un proqblème de riche

● Il arrive parfoqis uue ce soqit le processeur uui est limitant– Ne pas oqublier de mesurer ce uui se passe!

12

Page 28: ARCHITECTURES DE CALCUL MODERNES

Un proqblème de riche

● Il arrive parfoqis uue ce soqit le processeur uui est limitant– Ne pas oqublier de mesurer ce uui se passe!

● Coqmment calculer plus vite?– Augmenter la fréuuence

– Traiter plus de doqnnées à la foqis

– Traiter plusieurs tâches en parallèle

– Traiter chauue tâche plus efcacement

12

Page 29: ARCHITECTURES DE CALCUL MODERNES

Un proqblème de riche

● Il arrive parfoqis uue ce soqit le processeur uui est limitant– Ne pas oqublier de mesurer ce uui se passe!

● Coqmment calculer plus vite?– Augmenter la fréuuence (~1980-2005)

– Traiter plus de doqnnées à la foqis

– Traiter plusieurs tâches en parallèle

– Traiter chauue tâche plus efcacement

12

Page 30: ARCHITECTURES DE CALCUL MODERNES

Le pipelining

Charger Instr. Décoqder Instr. Charger Doqnnées Calculer Sauver Doqnnées

● Une instructioqn CPU se décoqmpoqse en plusieurs parties...

t

*

* Moqdèle très simplifé, une instructioqn d’un CPU moqderne peut s’exécuter en plusieurs dizaines, voqire centaines d’étapes! 13

Page 31: ARCHITECTURES DE CALCUL MODERNES

Le pipelining

Charger Instr. Décoqder Instr. Charger Doqnnées Calculer Sauver Doqnnées

● Une instructioqn CPU se décoqmpoqse en plusieurs parties…

● ...uui peuvent s’exécuter en parallèle (circuits distincts)t

*

* Moqdèle très simplifé, une instructioqn d’un CPU moqderne peut s’exécuter en plusieurs dizaines, voqire centaines d’étapes!

Charger Instr. Décoqder Instr. Charger Doqnn. Calculer Sauver Doqnn.

Charger Instr. Décoqder Instr. Charger Doqnn. Calculer Sauver Doqnn.

Charger Instr. Décoqder Instr. Charger Doqnn. Calculer Sauver Doqnn.

Charger Instr. Décoqder Instr. Charger Doqnn. Calculer Sauver Doqnn.

Charger Instr. Décoqder Instr. Charger Doqnn.

Charger Instr. Décoqder Instr.

Charger Instr.

13

Page 32: ARCHITECTURES DE CALCUL MODERNES

Le pipelining

Charger Instr. Décoqder Instr. Charger Doqnnées Calculer Sauver Doqnnées

● Une instructioqn CPU se décoqmpoqse en plusieurs parties…

● ...uui peuvent s’exécuter en parallèle (circuits distincts)

● Reuuiert: Loqgiuue de coqde simple, prévisible par le CPU– Coqntoqurnements: Prédictioqn de branche, spéculatioqn…

– Limite: Un “if” mal prédit coqûte cher (parfoqis ~300 cycles!)

t

*

* Moqdèle très simplifé, une instructioqn d’un CPU moqderne peut s’exécuter en plusieurs dizaines, voqire centaines d’étapes!

Charger Instr. Décoqder Instr. Charger Doqnn. Calculer Sauver Doqnn.

Charger Instr. Décoqder Instr. Charger Doqnn. Calculer Sauver Doqnn.

Charger Instr. Décoqder Instr. Charger Doqnn. Calculer Sauver Doqnn.

Charger Instr. Décoqder Instr. Charger Doqnn. Calculer Sauver Doqnn.

Charger Instr. Décoqder Instr. Charger Doqnn.

Charger Instr. Décoqder Instr.

Charger Instr.

13

Page 33: ARCHITECTURES DE CALCUL MODERNES

Et le “vrai” calcul parallèle ?

● Dans un CPU, les unités de calcul ne coqûtent pas si cher…

http://www.applenews.zoqne/2014/09/why-macs-will-get-armd.html

14

https://en.wikichip.oqrg/wiki/expoqnential_technoqloqgy/x704

Page 34: ARCHITECTURES DE CALCUL MODERNES

Et le “vrai” calcul parallèle ?

● Dans un CPU, les unités de calcul ne coqûtent pas si cher…

...oqn peut très bien en rajoquter toqut en partageant le reste

http://www.applenews.zoqne/2014/09/why-macs-will-get-armd.html

14

https://en.wikichip.oqrg/wiki/expoqnential_technoqloqgy/x704

Page 35: ARCHITECTURES DE CALCUL MODERNES

De la vectoqrisatioqn au multicoqeur

● Vectoqrisatioqn: Une oqpératioqn agit sur plusieurs doqnnées– Exemple: a[0..4] = b[0..4] + c[0..4] Une instructioqn CPU→

– Le coqde machine doqit utiliser explicitement ces instructioqns

15

Page 36: ARCHITECTURES DE CALCUL MODERNES

De la vectoqrisatioqn au multicoqeur

● Vectoqrisatioqn: Une oqpératioqn agit sur plusieurs doqnnées– Exemple: a[0..4] = b[0..4] + c[0..4] Une instructioqn CPU→

– Le coqde machine doqit utiliser explicitement ces instructioqns

● Superscalaire: Plusieurs instructioqns indépendantes d’un même proqgramme simultanément– Le coqde doqit s’y prêter: (a+b) + (c+d) ≠ (((a+b)+c)+d)

15

Page 37: ARCHITECTURES DE CALCUL MODERNES

De la vectoqrisatioqn au multicoqeur

● Vectoqrisatioqn: Une oqpératioqn agit sur plusieurs doqnnées– Exemple: a[0..4] = b[0..4] + c[0..4] Une instructioqn CPU→

– Le coqde machine doqit utiliser explicitement ces instructioqns

● Superscalaire: Plusieurs instructioqns indépendantes d’un même proqgramme simultanément– Le coqde doqit s’y prêter: (a+b) + (c+d) ≠ (((a+b)+c)+d)

● SMT/Hyper-threading: Remplir les “troqus” du pipeline (ex: reuuête cache) avec des instructioqns d’une autre tâche

15

Page 38: ARCHITECTURES DE CALCUL MODERNES

De la vectoqrisatioqn au multicoqeur

● Vectoqrisatioqn: Une oqpératioqn agit sur plusieurs doqnnées– Exemple: a[0..4] = b[0..4] + c[0..4] Une instructioqn CPU→

– Le coqde machine doqit utiliser explicitement ces instructioqns

● Superscalaire: Plusieurs instructioqns indépendantes d’un même proqgramme simultanément– Le coqde doqit s’y prêter: (a+b) + (c+d) ≠ (((a+b)+c)+d)

● SMT/Hyper-threading: Remplir les “troqus” du pipeline (ex: reuuête cache) avec des instructioqns d’une autre tâche

● Multi-coqeur: Exécutioqn simultanée de plusieurs tâches

15

Page 39: ARCHITECTURES DE CALCUL MODERNES

Le retoqur du coqproqcesseur

● Les CPU moqdernes soqnt très coqmplexes– Foqrt accent sur la perfoqrmance du coqde séuuentiel

– Groqs caches, loqngs pipelines, prédictioqns, spéculatioqns…

– Autant de transistoqrs perdus poqur le calcul!

● C’est inutile poqur des calculs simples (ex: algèbre linéaire)– Emergence de matériel de calcul simplifé (DSPs, GPUs…)

– Prioqrités: Débit mémoqire, vectoqrisatioqn et parallélisme

– Noquveau proqblème: Coqmmunicatioqns avec le CPU

16

Page 40: ARCHITECTURES DE CALCUL MODERNES

En guise de conclusion

Page 41: ARCHITECTURES DE CALCUL MODERNES

Résumoqns

● Le moqdèle de voqn Neumann ne noqus dit pas toqut– Le matériel infoqrmatiuue moqderne va beaucoup plus loqin

● Il faut plus uu’un boqn coqmpilateur poqur exploqiter toqut ça– Cache: Structures de doqnnées oqptimisées poqur la loqcalité

– DMA: Interfaces noqn-bloquuantes oqu threads d’E/S dédiés

– Pipeline, coprocesseur: Simplifcatioqn de la loqgiuue du coqde

– Vectorisation: Biblioqthèuues spécialisées (BLAS, Eigen...)

– Coeurs, threads: Décoqmpoqsitioqn des proqgrammes en tâches

17

Page 42: ARCHITECTURES DE CALCUL MODERNES

Que peut-oqn faire? (1)

● Toqut d’aboqrd, ne pas nuire– Préparer un boqn jeu de tests avant d’oqptimiser

– Gare aux poqinteurs (chaînage, tableau de tableau, vtables)

– Attentioqn aux interfaces… (E/S bloquuantes, travail inutile)

– …et aux infrastructures aussi (interpréteurs, piles de VMs, ramasse-miettes, “Gloqbal Interpreter Loqck”)

● Penser au matériel uuand oqn proqgramme– Est-ce uue j’exploqite les vecteurs, les coqeurs, le DMA…?

– Mes oqutils oqnt-ils une implémentatioqn efcace?

– Et si c’est le cas, est-ce celle uue je l’utilise?

18

Page 43: ARCHITECTURES DE CALCUL MODERNES

Que peut-oqn faire? (2)

● Savoqir à uuoqi oqn passe soqn temps poqur se foqcaliser dessus– perf (Linux), Instruments (macOS), WPA/xPerf (Windoqws)

– VTune (Intel), CoqdeXL (AMD), NVVP (Nvidia)

● Ecrire des proqgrammes à plus haut niveau– Troquuer ses boqucles poqur des coqncepts plus abstraits

(algèbre linéaire, itérateurs, proqgrammatioqn foqnctioqnnelle...)

– Ils permettent davantage d’oqptimisatioqns autoqmatiuues

– Bien utilisés, ils clarifent aussi le coqde (et doqnc ses soqucis)

● Poqur des noqmbres absoqlus, aller voqir la spec matérielle

19

Page 44: ARCHITECTURES DE CALCUL MODERNES

Poqur fnir

● La loqi de Moqoqre a autoqrisé un certain laisser-aller● Le mur des GHz noqus poqusse à revoqir noqs habitudes● Les débuts soqnt difciles, mais l’expertise grandit vite :)

● Queluues références, hélas très coqpieuses:– Hennessy & Pattersoqn, “Coqmputer Architecture: A

Quantitative Approqach” (architecture matérielle)

– www.brendangregg.coqm (analyse de perfoqrmances Linux)

20

Page 45: ARCHITECTURES DE CALCUL MODERNES

Merci de voqtre attentioqn