1 / 79

Thread Level Parallelism

Thread Level Parallelism. OoO & Cie ne peuvent rien contre les défauts de cache Prefetching Multithreading au niveau du pipeline. Multithreading. Multithreading Coarse Grained MT. Masquer la latence mémoire et le swap entre deux threads. IBM STAR RS64-IV (POWER4 - 2000).

york
Télécharger la présentation

Thread Level Parallelism

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Thread LevelParallelism • OoO & Cie ne peuvent rien contre les défauts de cache • Prefetching • Multithreading au niveau du pipeline

  2. Multithreading

  3. MultithreadingCoarseGrained MT Masquer la latence mémoire et le swap entre deux threads IBM STAR RS64-IV (POWER4 - 2000)

  4. MultithreadingFine Grained MT Masquer la latence des caches, combler les bulles HEP (1983) Tera Sun niagara

  5. MultithreadingSimultaneousMT Combler les bulles, maximiser l’utilisation des unités superscalaires Pentium 4, Nehalem, Power5, Power6

  6. MultithreadingCMT – FMT - SMP • Avantages • Meilleure utilisation du pipeline • Réactivité (lock) • Partage de données entre 2 threads • Régulation de charge • Inconvénients • Partage de cache  perte de performance • Gestion des priorités • Difficultés de mise en œuvre des techniques de scrutation • Solution • Désactivation • Appariement de threads compatibles

  7. Machines multiprocesseurs à mémoire partagée • SMP • Mémoire centralisée

  8. Machines multiprocesseurs à mémoire partagée • SMP • Mémoire centralisée • NUMA • Mémoire répartie

  9. SMP • Organisation classique: • Mémoire • Bus • Cache • Cœur • Le bus synchronise les différents cœurs. • Bus unique pas plus d’une dizaine de cœurs • Bus en étoile (avec des filtres)

  10. SMP • Graup : le cache L2 est devant la mémoire

  11. SMPsynchronisation de la mémoire • Une même donnée peut être à la fois : • En mémoire, • Dans un cache, dans des caches, • Dans un registre, dans des registres, • Quelle est la bonne version ? • Faire en sorte qu’il n’y ait qu’une version • Seulement aux yeux du programmeur • Donner au programmeur la même vision de la mémoire que sur une machine monoprocesseur programmée à l’aide de threads (exécutés en séquence).

  12. SMPsynchronisation de la mémoire • Consistance séquentielle (Lamport 1979), Sémantique de l'entrelacement : «Un multiprocesseur est séquentiellement consistant si toute exécution résulte d'un entrelacement des séquences d'instructions exécutées par les processeurs et qui préserve chacune des séquences. En particulier tous les processeurs voient les écritures dans le même ordre. » • Exemple : au départ { x = 0, y = 0} on lance 2 threads : T1 { x = 1 ;print y } T2 { y = 1; print x } On ne devrait pas voir 0 0.

  13. SMPsynchronisation de la mémoire • Consistance séquentielle (Lamport 1979), Sémantique de l'entrelacement : «Un multiprocesseur est séquentiellement consistant si toute exécution résulte d'un entrelacement des séquences d'instructions exécutées par les processeurs et qui préserve chacune des séquences. En particulier tous les processeurs voient les écritures dans le même ordre. » • Exemple : au départ { x = 0, y = 0} on lance 2 threads : T1 { x = 1 ;print y } T2 { y = 1; print x } On ne devrait pas voir 0 0. Compilateur + OoO

  14. SMPsynchronisation de la mémoire • Consistance séquentielle (Lamport 1979), Sémantique de l'entrelacement : «Un multiprocesseur est séquentiellement consistant si toute exécution résulte d'un entrelacement des séquences d'instructions exécutées par les processeurs et qui préserve chacune des séquences. En particulier tous les processeurs voient les écritures dans le même ordre. » • Exemple : au départ { x = 0, y = 0} on lance 2 threads : T1 { x = 1 ;print y } T2 { y = 1; print x } On ne devrait pas voir 0 0. Barrières Mémoires

  15. Implémentation de la cohérence séquentielle Mémoire cache à 1 octet A=0 B=0 C=0

  16. Implémentation de la cohérence séquentielle A ? A=0 B=0 C=0

  17. Implémentation de la cohérence séquentielle A ? A ? A=0 B=0 C=0

  18. Implémentation de la cohérence séquentielle A ? A=0 A=0 B=0 C=0

  19. Implémentation de la cohérence séquentielle A=0 A=0 A=0 B=0 C=0

  20. Implémentation de la cohérence séquentielle A=1 A=1 A=0 B=0 C=0

  21. Implémentation de la cohérence séquentielle A=2 A=2 A=0 B=0 C=0

  22. Implémentation de la cohérence séquentielle A? A=2 A=2 A=0 B=0 C=0

  23. Implémentation de la cohérence séquentielle A? A=2 A? A=0 B=0 C=0

  24. Implémentation de la cohérence séquentielle A? A=2 A=2 A=0 B=0 C=0

  25. Implémentation de la cohérence séquentielle A=2 A=2 A=2 A=2 A=2 A=2 B=0 C=0

  26. Implémentation de la cohérence séquentielle A=3 A=3 A=2 A invalide A=2 B=0 C=0

  27. Implémentation de la cohérence séquentielle A=3 A=3 A invalide A=2 B=0 C=0

  28. Implémentation de la cohérence séquentielle B? A=3 A=2 B=0 C=0

  29. Implémentation de la cohérence séquentielle B? A=3, B? A=2 B=0 C=0

  30. Implémentation de la cohérence séquentielle B? B=0 A=3 B=0 C=0

  31. Implémentation de la cohérence séquentielle B=0 B=0 B=0 A=3 B=0 C=0

  32. Protocole ModifiedSharedInvalid(MSI) Pr Wr M Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX Bus ReadX / Flush Pr Rd / Bus Read I

  33. Implémentation de la cohérence séquentielle Pr Wr M PrRD A Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX Bus ReadX / Flush Pr Rd / Bus Read A=0 B=0 C=0 I

  34. Implémentation de la cohérence séquentielle Pr Wr M PrRD A Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX BusRD A Bus ReadX / Flush Pr Rd / Bus Read A=0 B=0 C=0 I

  35. Implémentation de la cohérence séquentielle Pr Wr M PrRD A Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX A=0 Bus ReadX / Flush Pr Rd / Bus Read A=0 B=0 C=0 I

  36. Implémentation de la cohérence séquentielle Pr Wr M A=0 A=0 Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX Bus ReadX / Flush Pr Rd / Bus Read A=0 B=0 C=0 I

  37. Implémentation de la cohérence séquentielle Pr Wr M A=1, PrWr A A=0 Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX Bus ReadX / Flush INVALID A Pr Rd / Bus Read A=0 B=0 C=0 I

  38. Implémentation de la cohérence séquentielle Pr Wr M A=1, PrWr A=1 Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX Bus ReadX / Flush Pr Rd / Bus Read A=0 B=0 C=0 I

  39. Implémentation de la cohérence séquentielle Pr Wr M A=2 A=2 Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX Bus ReadX / Flush Pr Rd / Bus Read A=0 B=0 C=0 I

  40. Implémentation de la cohérence séquentielle Pr Wr M PrRd A A=2 A=2 Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX Bus ReadX / Flush Pr Rd / Bus Read A=0 B=0 C=0 I

  41. Implémentation de la cohérence séquentielle Pr Wr M PrRd A A=2 Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX BusRd A Bus ReadX / Flush Pr Rd / Bus Read A=0 B=0 C=0 I

  42. Implémentation de la cohérence séquentielle Pr Wr M A? A=2 Pr Wr / Invalid Bus Read / Flush Flush Bus ReadX / Flush S Pr Wr / Bus ReadX A=2 Bus ReadX / Flush Pr Rd / Bus Read A=0 B=0 C=0 I

  43. Implémentation de la cohérence séquentielle Pr Wr M A=2 A=2 A=2 Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX A=2 Bus ReadX / Flush A=2 Pr Rd / Bus Read A=2 B=0 C=0 I

  44. Implémentation de la cohérence séquentielle Pr Wr M A=3, PrWr A=2 A=2 Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX INVALID A Bus ReadX / Flush Pr Rd / Bus Read A=2 B=0 C=0 I

  45. Implémentation de la cohérence séquentielle Pr Wr M A=3 A=3 A=2 Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX Bus ReadX / Flush Pr Rd / Bus Read A=2 B=0 C=0 I

  46. Implémentation de la cohérence séquentielle Pr Wr M PrRd B A=3 A=2 Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX Bus ReadX / Flush Pr Rd / Bus Read A=2 B=0 C=0 I

  47. Implémentation de la cohérence séquentielle Pr Wr M PrRd B A=3 Pr Wr / Invalid Flush A Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX A=3, BusRd B Bus ReadX / Flush Pr Rd / Bus Read A=2 B=0 C=0 I

  48. Implémentation de la cohérence séquentielle Pr Wr M PrRd B Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX B=0 Bus ReadX / Flush Pr Rd / Bus Read A=3 B=0 C=0 I

  49. Implémentation de la cohérence séquentielle Pr Wr M B=0 B=0 Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX Bus ReadX / Flush Pr Rd / Bus Read A=3 B=0 C=0 I

  50. Optimisation MSI Pr Wr M A=1, PrWr A A=0 Pr Wr / Invalid Bus Read / Flush Bus ReadX / Flush S Pr Wr / Bus ReadX Bus ReadX / Flush INVALID A Pr Rd / Bus Read A=0 B=0 C=0 I

More Related